你了解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木小桼

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注