我想改变对立方体求和的方式以避免舍入错误。
我的计算只是 A 列 / B 列
在层次结构中的每个级别,我想要 SUM(Column A) / Sum(Column B) 而不是 SUM(All the individual Column A / Column B)
我怎样才能在我的计算中做到这一点或改变总结的工作方式?
我想改变对立方体求和的方式以避免舍入错误。
我的计算只是 A 列 / B 列
在层次结构中的每个级别,我想要 SUM(Column A) / Sum(Column B) 而不是 SUM(All the individual Column A / Column B)
我怎样才能在我的计算中做到这一点或改变总结的工作方式?
您可以添加在聚合的最后处理的计算成员。假设您将 A 和 B 定义为度量:
WITH
MEMBER [Measures].[A/B] AS ([Measures].[A]) / ([Measures].[B])
SELECT
...
您可以在多维数据集定义中添加计算成员,以便它在所有 mdx 语句中可用。可以肯定的是,请注意 Sum(A) / Sum(B) != Sum (A/B),如果需要,您可以添加检查 0/null。
你想要的是 SUM(Column A) / Sum(Column B) 而不是 SUM(All the individual Column A / Column B)。然后我假设你有两个措施:sum_column_a
和sum_column_b
。
要创建新度量sum_column_a_b
,您应该创建一个计算成员:
要粘贴的代码:
CREATE MEMBER CURRENTCUBE.[Measures].[sum_column_a_b]
AS iif( [Measures].[sum_column_b] > 0,
[Measures].[sum_column_a] / [Measures].[sum_column_b],
0 ),
FORMAT_STRING = "Percent",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'yourDesiredGroup';
当您处理多维数据集时,此新度量将可用。
据我了解,您在 sql db 或 DSV(数据源视图)中有一个计算字段(A 列 / B 列)。因此,您可以为每列创建两个 SUM 度量(A 列的一个总和度量,B 列的第二个总和度量)并在新的计算度量中使用它们
iif([Measure].[ColumnB]=0 OR [Measure].[ColumnB] is NULL, 0, [Measure].[ColumnA]/[Measure].[ColumnB])
.