[使用变量VAR评估表达式的一部分和(选项2)直接评估度量变量的RETURN部分中的相同表达式在(选项1)中是否存在差异。
选项1
Test =
VAR
previousperiod = LASTNONBLANK(PREVIOUSMONTH('Customer base'[Date]),1)
RETURN
CALCULATE(SUM('Customer base'[Count]), FILTER(ALLSELECTED('Customer base'), 'Customer base'[Date] = previousperiod))
选项2
Test =
RETURN
CALCULATE(SUM('Customer base'[Count]), FILTER(ALLSELECTED('Customer base'), 'Customer base'[Date] = LASTNONBLANK(PREVIOUSMONTH('Customer base'[Date]),1)))
因为执行选项1时会得到所需的结果,但是使用选项2时会得到所有空白值。
格式化选项1:
Test =
VAR previousperiod =
LASTNONBLANK (
PREVIOUSMONTH ( 'Customer base'[Date] ),
1
)
RETURN
CALCULATE (
SUM ( 'Customer base'[Count] ),
FILTER (
ALLSELECTED ( 'Customer base' ),
'Customer base'[Date] = previousperiod
)
)
格式化选项2:
Test =
CALCULATE (
SUM ( 'Customer base'[Count] ),
FILTER (
ALLSELECTED ( 'Customer base' ),
'Customer base'[Date]
= LASTNONBLANK (
PREVIOUSMONTH ( 'Customer base'[Date] ),
1
)
)
)
变量是常量,并且被求值一次! :评估在定义评估的上下文中首次使用时进行。
因此在选项1]中,在评估上下文存储库中定义了VAR上一个周期,并将值赋予了返回块]
而选项2
,LASTNONBLANK ( PREVIOUSMONTH ( 'Customer base'[Date] ), 1 )
在使用时进行评估,这里在迭代AllSELECTED('Customer base')的行上下文中