tft每日頭條

 > 生活

 > powerbi大數據分析

powerbi大數據分析

生活 更新时间:2024-07-05 09:09:36

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)1

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

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

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)2

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

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

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

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

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)3

對全部産品按銷售額排序

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

排名 = RANKX(ALL('産品'),[銷售額])

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)4

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

排名 = IF(HASONEVALUE('産品'[産品名稱]),RANKX(ALL('産品'),[銷售額]))

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

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

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

整體相對排名 = RANKX(ALLSELECTED('産品'),[銷售額])

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

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)5

在類别内對各産品排名

如果再把産品類别加進來,并讓各産品在各自的類别内進行排名,同樣也分為類别内絕對排名和類别内相對排名,

類别中 産品絕對排名 = RANKX(ALL('産品'[産品名稱]),[銷售額])
類别中 産品相對排名 = RANKX(ALLSELECTED('産品'[産品名稱]),[銷售額])

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)6

按子類别排名

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

按類别絕對排名 = RANKX( ALL('産品'[産品類别]), CALCULATE( [銷售額], ALLEXCEPT('産品','産品'[産品類别]) ))

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

按類别相對排名 = RANKX( ALLSELECTED('産品'[産品類别]), CALCULATE( [銷售額], ALLEXCEPT('産品','産品'[産品類别]) ))

排名效果如下,

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)7

按兩個維度進行排名

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

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)8

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

産品 城市 綜合排名 = RANKX( CROSSJOIN( ALL('産品'[産品名稱]), ALL('客戶'[客戶城市]) ), [銷售額])

powerbi大數據分析(一個DAX函數解決PowerBI中的排名問題)9

總結

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

  • 對哪個維度進行排名,就構建一個對應的維度表,作為RANKX的第一個參數,動态就用ALLSELECTED;
  • 按什麼排名,就寫對應的表達式,作為RANKX的第二個參數。

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

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

我是采悟,PowerBI星球作者,如果你剛開始接觸PowerBI,可在微信公衆号後台回複"PowerBI",獲取《七天入門Power BI》電子書,幫你快速提升工作效率。

如果文章對你有幫助,别忘了點贊轉發哦。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved