我对 DAX 相当陌生,我很好奇 DAX 如何评估多个过滤器参数(如果提供给CALCULATE()
和CALCULATETABLE()
.
请考虑以下陈述:
DAX 声明 1:
Net Sales ACT = CALCULATE(
SUMX('Fact', 'Fact'[Gross Sales] - 'Fact'[Costs]),
FILTER('Fact', 'Fact'[Scenario Key] = LOOKUPVALUE(Scenario[Scenario Key], Scenario[Scenario], "Actual"))
)
DAX 声明 2:
Net Sales ACT LY = CALCULATE(
[Net Sales ACT],
SAMEPERIODLASTYEAR('Date'[Date])
)
DAX 声明 3:
Net Sales ACT LY =
VAR
v_lookup = FILTER(
'Fact',
'Fact'[Scenario Key] = LOOKUPVALUE(Scenario[Scenario Key], Scenario[Scenario], "Actual")
)
RETURN -- << why does this chained filter not produce the same results as in statement 2?
CALCULATE(
SUMX('Fact', 'Fact'[Gross Sales] - 'Fact'[Costs]),
v_lookup,
SAMEPERIODLASTYEAR('Date'[Date])
)
关系:
生成的结果差异很大,语句 2 给出了正确的输出。我无法弄清楚为什么声明 3 不起作用。
我的问题很简单,为什么 DAX 不会为语句 2 和语句 3 计算相同的值?我的信念是,如果我为这些提供多个过滤器,CALCULATE()
它们将应用于相同的filter context
. 然而,情况似乎并非如此,这究竟是如何工作的?
谢谢!