用PowerBI進行帕累托分析有多簡單?
通過簡單的點擊交互,就能進行動態分析發現見解,才是我們需要的,恰好這也是 PowerBI 所擅長的。
就帕累托分析來說,能從不同的角度快速發現關鍵因素、以及可以動態設定關鍵因素的閾值,就是我們需要的。本文通過一個示例來看看如何生成一個動態的帕累托圖,先看看最終效果,
這樣分析是不是很簡單,下面就來看看是如何製作的。
數據為虛擬的某連鎖店的電子產品銷售明細,以及與之關聯的產品和銷售地點維度,和一個對應的日期表,建立關係圖如下,
要分析的維度:
1,時間維度:年份
2,財務指標:收入和利潤
3,銷售細分:按地區和產品明細
時間維度
年度指標比較簡單,銷售明細表中有日期數據,直接根據日期表中的年度創建一個切片器就行了。
財務指標
先建兩個度量值:
收入= SUM("銷售明細"[銷售額])
利潤貢獻= SUM("銷售明細"[毛利])
然後在PowerBI Desktop中新建表,只有一個欄位[財務指標],數據為收入和利潤,
按欄位[財務指標]製作切片器,然後寫度量值[指標數據],
指標數據=
SWITCH(TRUE(),
SELECTEDVALUE("財務指標"[財務指標])="收入",[收入],
SELECTEDVALUE("財務指標"[財務指標])="利潤",[利潤貢獻],
BLANK()
)
該度量值判斷切片器的選擇,如果選擇的是收入,就匯總收入數據;如果選擇的是利潤,就匯總利潤。
產品和地區維度
同上面的思路類似,把產品明細和地區明細整合到一起,如下圖,
如果數據量很小,手工整理也很快,不過在這裡依然可以用DAX實現,在【建模】選項卡下,點擊"新表"(參考:PowerBI Desktop中新建表的使用場景),在編輯欄輸入:
分析維度=
VAR item1 = SELECTCOLUMNS( ADDCOLUMNS( DISTINCT( "城市"[城市] ) , "分析維度" , "地區" ) , "分析維度" , [分析維度],"維度明細",[城市] )
VAR item2 = SELECTCOLUMNS( ADDCOLUMNS( DISTINCT( "產品明細"[產品名稱]) , "分析維度" , "產品" ) ,"分析維度" , [分析維度], "維度明細" , [產品名稱] )
RETURN UNION( item1 , item2 )
然後上圖中的表格就生成了,根據該表的欄位[分析維度]創建切片器。
至此,三個分析維度已經建立完成,並體現在報表左側的三個切片器上。
製作帕累托圖
步驟和上一篇文章類似,只是由於分析維度更多,需要更細化的處理。各個切片器之間要相互配合,考慮上下文的影響,以下的DAX公式稍微長一點,需要根據每個函數慢慢理解,按照這個實例學習這些函數其實也是個不錯的方式。
將【折線和簇狀柱形圖】拖到畫布上,將前面創建的分析維度表中的[維度明細]拖入到共享軸。
創建度量值[分析數據]拖入到列值框中,
分析數據=
VAR item3=TREATAS( VALUES("分析維度"[維度明細]),"城市"[城市])
VAR item4=TREATAS(VALUES("分析維度"[維度明細]),"產品明細"[產品名稱])
RETURN
SWITCH(TRUE(),
SELECTEDVALUE("分析維度"[分析維度])="地區",
CALCULATE([指標數據],item3),
SELECTEDVALUE("分析維度"[分析維度])="產品",
CALCULATE([指標數據],item4),
BLANK()
)
下一步就是獲得累計佔比的數據,創建度量值如下,
分析數據合計=
SWITCH(TRUE(),
SELECTEDVALUE("財務指標"[財務指標])="收入",
CALCULATE([收入],ALLSELECTED("銷售明細"[銷售額])),
SELECTEDVALUE("財務指標"[財務指標])="利潤",
CALCULATE([利潤貢獻],ALLSELECTED("銷售明細"[毛利])),
BLANK()
)
數據佔比= DIVIDE([分析數據],[分析數據合計])
累計佔比=
VAR cur_rate=[數據佔比]
RETURN
CALCULATE([數據佔比],FILTER(ALL("分析維度"[維度明細]),[數據佔比]>=cur_rate))
將[累計佔比]拖入到列值框中,帕累托圖就製作好了,
ABC比例設置
帕累托分析也成為ABC分析,一般按照70%、20%和10%的比例來劃分,或者按照二八定律的80%和20%劃分,當然這些都是一個概數而已,並不是一定要這樣劃分,實際分析時還要根據情況自行調整。
在【建模】選項卡下,點擊"新建參數"(參考:創建PowerBI「參數」輕鬆搞定動態分析),建立三個參數如下:
參數a = GENERATESERIES(1, 100, 1)
參數b = GENERATESERIES(0, 100, 1)
參數c = GENERATESERIES(0, 100, 1)
同時生成三個切片器,通過這三個切片器來控制這三個參數的數值大小,然後就可以計算出每一類的相對佔比,
A類比例= DIVIDE([參數a值],[參數a值]+[參數b值]+[參數c值])
B類比例= DIVIDE([參數b值],[參數a值]+[參數b值]+[參數c值])
C類比例= DIVIDE([參數c值],[參數a值]+[參數b值]+[參數c值])
利用這三個度量值生成一個環形圖,這樣動態的ABC比例就設計好了,
判斷因素的所屬分類
建立度量值,
數據所屬分類=
VAR cur_leji=[累計佔比]
RETURN
SWITCH(TRUE(),
cur_leji
cur_leji
"C"
)
效果如下,
至此該模型的技術操作完成,剩下的就是一些可視化方面的修飾、格式調整等,這裡做的模型也還有許多待完善之處,但帕累托分析的主要方面都已考慮到,可以在實際分析中進行分解套用。
總結:
進行動態帕累托分析的主要步驟:
1,整理需要分析的維度
2,設置ABC比例參數
3,創建指標數據和累計比例
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:PowerBI星球 |