如何计算计算量?

时间:2013-06-28 17:13:58

标签: ssas mdx data-warehouse olap ssas-2008

我有一个相当复杂的计算度量,可以完美地处理来自多维数据集的每一行数据。但是,我需要逐行计算这些值的总和。但计算度量的行为似乎在Excel的小计和总行中,它再次执行计算而不是对前面的行求和。有没有办法让计算出的度量在每一行上执行计算,但是它们在总计和小计中都有传统的SUM?

提前致谢。

4 个答案:

答案 0 :(得分:0)

计算出的指标不会汇总;它将每次计算。

答案 1 :(得分:0)

有一个解决方案,但这真的很难看:

您必须使用类似

的内容
SCOPE([dim1].[hier1].[All]);
    [Measures].[MyCalculatedMeasure] = Sum([dim1].[hier1].[bottomlevel].Members, [Measures].[MyCalculatedMeasure]);
END SCOPE;

适用于所有维度的所有层次结构,无论是属性还是用户层次结构,都会根据需要替换dim1hier1bottomlevel

答案 2 :(得分:0)

您需要模拟计算成员的实际度量行为。使用Null值进行虚拟实际测量,然后使用Scope在粒度级别上定义公式。有关更详细的答案,请参阅此处:http://blog.crossjoin.co.uk/2013/05/29/aggregating-the-result-of-an-mdx-calculation-using-scoped-assignments/

答案 3 :(得分:0)

我找到了最简单的方法:

  1. 在DSV的相应度量表中创建新的命名计算。 (右键单击,添加新的命名计算并将其表达式设置为CAST(NULL为[插入适当的数据类型])。
  2. 在您的多维数据集中添加新命名的计算作为度量。
  3. 在多维数据集的计算区域中切换到脚本视图并添加以下内容:
  4. ({[Measures]。[您在步骤1中创建的命名计算]},Leaves())=您的复杂计算;

    这将在叶级别设置定义,并且所有聚合都可以正常工作。

    参考:http://sqlblog.com/blogs/mosha/archive/2005/02/13/performance-of-aggregating-data-from-lower-levels-in-mdx.aspx