switch与var

2020-12-11  本文已影响0人  BI罗
Action_ePOS_Offtake = 
SWITCH (
    TRUE (),
    SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "Flexible Date Range", [BD_Offtake],
    SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "MTD", [MTD_Offtake],
    SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "FYTD", [FYTD_Offtake],
    SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "FYTD2", 1
)

Action_ePOS_Offtake_var = 
VAR a = [BD_Offtake]
VAR b = [MTD_Offtake]
VAR c = [FYTD_Offtake]
RETURN
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "Flexible Date Range", a,
        SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "MTD", b,
        SELECTEDVALUE ( ePOS_Action_Time[Action_Time] ) = "FYTD", c
    )

左边单纯switc,右边是switch+var,明显var的query多三个,查询更慢,为什么?因为即使var是惰性计算,在需要时(return)才会计算,但是,整个dax的上下文也会先一步作用在var的定义里,不管你是否也被立刻计算出来,我先给你一套上下文。


上一篇 下一篇

猜你喜欢

热点阅读