Power BI之DAX神功:第4卷第18回 TopN函數初體驗
《DAX神功》第2卷第5回至第9回 我們詳細講解了RANKX函數,那RANKX和TOPN函數的區(qū)別是什么?
一、RANKX函數與TOPN函數的區(qū)別
RANKX函數的工作:世界杯四強球隊排名是:第1名、第2名、第3名、第4名
TOPN函數的工作:給我世界杯四強的名單:A隊、B隊、C隊、D隊(誰是第1不知道)


【1】RANKX函數:是迭代函數

【2】TOPN函數:是表函數
語法:TOPN(前幾名,對哪張表排序,用來排序的度量值或表達式,默認降序/ASC升序)
Ps: 第3參數和第4參數可以循環(huán)使用
它的計算順序非常簡單:

返回結果:

TOPN返回的表是第2參數所有列,如果你想選擇需要的列,可以使用all、values、distinct、summarize等函數實現
返回結果:

二、TOPN第四參數千萬別誤會
默認是降序,這里的升序和降序,與返回表無關,它指的是分配度量值之后取最大值(降序)的前2名還是最小值(升序)的前2名。當我們使用ASC時返回如下:

返回表的順序:源表什么順序,返回表就是什么順序。ORDER BY在DAX中只能用在查詢語句中,如果我想實現下表的樣子:

我們將新建表公式寫成這樣:詳見《DAX神功》第4卷第16回
如果我們要計算前2名的銷量(方法有很多種),可以寫成這樣:
返回結果:

三、TOPN附加排序規(guī)則

我們將銷售表的【銷量】稍做修改,再去運行TOPN新建表代碼:
因為A和B并列第2,所以這里所謂的前2名,就是第1名和并列第2名,一共3個商品

那么土豆和茄子我只保留其一,是可以使用TOPN多列排序,不會出錯。《權威指南》上有這樣一句話:TOPN總是在有相同值的情況下返回多行。你來回答我,表格中哪個列沒有相同值?主鍵列!只要這張表有主鍵,你使用多列排序就不會出錯。
計算過程:

返回結果:返回表的排序問題你就不用管了,因為TOPN返回一個集合,你就當他沒順序吧。

為什么要這樣做,你一定要清楚!例如:張三銷售200萬元,李四銷售150萬元,王五銷售150萬元,如果你不去掉李四和王五的一個人,你告訴領導:前2名銷售金額累計500萬元,第1名銷售200萬元,領導說哪里來的文盲?你可以去辦辭職手續(xù)了。
還沒被辭退的小伙伴們,更多TOPN知識,我們下節(jié)課再說!

《孫興華講PowerBI火力全開》PowerBI必學課程
https://www.bilibili.com/video/BV1qa4y1H7wp
《DAX神功》文字版合集:
https://www.bilibili.com/read/readlist/rl442274
《DAX神功》視頻版合集:
https://www.bilibili.com/video/BV1YE411E7p3
《DAX神功番外篇》文字版合集:
https://www.bilibili.com/read/readlist/rl478271
PowerBI(DAX函數)、PowerQuery(M函數)、Python辦公自動化、Python爬蟲、Python數據分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等
https://www.bilibili.com/read/cv10222110