數據可視化之DAX篇(二十六)Power BI度量值:滾動聚合


https://zhuanlan.zhihu.com/p/85996745

上一篇文講了累計聚合,這篇文章繼續講一下滾動聚合,比如常用的MAT計算,Moving Annual Total,滾動年度總計,即向前滾動12月的合計數。

滾動年度求和,也經常用於財務上的滾動預算,看完這篇文章,你以后會很輕松的計算出需要的數據了。


模擬一份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函數的參數就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM