问题描述
我倾向于Power BI DAX迭代器函数,当使用“度量”作为迭代器函数的表达式时感到困惑:
假设我们首先定义一个度量:
Quantity = SUM(Sales[Order Quantity])
然后以下两种措施未返回相同的结果:
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),[Quantity]
)
&
Product Quantity Rank too =
RANKX(
ALL('Product'[Product]),SUM(Sales[Order Quantity])
)
第二个度量转义了行上下文。但是为什么呢?
解决方法
要使第二个指标正确无误,您必须按如下所示对汇总应用CALCULATE-
Product Quantity Rank too =
RANKX(
ALL('Product'[Product]),CALCULATE(SUM(Sales[Order Quantity]))
)
可以找到很好的解释HERE
,通过查找不同的材料,最终发现这是一个“上下文过渡”问题。
SUM(Sales[Order Quantity])
在
Product Quantity Rank too =
RANKX(
ALL('Product'[Product]),SUM(Sales[Order Quantity])
)
实际上汇总了销售表中的每个“订单数量”。
使用CALCULATE函数时,它将行上下文值应用为过滤器,称为“上下文转换”。
如果在以行上下文评估的表达式中引用度量,则上下文转换是自动的。因此,您无需将度量引用传递给CALCULATE函数。
因此,两者
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),[Quantity]
)
和
Product Quantity Rank too =
RANKX(
ALL('Product'[Product]),CALCULATE(SUM(Sales[Order Quantity]))
)
有效