RANKX函數(shù)延伸丨笛卡爾與TOPN問題(修訂)

之前呢,白茶曾經(jīng)分享過關(guān)于RANKX排名問題,但是在實際需求中,有時候我既想展示排名,但是同時我又想看看銷售前幾,該如何進行呢?這個問題就是標(biāo)題——TOPN的問題。

上圖,是白茶準備的示例文件,之前幾期經(jīng)常使用的一份銷售情況。利用SUMX函數(shù)+RELATED函數(shù)進行匯總,求出銷售金額,輸入如下代碼:

銷售金額 =
SUMX ( '銷售明細', '銷售明細'[銷售數(shù)量] * RELATED ( '產(chǎn)品表'[銷售價] ) )

結(jié)果如圖:

金額匯總完畢,接下來我們繼續(xù)編寫排名代碼如下:

絕對排名 =
IF ( HASONEVALUE ( '產(chǎn)品表'[商品名稱] ), RANKX ( ALL ( '產(chǎn)品表' ), [銷售金額] ) )

結(jié)果如下:

這時候我們發(fā)現(xiàn)了,好像排名這里,似乎有點不對勁?。扛揪褪清e的??!之前在RANKX那一期結(jié)尾的時候,白茶曾經(jīng)說過,可以多維度排名,但是當(dāng)時的前提是同一個表,可以使用ALL('表'[維度1],'表'[維度2]...)這種模式,但是這種不是一個表的維度該如何處理呢?別著急,跟著我的思路走。

這里就延伸出一個概念了,兩個表,我要兩個表的條件列相互匹配,最后形成一個交集,這個概念是不是聽起來很耳熟?沒錯,就是我們了解的笛卡爾積!

在PowerBI中,有DAX函數(shù)可以達到這種效果。

一、GENERATE函數(shù)

GENERATE函數(shù)語法如下:

DAX=
GENERATE ('表A','表B')

結(jié)果返回兩個表的叉積。它的參數(shù)只能是兩個表。

二、CROSSJOIN函數(shù)

CROSSJOIN函數(shù)語法如下:

DAX=
CROSSJOIN ('表A','表B'...)

結(jié)果是返回指定表的叉積。它可以有多個表參數(shù)。

當(dāng)然,在這里只有兩個表維度的情況下使用效果是一致的。

代碼1:

優(yōu)化絕對排名1 =
IF (
    HASONEVALUE ( '產(chǎn)品表'[商品名稱] ),
    RANKX ( GENERATE ( ALL ( '產(chǎn)品表' ), ALL ( '分店表' ) ), [銷售金額] )
)

代碼2:

優(yōu)化絕對排名2 =
IF (
    HASONEVALUE ( '產(chǎn)品表'[商品名稱] ),
    RANKX ( CROSSJOIN ( ALL ( '產(chǎn)品表' ), ALL ( '分店表' ) ), [銷售金額] )
)

將兩個代碼在數(shù)據(jù)中對比如下:

可以看得出來結(jié)果是一致的!這就說明兩種方法在這里都是適用的。

排名問題解決了,那么該繼續(xù)研究TOPN的問題了。

編寫如下代碼(這里用優(yōu)化代碼1舉例):

銷售前五 =
IF (
    HASONEVALUE ( '分店表'[分店名] ),
    CALCULATE ( [銷售金額], FILTER ( VALUES ( '產(chǎn)品表' ), [優(yōu)化絕對排名1] <= 5 ) )
)

結(jié)果如下:

結(jié)果展示沒有任何問題。

那我要是想要靈活的變動成TOPN咋弄?

繼續(xù),添加參數(shù):

修改上面的代碼:

銷售前N =
IF (
    HASONEVALUE ( '分店表'[分店名] ),
    CALCULATE (
        [銷售金額],
        FILTER ( VALUES ( '產(chǎn)品表' ), [優(yōu)化絕對排名1] <= SELECTEDVALUE ( 'TOPN索引'[TOPN索引] ) )
    )
)

添加一個切片器,結(jié)果如圖:

image

這樣就可以隨著切片器的變動,隨意調(diào)整我們想要的TOPN了。

傳送門丨:

PowerBI中的排名問題丨RANKX函數(shù)(修訂)

迭代循環(huán)丨SUMX函數(shù)(修訂)


小伙伴們?GET了么?

白茶會不定期的分享一些函數(shù)卡片

(文件在知識星球[PowerBI丨需求圈])

這里是白茶,一個PowerBI的初學(xué)者。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容