奧推網

選單
財經

這兩種方法求柏拉圖的累積佔比,可以幫你更好地理解 M 與 DAX 的上下文概念

時序更替,歲物豐成。

柏拉圖是一種用於展示各分類累計百分比之和的視覺化圖表。它其實是折線圖與條形圖的組合圖,特點是將各分類的百分比按從大到小排序,可以直觀的展示隨著類別的增加時的累計百分比情況。

柏拉圖非常適合用來突出顯示一組資料中的最大因素,一般關注構成前 80% 佔比的類別。

柏拉圖

是基本的質量管理控制的工具之一。

類別降序排序和百分比累計是該圖最大的特

徵。

我們以人員離職原因調查資料為例,展示如何在 Power BI 中計算製作柏拉圖需要的累計百分比。

此例中求累計百分比主要思路是:

用所有類別的百分比累計總和減去小於所在行的百分比之和。只要能準確理解 M 及 DAX 中的上下文概念就能透過自定義列求解。

一、Power Query 自定義列

將資料載入到 PQ 以後,可以使用新增自定義列的方法計算累計百分比。像這種複雜的計算在介面中是沒有相應功能的,需要用到 M 函式。

新增自定義列,輸入以下 M 程式碼:

List。Sum(

{

List。Sum(重新命名的列[佔比]), //求原表佔比列的總和

-List。Sum(

Table。SelectRows(重新命名的列, //篩選小於當前所在行佔比的表,並計算篩選後的表佔比列之和

(x) => x[佔比] <_[佔比])[佔比]

}

自定義列中 List。Sum(重新命名的列[佔比]) 計算的是所有類別的百分比之和。

{ } 代表列表,列表中第二個數值求的是小於當前行的佔比之和。「_[佔比]」代表當前行的百分比,因為新增列是逐行計算的,所以這裡就涉及到計算上下文的理解了。

程式碼中我們使用

Table。SelectRows 函式來篩選行。而 (x) => x[佔比] <_[佔比] 可以理解成即插即用的自定義函式。這段程式碼其實模擬了我們在使用數字篩選器篩選佔比小於指定值的過程。

透過以上自定義列計算的累計佔比資料如下。離職原因「家中有事」的累積佔比數值計算過程為所有類別的佔比之和減去除礦工解除以外的百分比之和。

M 函式解法中用了較多的 M 函式知識,理解它你需要知道 M 函式的上下文概念、M 語言的資料結構 List、M 函式 List。Sum、 Table。SelectRows 等。

我們可以來看看 DAX 函式解法,對比學習更容易掌握。

二、DAX 計算列

使用 DAX 計算列計算,原理是一致的。在每一行中計算出所有類別佔比總和,減去小於當前行的佔比之和。

在 DAX 中獲取當前行的方法有 2 種,使用 VAR 定義變數或者使用 EARLIER 函式。

VAR 計算法:

DAX _ 累計佔比 = VAR CurR = ‘離職率分析’[佔比]

RETURN

SUM(‘離職率分析’[佔比]) -

CALCULATE(SUM(‘離職率分析’[佔比]),FILTER(‘離職率分析’,‘離職率分析’[佔比]

EARLIER 函式法:

DAX _ 累計佔比2 =

SUM(‘離職率分析’[佔比]) -

CALCULATE(SUM(‘離職率分析’[佔比]),FILTER(‘離職率分析’,‘離職率分析’[佔比]

在 DAX 中篩選的過程更加明顯易懂,使用 FILTER 函式篩選佔比小於當前行的所有佔比然後求和。

在 DAX 中模擬篩選可以結合 VAR 及 FILTER 函式。

先使用 VAR 獲取當前行的值。

使用 VAR 定義變數時,建議定義變數名時使用 Cur ** 的格式,Cur 是英文 Current的縮寫,表示當前。

財會商務圖表應用之工資統計、固定資產分析與成本分析圖

財務會計領域商務圖表設計分享之試算平衡、賬齡分析與財務預算

這 20 個財經雜誌的圖表告訴你好看的圖表設計到底能有多美