在我的PowerPivot表中实现这种求和的DAX公式是什么?

时间:2015-08-06 15:10:24

标签: excel sum powerpivot dax

我有一个在Excel 2013中运行的PowerPivot表,它从SQL查询中收集其内容。表格的简化摘录如下所示(实际表格中有超过150,000行):

 ID     Revenue    Quarter   
 145     23,000    Qr2 2014
 469    151,000    Qr1 2014
 478     40,000    Qr2 2014
 587     30,000    Qr3 2014
 643     15,000    Qr3 2014
 698     20,000    Qr1 2014
 812     60,000    Qr2 2014 

我需要一个DAX公式旁边的" Quarter"列将给我以下输出:

  ID     Revenue    Quarter   SUMQ 
 145     23,000    Qr2 2014   123,000
 469    151,000    Qr1 2014   171,000
 478     40,000    Qr2 2014   123,000
 587     30,000    Qr3 2014    45,000
 643     15,000    Qr3 2014    45,000
 698     20,000    Qr1 2014   171,000
 812     60,000    Qr2 2014   123,000

基本上,SUMQ列将是一个计算列,它需要从表的所有行中SUM各自的Quarters并报告该SUM。当新数据添加到表中时,SUMQ列将自动更新。

我的研究向我指出了DAX中的SUMX公式,但我很难在我的模型中实现它。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容创建计算列:

=
CALCULATE (
    SUM ( [Revenue] ),
    ALL ( MyTable ),
    MyTable[Quarter] = EARLIER ( MyTable[Quarter] )
)

在这里,您要计算整个表(ALL)的收入总和,其中Quarter值是初始行上下文(EARLIER)中的值。 这种类型的模式通常用于abc分析。见http://www.daxpatterns.com/abc-classification/

答案 1 :(得分:0)

我没有足够的声誉对上述帖子发表评论,但我想指出ALLEXCEPT()是实现此逻辑的更简洁方法:

SUMQ=
CALCULATE(
    SUM(MyTable[Revenue])
    ,ALLEXCEPT(MyTable, MyTable[Quarter])
)

ALLEXCEPT()清除作为第一个参数传递的表的每一列的上下文,但名为参数2,n的那些列除外。