Power BI如何进行一定期间的滚动计算?

Power BI如何进行一定期间的滚动计算?_第1张图片

​上一篇文讲了累计聚合,这篇文章继续讲一下滚动聚合,比如常用的MAT计算,Moving Annual Total,滚动年度总计,即向前滚动12月的合计数。

滚动年度求和,也经常用于财务上的滚动预算,看完这篇文章,你以后会很轻松的计算出需要的数据了。

模拟一份2018年1月至2019年7月的订单数据,

Power BI如何进行一定期间的滚动计算?_第2张图片

利用CALENDARAUTO生成一份日期表,按日期列建立关系,那么如何计算向前滚动12月的销售额合计呢?

其实很简单,新建度量值,

MAT =

IF(MIN('日期表'[日期])<=[订单最大日期],

    CALCULATE(

        [收入],

        DATESINPERIOD(

            '日期表'[日期],

            LASTDATE('日期表'[日期]),-1,YEAR)

       )

)

这里直接用了上篇文章的思路,先判断最大订单日期,这样就可以避免最新订单日期之后的计算。

这个度量值的关键是DATESINPERIOD函数的使用,它用来返回移动一定间隔的时间段,在上面的度量值中,正好利用它返回向前滚动一整年的日期。

关于这个时间智能函数的用法,可以参考函数卡片:

Power BI如何进行一定期间的滚动计算?_第3张图片

结果如下:

Power BI如何进行一定期间的滚动计算?_第4张图片

因为是从2018年1月才开始有数据,所以2018年12月之前的滚动求和都是不满12个月的数据。如果要求不满12月,就不要显示数据,从达到12个月以后再开始计算,可以优化一下这个度量值,

MAT 优化 =

IF(MIN('日期表'[日期])<=[订单最大日期],

    CALCULATE(

        IF(

            COUNTROWS(

                FILTER(VALUES('日期表'[月份]),[收入]>0)

            )=12,

           [收入]),

        DATESINPERIOD(

            '日期表'[日期],

            LASTDATE('日期表'[日期]),-1,YEAR)

    )

)

结果如下:

Power BI如何进行一定期间的滚动计算?_第5张图片

除了滚动求和,求移动平均同样是很常见的需求,求往前推一年的平均数,只要把上面度量值中,CALCULATE的第一个参数,改成使用AVERAGE来聚合。

在实际计算时,求往前推一年的平均值并不是必须要求满12个月才开始计算,所以直接使用上面第一个度量值的写法,

滚动平均 年度=

IF(MIN('日期表'[日期])<=[订单最大日期],

    CALCULATE(

        AVERAGE('订单表'[销售额]),

        DATESINPERIOD(

            '日期表'[日期],

            LASTDATE('日期表'[日期]),-1,YEAR)

    )

)

上面的例子都是按照一年计算滚动粒度的,如果你需要其他数量和粒度的计算,正常情况下更改一下DATESINPERIOD函数的参数就行了。

-精彩推荐-

PowerBI数据分析和可视化实战案例

精选 | 实用炫酷的Power BI自定义图表

准备30天,我通过了PowerBI认证考试

如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。

你可能感兴趣的:(Power BI如何进行一定期间的滚动计算?)