PowerBI 计算 MTD 的去年同期存在的陷阱

共 1207字,需浏览 3分钟

 ·

2021-07-05 14:39

在 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。

总结

此前,我们已经给出时间智能函数计算的终极理解方法,那就是:

  • 移动

  • 缩放

  • 移动 + 缩放 的排列组合

本文进一步补充,在细节之处,先移动或先缩放是可能不同的。因此,请使用本文给出的定式了解决实际问题。

PowerBI 时间智能终极奥义,用 WTD 练手


Power BI 终极系列课程《BI真经》


BI真经 - 让数据真正成为你的力量

扫码与精英一起讨论 Power BI,验证码:data2021

点击“阅读原文”进入学习中心

浏览 95
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报