通过一个级别以上的SUM汇总的MDX表达式?

时间:2014-06-03 16:17:31

标签: mdx pentaho mondrian

我有两个维度A,B和一个通过求和聚合的度量M.

如果我要应用这两个维度,我可以得到一个表格,如下所示:

enter image description here

现在我遇到的问题是我想按列(或逐行)求和,以便我可以计算值的列比率:

enter image description here

我尝试了[Measures].[M] / SUM([Measures].[M])[Measures].[M] / ([All], [Measures].[M])这样的表达式 - 无济于事。

我想补充一点,公式应该是动态的,而不是使用特定的向下钻取。 用文字表达 - 如果下钻没有最后一步,分母应该是衡量标准的总和。

我使用的是Mondrian 4.6 BTW,与该版本的MDX不完全兼容。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

With 
  SET ROWSET as [Dimension 1].[Some Level].Members
  SET COLSET as [Dimension 2].[Other Level].Members

  MEMBER [Measures].[Total] as Aggregate( ROWSET, [Measures].[M] )
  MEMBER [Measures].[Ratio] as [Measures].[M] / [Measures].[Total]

Select
  ROWSET on Rows,
  COLSET * { [Measures].[M], [Measures].[Ratio] } on Columns

From [My Cube]

您的查询参数将仅用于ROWSET和COLSET的定义。

要获得总行数,只需在总定义中用COLSET替换ROWSET,