在Power BI中,如何滚动求和

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

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

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

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

MAT =

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

    CALCULATE(

        [收入],

        DATESINPERIOD(

            '日期表'[日期],

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

       )

)

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

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

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

结果如下:

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

MAT 优化 =

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

    CALCULATE(

        IF(

            COUNTROWS(

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

            )=12,

           [收入]),

        DATESINPERIOD(

            '日期表'[日期],

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

    )

)

结果如下:

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

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

滚动平均 年度=

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

    CALCULATE(

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

        DATESINPERIOD(

            '日期表'[日期],

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

    )

)

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

《PowerBI商业数据分析》上市了

-精彩推荐-

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

Power BI商业数据分析模型:RFM客户价值分析

如何用PowerBI 打造高大上的财务报表分析报告?

采悟 from PowerBI星球

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章