滾動年度求和,也經常用於財務上的滾動預算,看完這篇文章,你以後會很輕鬆的計算出需要的數據了。
模擬一份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函數的參數就行了。
-精彩推薦-
採悟 from PowerBI星球