當前位置:
首頁 > 文史 > 這幾個示例,幫你深入理解RANKX排名

這幾個示例,幫你深入理解RANKX排名

本文聊聊在PowerBI中如何進行各種類型的排名問題。

PowerBI中計算排名主要使用RANKX函數,關於該函數的具體語法,不再細說,可以查看該函數的官方文檔,也可以參照這個函數卡片:

知識星球每日函數卡片

下面通過幾個示例來看看它的用法。

假設數據模型為一個訂單表,以及對應的產品維度表和客戶維度表,產品維度表有產品名稱和產品類別。

下面分別按銷售額對各種維度進行排名。

銷售額= sum("訂單"[銷售額])

對全部產品按銷售額排序

首先寫一個RANKX的最經典、最常用的代碼,

排名= RANKX(ALL("產品"),[銷售額])

這樣各產品的排名計算出來了,不過總計行的排名沒有什麼意義,可以加個判斷條件不顯示總計,

排名=

IF(HASONEVALUE("產品"[產品名稱]),

RANKX(ALL("產品"),[銷售額]))

以後遇到這種情況直接用IF HASONEVALUE進行判斷就行了,本文後面的度量值都不再考慮總計問題,並且直接不再顯示總計。

上面的這個排名其實是絕對排名,無論選擇幾個產品,每個產品的排名是固定的。

按照所選的產品範圍來排序,就是相對排名,可以結合ALLSELECT函數來實現,

整體相對排名=

RANKX(ALLSELECTED("產品"),[銷售額])

這個是整體相對排名,那麼第一個排名也改為整體絕對排名,效果如下,

在類別內對各產品排名

如果再把產品類別加進來,並讓各產品在各自的類別內進行排名,同樣也分為類別內絕對排名和類別內相對排名,

類別中 產品絕對排名=

RANKX(ALL("產品"[產品名稱]),[銷售額])

類別中 產品相對排名=

RANKX(ALLSELECTED("產品"[產品名稱]),[銷售額])

按子類別排名

如果想知道每個類別整體的銷售情況排名,那麼就需要計算出每個類別的整體銷售額,度量值可以這樣寫,

按類別絕對排名=

RANKX(

ALL("產品"[產品類別]),

CALCULATE(

[銷售額],

ALLEXCEPT("產品","產品"[產品類別])

)

)

同理,有了上面的經驗,相對排名,把ALL替換成ALLSELECT即可,

按類別相對排名=

RANKX(

ALLSELECTED("產品"[產品類別]),

CALCULATE(

[銷售額],

ALLEXCEPT("產品","產品"[產品類別])

)

)

排名效果如下,

按兩個維度進行排名

上面是對各產品的銷售額進行排名,如果增加一個維度,比如按產品在每個城市的銷售額進行排名,

實際上是按照前兩列的笛卡爾積進行排名,度量值可以這樣寫,

產品 城市 綜合排名=

RANKX(

CROSSJOIN(

ALL("產品"[產品名稱]),

ALL("客戶"[客戶城市])

),

[銷售額]

)

總結

通過上面幾個例子,除了可以計算排名,更可以幫助你更深入的理解RANKX的用法:

對哪個維度進行排名,就構建一個對應的維度表,作為RANKX的第一個參數,動態就用ALLSELECTED;

按什麼排名,就寫對應的表達式,作為RANKX的第二個參數。

RANKX還有三個可選參數,其中第四個和第五個都很容易理解,而第三個參數相對難理解一點,不過並不常用,無須刻意去深入,遇到了問題可以隨時和我溝通。

以上幾個示例基本涵蓋了我們日常使用的大部分排名問題,可以通過觀察輸出的結果來理解度量值的寫法。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PowerBI星球 的精彩文章:

在PowerBI中創建聯動切片器
PowerBI 表格總計錯誤的終極解決方案

TAG:PowerBI星球 |