除了DAX,原來還可以利用PowerQuery中的M進(jìn)行排名?
時間:2023-06-26 08:30:01 | 來源:網(wǎng)站運營
時間:2023-06-26 08:30:01 來源:網(wǎng)站運營
除了DAX,原來還可以利用PowerQuery中的M進(jìn)行排名?:
我的書《Power BI商業(yè)數(shù)據(jù)分析》已出版,幫你從0到1,輕松入門:以前介紹過利用RANKX函數(shù)來進(jìn)行排名,在某些情況下,需要對PowerQuery中的數(shù)據(jù)直接進(jìn)行排名,那么如何用PowerQuery來計算排名呢?
DAX函數(shù)中有RANKX來計算排名(參考:這幾個示例,幫你深入理解RANKX排名),其實PowerQuery中的也有一個M函數(shù)可以排名:Table.AddRankColumn。
這個M函數(shù)可以為表添加一個排名列,下面通過幾個簡單的例子,來熟悉這個函數(shù)的用法。
模擬數(shù)據(jù)如下:
假如要對這個表添加個排名列,對類別按照金額進(jìn)行排名,先添加個步驟,來輸入M公式。
關(guān)于PowerQuery中添加步驟,有兩種方式:
1、點擊編輯欄旁邊的fx
2、點擊上一個步驟,右鍵>插入步驟后
知道了如何插入步驟以后,就在插入的步驟中,在編輯欄中輸入:
Table.AddRankColumn( 更改的類型, "排名",{"金額"})
函數(shù)中第一個參數(shù)更改的類型,是上一個步驟的名稱,第二個參數(shù)是新列的列名,第三個參數(shù),是排名依據(jù)。
然后就自動添加了一列排名列。
通過這個M函數(shù),我們就得到了一列排名,不過這個排名是按照金額升序排列的,也就是金額最小的排名第一。
如果想讓金額最大的排名第一,可以這樣改:
Table.AddRankColumn(
更改的類型,
"排名",{"金額",Order.Descending}
)
這樣就得到一列常見的排名,數(shù)據(jù)最大的排第一。
上面的排名數(shù)字是跳躍的,這個數(shù)據(jù)有兩個類別并列第三,則下一個排名從5開始。
如果想讓下一個排名不跳躍,即使有并列的情況,也是連續(xù)的排名,還可以再添加個參數(shù)來調(diào)整排名。
Table.AddRankColumn(
更改的類型,
"排名",{"金額",Order.Descending},[RankKind=RankKind.Dense]
)
這樣就得到了連續(xù)的排名。
這個函數(shù)不僅是對根據(jù)一列進(jìn)行排名,還可以按照多個字段來排名,假如按照金額列和數(shù)量列來排名,如果金額相等,則按數(shù)量來排名,就可以這樣來寫:
Table.AddRankColumn(
更改的類型,
"排名",{{"金額",Order.Descending},{"數(shù)量",Order.Descending}}
)
這樣就實現(xiàn)了按照兩個字段來排名,如果按更多的字段排名,還可以繼續(xù)添加字段。
通過以上幾個示例,你應(yīng)該了解了如何在PQ中計算排名,不過這里計算的排名都是靜態(tài)的,如果你想在報告中實現(xiàn)動態(tài)的排名,還是應(yīng)該用RANKX函數(shù)寫度量值來實現(xiàn)。
更多推薦:
喜歡別忘了點贊哦~
掌握一個技能專研一個領(lǐng)域成為更好的自己