DAX SUMX超过2个级别

时间:2016-01-26 11:48:08

标签: powerpivot dax

这应该很容易,但我必须遗漏一些明显的东西。我有以下PowerPivot表:

Level 1    Level 2    Amount
-------    -------    ------
A          X          100
A          Y          200
B          X          400
B          Y          600

我试图构建一个度量(不是计算列),它迭代第2级中的每个项目,并将金额除以等级1的所有金额小计等于当前的等级1金额。

换句话说,我希望措施能够做到这一点

Level 1    Level 2    Measure
-------    -------    ------
A          X          100 / 300
A          Y          200 / 300
B          X          400 / 1,000
B          Y          600 / 1,000

我试过这个:

AmountSum:=SUM(Table1[Amount])
Measure:= SUMX(Table1, 
    [AmountSum]/CALCULATE(SUMX(Table1, [AmountSum]), ALL(Table1[Level 2])))

我尝试过的这个和其他迭代总是最终显示为每个calc的含义意味着(或者它看起来)只有初始的Level 2行在计算分母时才在范围内,尽管我使用了全部。

提前感谢人们提供的任何建议!

修改 假设[AmountSum]逻辑依赖于并且需要在级别2的项目的行级别计算。它在上面的示例中进行了简化,但实际上它依赖于2级数据,而在1级级别应该只是在2级级别计算结果。

1 个答案:

答案 0 :(得分:2)

试试这个:

AmountSum:=SUM(Table1[Amount])
Measure:= DIVIDE([AmountSum], CALCULATE([AmountSum], ALL(Table1[Level 2])))

如果必须在叶级别计算:

AmountSum:=SUMX(Table1, <YourMoreComplexCalcHere>)
Measure:= DIVIDE([AmountSum], CALCULATE([AmountSum], ALL(Table1[Level 2])))