PowerBI 计算 MTD 的去年同期存在的陷阱
在 Power BI 的 度量值 的表达方面,BI 佐罗 提出了定语后置命名法,如下:
KPI.MTD.PY = ...
KPI.PY.MTD = ...
前者表示:
将 KPI 的计算放置在 PY 的环境中,再放置在 MTD 的环境中,因此,相当于去年同期的 MTD 的 KPI。
后者表示:
将 KPI 的计算放置在 MTD 的环境中,再放置在 PY 的环境中,因此,相当于 MTD 的去年同期的 KPI。
那么这两者是否有区别呢?
这两者的确是有区别的。
例如:对于 2.28 日的处理。
去年同期的 MTD
直接测试:
EVALUATE
CALCULATETABLE(
DATEADD( DATESMTD( '日期'[日期] ) , -1 , YEAR ) ,
TREATAS( { DATE( 2021,2,28 ) } , '日期'[日期] )
)
结果为:
该计算,先计算 MTD 的区间,再移动到去年同期的位置。由于 MTD 带有月末,所以在移动到去年同期时,也就可以有效的处理月末,即使是不同的日期。
MTD 的去年同期
直接测试:
EVALUATE
CALCULATETABLE(
DATESMTD( DATEADD( '日期'[日期] , -1 , YEAR ) ),
TREATAS( { DATE( 2021,2,28 ) } , '日期'[日期] )
)
结果为:
该计算,先计算去年同期,再扩展到 MTD 的范围。由于某日的去年同期仍是某日,而在那年的 MTD 也是参照该日进行。这样就对闰月的处理有问题。
任意 KPI 的计算
若表达某 KPI 计算的度量值为:
KPI = ...
则其正确的去年同期的 XTD 或 XTD 的去年同期的计算公式为:
KPI.XTD.PY 或 KPI.PY.XTD
=
CALCULATE(
[KPI] ,
DATEADD( DATESXTD( '日期'[日期] ) , -1 , YEAR )
)
其中,DATESXTD 为:DATESMTD 或 DATESQTD 或 DATESYTD。
总结
此前,我们已经给出时间智能函数计算的终极理解方法,那就是:
移动
缩放
移动 + 缩放 的排列组合
本文进一步补充,在细节之处,先移动或先缩放是可能不同的。因此,请使用本文给出的定式了解决实际问题。
Power BI 终极系列课程《BI真经》
BI真经 - 让数据真正成为你的力量
扫码与精英一起讨论 Power BI,验证码:data2021
点击“阅读原文”进入学习中心
↙
评论