Power BI之DAX神功:第4卷第20回 計算TOP N%與TOPN函數(shù)無關(guān)
正如標(biāo)題所示,計算TOP N%與TOPN函數(shù)無關(guān),但是與我們上節(jié)課的知識密不可分。
需求:銷售量在前30%的商品有多少個,分別賣了多少件?
我們還延用上節(jié)課的表做案例:這兩張表我上節(jié)課提供了VBA代碼你可以復(fù)制運行得到

一、DAX方法計算前N%銷售

【1】回憶累積銷量怎么寫
詳見《DAX神功》第1卷第14回
返回結(jié)果:

【2】累計百分比
剛才我們寫累計銷量時,是不是要先有銷量呀?累計占比,你是不是要先有占比呀?
返回結(jié)果:

我們?yōu)榱苏故窘Y(jié)果,所以將占比和累計占比分開寫的,實戰(zhàn)中寫到一個度量值下就可以了,但是你要注意寫法:詳見《DAX神功》答網(wǎng)友問03
【3】計算前N%銷售
先說思路:

為什么要用少量的數(shù)據(jù)做測試,因為一眼就能看出對錯。如果我們需要前70%的商品,結(jié)果就是D、E、F,我們找到76.92%這個值,篩選小于這個值的就可了。

現(xiàn)在前N%就可以計算出來了:
返回結(jié)果就是:前70%的商品銷售

Ps: 如果你想計算前70%的商品數(shù)量,將度量值【總銷量】改成【總數(shù)量】=CountRows('商品表')
二、利用參數(shù)寫成動態(tài)
【1】創(chuàng)建參數(shù)表
詳見《DAX神功》第2卷第6回:我不習(xí)慣用建模中的新建參數(shù),GENERATESERIES和構(gòu)造表函數(shù)已經(jīng)夠我用了
返回表:

放到切片器中:改字段名詳見《DAX神功》第1卷第3回

【2】計算前N%的數(shù)量
這個公式不用解釋,上面我們求的是前N%的銷售,現(xiàn)在改成數(shù)量,就是改了一個度量值。只不過將0.7寫成了SELECTEDVALUE('參數(shù)表'[Value])),切片器選的是什么這里就是什么,動態(tài)了吧
【3】利用《DAX神功》第4卷第19回的知識寫今天的案例
公式解讀:
var x : 當(dāng)我們切片器上篩選前N%時,這里會顯示有幾個,有幾個就等于是前幾名?
var tb:對商品表[商品名稱]排名,篩選小于等于x的那張表,假設(shè)是前5名的表
var z :用這張表(假設(shè)是前5名)篩選度量值【總銷量】
var y :? 計算這張(假設(shè)是前5名)的銷售合計
return: 如果參數(shù)表篩選了且放在矩陣中商品表[商品名稱]只有一個值,我們就顯示度量值z,否則顯示度量值y,否則就是沒有篩選時,就顯示度量值【總銷量】。

《孫興華講PowerBI火力全開》PowerBI必學(xué)課程
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函數(shù))、PowerQuery(M函數(shù))、Python辦公自動化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等
https://www.bilibili.com/read/cv10222110