本文介紹一個經常會遇到的折扣計算問題,我曾被很多人問過類似的計算,這裡我通過一個簡化的數據,介紹在PowerBI中實現折扣計算的思路。
假設訂單表結構如下:
記錄有每個産品在各個平台上的原價和每日銷售數量。
另外還有一個折扣表,記錄了促銷期間每種産品在各個平台的折扣率:
每個平台上的折扣不同,并且促銷起止日期也有差異,如何通過以上兩個表快速計算各種維度下扣除折扣後的淨銷售額呢?
下面是實現步驟。
1. 構造模型
構造模型是PowerBI數據分析的基礎,先梳理需要分析的維度,建立合适的模型,而不建議拿到數據,直接就利用這些表開始寫度量值計算。
就以上的分析需求來說,分析維度是三個:日期、平台和産品,所以先做三個維度表,都可以利用DAX來生成。
日期表制作很簡單,以前專門介紹過:玩PowerBI必備的日期表制作方式彙總
平台表和産品表都可以從訂單表中抽取不重複的數據作為維度表,比如産品表直接這樣寫就可以了:
維度表做好以後,可以這樣來建立模型:
其中日期表與折扣表并不存在直接的對應關系,就不用建立關系了,利用DAX來實現日期的查找,下面會看到。
2、建立度量值
首先寫一個基礎度量值來計算折扣前的原始銷售額:
毛銷售額 =
SUMX('訂單表','訂單表'[單價]*'訂單表'[銷售數量])
然後是折扣率的計算,如何計算出每個訂單所對應的折扣率是重點,度量值可以這樣寫:
核心邏輯是通過上下文的信息去篩選折扣表,找出篩選後的折扣表所對應的折扣率。
有了這個折扣率,就可以計算淨銷售額了:
這裡并不能簡單的用毛銷售額乘以折扣率來計算,因為如果沒有明細的上下文,是無法準确的計算折扣率的。這個度量值中SUMMARIZE返回的表,是構造折扣率計算所需要的内部行上下文,無論外部篩選上下文是什麼,在這個度量值内部,總能提供包含日期、平台、産品維度的上下文。
并且這樣的寫法也能确保總計等于明細行之和。
3、展示計算結果
完成了上面的步驟,最後這一步就非常簡單了,選擇合适的可視化類型展現就可以了。
這裡用矩陣來展示結果,将維度表中的字段放到矩陣的行中,毛銷售額和淨銷售額度量值放到值中,就可以利用上下鑽取來查看每一個維度折扣前後的銷售額。
以上就是PowerBI折扣計算的實現思路,其實各種業務分析,抛開細節的業務邏輯,主要的步驟均是如此,關鍵是要多思考多練習,做到舉一反三。
更多推薦Power BI分析應用:盈虧平衡分析
Power BI數據分析:任意時間段對比分析
分析報告還不會用動态分析?利用Power BI參數輕松實現
采悟 | PowerBI星球
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!