我正在学习 DAX。
作为衡量标准,我可以写:
Profit = SUM(Sales[SalesAmt])-SUM(Sales[ProdcutionCost])
这给了我利润。
如果我这样做,我会得到相同的结果:
Profit = SUMX(Sales,Sales[SalesAmt]-Sales[ProdcutionCost])
那么 SUM 和 SUMX 的用例或区别是什么?
实际上,
SUM
只是对列进行简单求和的语法糖。
SUM ( 'Table'[Column] )
是(并且将在查询时由引擎翻译成)
的简写SUMX ( 'Table' , 'Table'[Column] )
同样,该用例适用于您只想要一个简单的总和时。如果您想在表格中在行上下文中执行更多操作,则需要调用
SUMX
。
考虑这样一种情况,您有一个这样的表,其中包含单价和数量,并且想要计算总收入:
交易ID | 产品编号 | 单价 | 数量 |
---|---|---|---|
1 | 1 | 5.99 | 5 |
1 | 2 | 10.49 | 3 |
2 | 1 | 5.99 | 3 |
在这种情况下你不能这样做:
Total Revenue = SUM ( 'Table'[Unit Price] ) * SUM ( 'Table'[Quantity] )
相反,您必须使用显式
SUMX
迭代器中的行上下文来逐行求和:
Total Revenue =
SUMX (
'Table' ,
'Table'[Unit Price] * 'Table'[Quantity]
)
我不确定 SUM 只是列的简单求和的语法糖,或者 SUM ( 'Table'[Column] ) 是 SUMX ( 'Table' , ‘表’[列])。
根据我的经验,性能差异是:
参见https://maxpowerbi.pro/the-dax-summary-pattern/
这也是 Marco Russo 和 Alberto Ferrari 推荐的 https://www.daxpatterns.com/currency-conversion/