评估变量中VAR与RETURN的表达式的区别是什么?

问题描述 投票:0回答:1

[使用变量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时会得到所有空白值。

powerbi dax evaluation
1个回答
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 =
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')的行上下文中

© www.soinside.com 2019 - 2024. All rights reserved.