我要对一组数据运行一堆计算。
我有一个包含许多坐标的表,例如:
template_id = S.02.01.02.01,
row_id : R1010,
column_id : C1030
这些坐标中的每一个将具有1569834.00的值示例。有许多这样的模板,行,列组合,每个组合都代表一个关键指标示例: assets_holdings 之类的东西。
现在,有些关键指标可能需要进行复杂的计算,例如:
assets_loans_on_policies = (S.02.01.02.01,R0010,C1030) + (S.02.01.02.01,R0020,C1040) + (S.02.01.02.01, R0030,C1040) - (S.02.01.02.01,R0040,C1050) / (S.02.01.02.01,R0050,C1060)
在各种template:row:col组合上有很多这样的计算。
这些模板,行,列和值存储在MySQL表中,请参见下面的结构
--------------------------------------------------------------------
id value template_id row_id column_id
---------------------------------------------------------------------
2 123.000 S.02.01.02.01 R0010 C1030
3 4563453.000 S.02.01.02.01 R0010 C0010
4 342342.000 S.02.01.02.01 R0020 C0010
5 12313.000 S.02.01.02.01 R0030 C0010
6 889.000 S.02.01.02.01 R0040 C0010
7 0.000 S.02.01.02.01 R0050 C0010
8 12132.000 S.02.01.02.01 R0060 C0010
9 20546227.000 S.02.01.02.01 R0070 C0010
10 1638667.000 S.02.01.02.01 R0080 C0010
问题是,这可以在MySQL中完成,但是有大量此类坐标和计算,因此查询很快变得复杂且难以维护。
另一种方法也许是将这些计算作为公式存储在MySQL表中,例如:
assets_loans_on_policies = 10 + 12 + 34 - 45 / 27
上面的每个数字都是坐标表中相应行的ID。这种方法的问题是将这些公式存储在表中。公式列将显示以下内容
10 + 12 + 34 - 45 / 27
这里的问题是首先提取单个ID,然后获取相应的行值,然后进行计算。当这些id复杂且具有MAX(value),MIN(value)等时,提取这些id变得更加困难。有些计算非常复杂。
我可以采用其他方法吗?我需要一些指导以进行结构化,因此将来会添加许多此类计算,并且这些计算应该是可维护的。