我有一个在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公式,但我很难在我的模型中实现它。
答案 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的那些列除外。