【发布时间】:2013-06-26 13:13:12
【问题描述】:
我有一个相当复杂的计算度量,它完美地适用于多维数据集的每一行数据。但是,我需要逐行计算这些值的总和。但是计算度量的行为似乎在 Excel 中的小计和总计行中,它再次执行计算而不是对前面的行求和。有没有办法让计算的度量在每一行上执行它的计算,但他们在总计和小计中执行传统的 SUM?
提前致谢。
【问题讨论】:
标签: ssas mdx data-warehouse olap ssas-2008
我有一个相当复杂的计算度量,它完美地适用于多维数据集的每一行数据。但是,我需要逐行计算这些值的总和。但是计算度量的行为似乎在 Excel 中的小计和总计行中,它再次执行计算而不是对前面的行求和。有没有办法让计算的度量在每一行上执行它的计算,但他们在总计和小计中执行传统的 SUM?
提前致谢。
【问题讨论】:
标签: ssas mdx data-warehouse olap ssas-2008
计算的度量值不会聚合;每次都会计算。
【讨论】:
有一个解决方案,但那真的很难看:
你必须使用类似的东西
SCOPE([dim1].[hier1].[All]);
[Measures].[MyCalculatedMeasure] = Sum([dim1].[hier1].[bottomlevel].Members, [Measures].[MyCalculatedMeasure]);
END SCOPE;
对于所有维度的所有层次结构,无论是属性还是用户层次结构,酌情替换dim1、hier1、bottomlevel。
【讨论】:
您需要模拟计算成员的真实度量行为。使用 Null 值进行虚拟实测,然后使用 Scope 在粒度级别上定义您的公式。更详细的答案请看这里:http://blog.crossjoin.co.uk/2013/05/29/aggregating-the-result-of-an-mdx-calculation-using-scoped-assignments/
【讨论】:
我找到了最简单的方法:
({[Measures].[您在步骤 1 中创建的命名计算]},Leaves())=您的复杂计算;
这将定义设置在叶级别,并且所有聚合都可以正常工作。
【讨论】: