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