在我的 PowerPivot table 中实现此类求和的 DAX 公式是什么?

What is the DAX formula to achieve this type of summation in my PowerPivot table?

我在 Excel 2013 年有一个 PowerPivot table 运行,它从 SQL 查询中收集内容。 table 的简化摘录如下所示(实际 table 有超过 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 

我需要 "Quarter" 列旁边的 DAX 公式,它会给出以下输出:

  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 列将是一个计算列,它需要对 table 的所有行中的相应季度求和并报告该 SUM。当新数据添加到 table 时,SUMQ 列将自动更新。

我的研究让我找到了 DAX 中的 SUMX 公式,但我很难尝试在我的模型中实现它。

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

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

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

我没有足够的声誉来评论上面的 post,但我想指出 ALLEXCEPT() 是实现此逻辑的更简洁的方法:

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

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