最近有朋友问到一个Power BI(Pivot)里日期推算的问题:
将一个日期列的所有日期往前推15天,比如2021年11月25日,往前推15天,则是2021年11月10日。
这个问题看似非常简单,但有些朋友会犯一个“高级”错误!因为DAX里有一个“高级”且“简单易懂”的函数DATEADD!
结果,在模型表里新增一列,使用DATEADD函数:
什么鬼?为什么2021年1月15日及以前的日期往前推15天的结果都没了?
其实,这里涉及到一个对“时间智能函数”的理解问题!
首先,时间智能函数调用的日期列,应该是“标记为日期表”的日期(在Power BI里会默认对每个日期列生成一个“日期表”),同时,其结果也会局限在这个“日期表”的范围之内!
上面的2021年1月15日再往前推15天,所得的日期并不在“日期表”的范围之内,所以,其所得结果均为空!
那么,这个问题可以怎么解呢?非常简单,最原始、最“Low”的日期减法,就是正确的解法:
对于时间智能函数,千万不要望文生义地去理解和应用,否则,很容易出了错都不知道。后续我将整理更多的相关案例供大家参考。