Power BI如何計算累計至今

有一類計算是,從歷史最早日期至今的累計計算,比如從開業到現在總共賣出了多少件商品,累計實現了多少銷售額等。

本年累計稱爲YTD,歷史至今的累計是不是可以稱爲HTD呢:) ;這樣的時間段很可能是跨年的,所以時間智能函數並不適用,不過不用時間智能函數依然可以很簡單的進行計算。

模擬數據如下:

只是計算一個整體累計銷售額很簡單,我們想要計算的是從最初到任意一個日期的累計銷售額,爲了能一次計算出各種粒度的歷史至今,可以先構造一個日期表並建立關係。(參考:玩PowerBI必備的日期表製作方式彙總

然後寫個度量值,

歷史至今 累計收入 = CALCULATE(SUM('訂單表'[銷售額]),FILTER(ALL('日期表'),'日期表'[日期]<=MAX('日期表'[日期])))

然後在矩陣中看看結果,

結果正是歷史所有訂單的累計銷售額,這個度量值的關鍵是用MAX函數獲取當前上下文的日期,然後返回小於等於當前日期的所有銷售額的合計。

這個度量值寫法有一個問題,就是它把日期表中所有的日期都計算了一遍,其實大於最後一個訂單日期的無須計算,因爲結果並不會發生變化。

爲了解決這個問題,可以先把最後一個訂單日期找出來:

訂單最大日期 = MAXX(ALL('訂單表'),'訂單表'[訂單日期])

然後在歷史累計中增加個判斷條件,

歷史至今 累計收入 優化 = IF(MIN('日期表'[日期])<=[訂單最大日期],    CALCULATE(SUM('訂單表'[銷售額]),FILTER(ALL('日期表'),'日期表'[日期]<=MAX('日期表'[日期]))))

再來看一下結果,

正是期望的效果。

歷史至今的聚合計算,不一定只是累計求和,還可以找出歷史上最大的訂單金額,或者歷史至今的平均訂單金額,這些情況只需要改一下聚合函數就行了,比如平均訂單金額就是把SUM改成AVERAGE,

歷史至今 平均訂單訂單 = IF(MIN('日期表'[日期])<=[訂單最大日期],        CALCULATE(AVERAGE('訂單表'[銷售額]),FILTER(ALL('日期表'),'日期表'[日期]<=MAX('日期表'[日期]))))

最大最小訂單同理,不再一一列出,結果如下:

我的新書《PowerBI商業數據分析》上市了

-精彩推薦-

PowerBI數據分析和可視化實戰案例

Power BI商業數據分析模型:RFM客戶價值分析

如何用PowerBI 打造高大上的財務報表分析報告?

採悟 from PowerBI星球

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