在测量变量中计算 VAR 表达式与评估 RETURN 表达式有什么区别?



(选项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('客户群'(的行上下文中

最新更新