iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
AI & Data

Power BI 資料分析與技術運用系列 第 20

D-20.在Power BI裡建柏拉圖

  • 分享至 

  • xImage
  •  

在Power BI中建立柏拉圖分析(Pareto Chart)目標就是"擒賊先擒王"、"抓蛇打七吋",運用80/20原則,先把問題的現象(symptom)、狀況或原因加以層別分類。
方法最初來自義大利的經濟學家Pareto所設計出來的,用來分析問題並歸納要因的影響度,所以就被稱為柏拉圖。
它的理論其實也很簡單,就是永遠只找出影響較大的前三項要因,或是80%的主要因,然後集中火力,針對這些主要因對症下藥,這樣不但可以節省資源,也可以馬上見到成效;否則如果一開始就用亂槍打鳥的方式,對所有的要因都採取措施改善,反而可能因為火力不夠集中,至可能成效不彰,甚至還可能造成浪費。

假使我們意欲:依產品類別,分別建立各個產品的銷售利潤,找出累積利潤超過總利潤的前n%產品。以政府資料開放平台「農產品交易行情」資料為例來自 https://data.gov.tw/dataset/8066

首先建立計算資料行,擺放由小到大累積的資料行紀錄值。在Products資料表內加入各類別,依據各項產品利潤由大到小累計的計算資料行IncrementalProfit

Incrementalproft = CALCULATE(
SUM(Products[Totalprofit]),
ALLEXCEPT(Products, 'Products'[Category] ),
Products[TotalProfit]>=EARLIER(Products[TotalProfit])
(

這裡使用Earlier函數用來累計利潤大於等於當下的利潤值,Earlier函數提供巢狀資料列語境的前n個語境中的資料值,函數定義:

Earlier(資料行,[前n個語境])

接著以累積的值除上銷售利潤的總值已得到占比百分率。
運用Divide函數自動處理零運算,可以避免除法運算式,但需要先測試分母值,如果Divide函數沒有傳入第三個參數,像是指定分母為零,或是分母為空白要回傳的結果,這時遇到除以零的時候,函數會回傳空白;如果有替代參數傳入,則不會回傳blank而是會回傳該參數值。

IncrementalPct = DIVIDE(
Products[IncrementalProfit],
CALCULATE (
SUM(Products[TotalProfit]),
ALLEXCEPT(Products, Products[Category] )
))

上一篇
D-19.Power BI的角色與資料列層級安全
下一篇
D-21.Power BI的(超前)部署
系列文
Power BI 資料分析與技術運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言