为什么日期可变时运算符<=(小于或等于)不返回预期结果?

时间:2019-04-10 13:56:51

标签: powerbi dax

问题:当date是变量时,DAX没有在带操作符的if语句中返回预期结果。

背景:我已检查以确保没有日期或时间差。 日期均为格式(月份的第1天,上午12:00:00)。我有2年(2018和2019:24个不同的日期)。 我试图在计算列中使用<=运算符来确定日期是“之前/相同”到可变日期还是“之后”。我试过将

TestColumn = 
var CurrentDate = [Current_Period]
return
IF(
    ValuesTable[Month-Year] <= CurrentDate,
    "Before/Same", "After"
)

仅供参考:[Current_Period]度量正常工作,可以按预期返回一个日期

Current_Period = 
VAR ThisActMonth =
    CALCULATE (
        DISTINCT ( Fact_FX[Month-Year] ),
        Fact_FX[bool_Latest_FX_Act] = TRUE ()
    )
RETURN
    ThisActMonth

我希望对于月(日期)<=的每一行,结果都是“之前/相同”; 但是,我目前得到的结果是:

仅在ValuesTable [Monyear-Year] = CurrentDate时才“之前/相同” CurrentDate = 2019年4月

“之后”所有其他月份(23)

请帮助!

1 个答案:

答案 0 :(得分:1)

正在发生的事情是,您正在计算列的行上下文中评估Current_Period度量,因此该度量除四月份的行外看不到带有Fact_FX[bool_Latest_FX_Act] = TRUE ()的行。

解决方案是在该评估上下文之外计算Current_Period,并且有多种可能的方法。一种快速的解决方案是使用CALCULATE内部的ALL function删除行上下文:

Current_Period = 
VAR ThisActMonth =
    CALCULATE (
        DISTINCT ( Fact_FX[Month-Year] ),
        ALL( Fact_FX ),
        Fact_FX[bool_Latest_FX_Act] = TRUE ()
    )
RETURN
    ThisActMonth