(选项1( 使用 VAR 计算表达式的一部分和(选项 2( 直接计算测量变量的 RETURN 部分中的相同表达式是否有区别。
选项 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 时,我得到了我想要的结果,但使用 OPTION 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('客户群'(的行上下文中