你了解PowerBI中的去年同期吗
同期是分析指标中最基础的指标,但是你真的了解PowerBI中同期的实现吗?
我们先来看一下常见的我们书写同期的方式
sales = SUM( 'FactSales'[sales] )
sales.PY =
CALCULATE(
[sales],
DATEADD( 'DimDate'[Date], -1, YEAR )
)
sales.PY2 =
CALCULATE(
[sales],
SAMEPERIODLASTYEAR( 'DimDate'[Date] )
)
无论是使用DATEADD还是SAMEPERIODLASTYEAR都可以实现同比的计算,
一如上图所示,看起来没有任何问题,但是当我们把粒度细到天时再来看数据,2022年7月的数据只24号,可是上面两种方法在月维度时计算同比时计算的是2021年7月整月。
这时候很人很多可能会想到用月度至今计算就会正确了,是这样吗,我们来看一下
sales.MTD = TOTALMTD( [sales], 'DimDate'[Date] )
sales.MTD.PY =
CALCULATE(
[sales.MTD],
DATEADD(DimDate[Date], -1, YEAR )
)
会发现即便我们使用了MTD来计算去年同期,可是在月维度上仍然计算的是去年整月的数据,仔细观看数据会发现只需要在计算去年同期时如果当期未发生,就不计算,即因为当期数据只到2022.7.24,所以在计算去年同期时只需要计算到2021.7.24即可。
sales.PY3 =
VAR maxdate =
CALCULATE (
LASTNONBLANK ( 'DimDate'[Date], [sales] ),
ALL ( 'DimDate'[Date] )
)
RETURN
CALCULATE (
[sales],
SAMEPERIODLASTYEAR (
FILTER ( VALUES ( 'DimDate'[Date] ), 'DimDate'[Date] <= maxdate )
)
)
可以看到在月维度上去年同期只计算到了2021.7.24,并且当年未发生的日期上也不再显示值。
但是也会存在特殊情况,比如2020年2月是闰月有29天,2021年2月只有28天,所以在计算2021.2的去年同期时仍然会计算2020.2全月的数据,即计算到2020.2.29,但这正是我们需要的。
本篇文章来源于微信公众号: PowerBI木小桼