關於帕累託分析,大家用的比較多,有個小問題被很多人問過,就是計算出的累計佔比結果是錯誤的,這裡專門寫篇文章說明一下。

正常的帕累託分析是這樣的,以前的文章中曾經舉了個簡單的例子,

佔比 = DIVIDE([利潤額],CALCULATE([利潤額],ALL(‘資料表’)))

累計佔比 =var cur_rate=[佔比]return CALCULATE([佔比],FILTER(ALL(‘資料表’),[佔比]>=cur_rate))

如果你分析的資料表只有一個表,並且還有重複值,比如表是這樣的:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

按上面的寫法計算的結果將是錯誤的,比如第一個值沒有資料,後面的也有錯誤,為什麼會這樣呢?

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

在計算佔比的時候,會自動彙總,A1的佔比是48%,但按上述累計佔比度量值的計算邏輯,FILTER的第一個引數是使用整個資料表作為行上下文,在每一行中計算佔比,不會按類別自動彙總,所以會出現上面的情況。

如果你還不理解,可以在資料表中新增一個計算列:

每行佔比 = DIVIDE([利潤],SUM(‘資料表’[利潤]))

來模擬看看每一行的佔比情況:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

因為沒有任何一行的佔比,高於48%,所以A1對應的累計佔比是空值,A2的佔比是22%,只有43%大於等於22%,所以A2對應的的累計佔比是43%,其它的結果都是這個邏輯,你是不是清楚了?

所以只要有重複值,上述寫法得到的就是錯誤的結果,那麼應該如何修改呢?下面提供兩個方法:

方法一、修改累計佔比度量值

依然是利用這一個表,將累計佔比的度量值修改為:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

它的邏輯是先在度量值內部構建一箇中間表,也就是上面度量值中VAR定義的 table_,它利用ADDCOLUMNS和SUMMARIZE函式構造了一個兩列的表,一列是不重複的產品類別,另一列是每個類別對應的佔比。

然後再計算大於等於當前產品類別佔比的累計值,就不會出錯了:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

方法二、建立維度表,完善資料模型

還有一種方式是建立維度表,如果你的源資料裡沒有這張表,可以直接透過DAX新建表:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

維度表肯定是不重複的,然後將維度表與事實表建立關係。

度量值的邏輯可以與最初的一樣,只是其中的欄位都改成維度表的欄位:

佔比 = DIVIDE([利潤額],CALCULATE([利潤額],ALL(‘產品維度表’)))

累計佔比 =

var cur_rate=[佔比]

return CALCULATE([佔比],FILTER(ALL(‘產品維度表’),[佔比]>=cur_rate))

並用維度表的欄位作為上下文,就可以正確的計算了:

PowerBI帕累託分析,為什麼你做的累計佔比是錯誤的?

是不是更簡單。

第二種才是PowerBI的自然做法,建立維度表,完善模型,用維度表的欄位作為上下文,每一個學習者都應該把這些操作,作為使用PowerBI的常識。

這也是資料模型的好處,建立一個規範的、良好的模型,可以用很簡單的DAX就能解決問題,相反,模型沒有建好,或者壓根沒有模型,匯入一張大表就直接著手分析,很可能事倍功半。

更多推薦:

喜歡別忘了點贊哦~

掌握一個技能

專研一個領域

成為更好的自己