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

一、DAX方法計(jì)算前N%銷售

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

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

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

為什么要用少量的數(shù)據(jù)做測試,因?yàn)橐谎劬湍芸闯鰧﹀e(cuò)。如果我們需要前70%的商品,結(jié)果就是D、E、F,我們找到76.92%這個(gè)值,篩選小于這個(gè)值的就可了。

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

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

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

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

《孫興華講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辦公自動(dòng)化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等
https://www.bilibili.com/read/cv10222110