Power BI之DAX神功:第3卷第1回 計算層級占比
一、ISINSCOPE與ISFILTERED函數(shù)的區(qū)別
《DAX神功》第2卷第20回 ISFILTERED函數(shù)
語法:ISFILTERED(表或列)
滿足條件:指定表或指定表指定列被篩選時? ? 返回:True
《PowerBI火力全開》筆記13.2 ISINSCOPE函數(shù)
語法:ISINSCOPE(列)
滿足條件:同時滿足該列處于層級結(jié)構(gòu)且被篩選時? 返回:True

我們使用《孫興華講PowerBI火力全開》課件打包中的 13.xlsx?演示


【度量值】ISINSCOPE = ISINSCOPE('商品表'[商品名稱])
【度量值】ISFILTERED = ISFILTERED('商品表'[商品名稱])

商品名稱滿足:被篩選 and 處于層級之內(nèi) , 所以返回True

現(xiàn)在我們分別?
現(xiàn)在我們分別使用ISINSCOPE函數(shù)對【產(chǎn)品類別】和【商品名稱】進行測試:
【度量值】ISINSCOPE商品名稱 = ISINSCOPE('商品表'[商品名稱])
【度量值】ISINSCOPE商品類別 = ISINSCOPE('商品表'[產(chǎn)品類別])

分開寫看著不舒服,我們使用任天堂專用函數(shù)Switch把它們寫在一起:
放在一起后的效果 = SWITCH(TRUE(),
? ? ISINSCOPE('商品表'[商品名稱]),"True",
? ? ISINSCOPE('商品表'[產(chǎn)品類別]),"True",
? ? "False")

先做到這里,我們回憶一下"占比專用函數(shù)"
二、"占比專用函數(shù)"?ALLSELECTED
《DAX神功》第1卷第11回?ALLSELECTED函數(shù)
ALLSELECTED函數(shù):內(nèi)部篩選全部取消(刪除),但外部篩選可以。
【度量值】總銷售 = sum('銷售表'[銷售])
【度量值】分母 = CALCULATE([總銷售],ALLSELECTED('商品表'[商品名稱]))

【度量值】占比 = DIVIDE([總銷售],[分母])

當(dāng)我篩選商品名稱時:原理詳見《DAX神功》第1卷第11回?

三、計算層級占比
【度量值】占比層級 =?
SWITCH(TRUE(),
ISINSCOPE ('商品表'[商品名稱]), DIVIDE([總銷售],CALCULATE([總銷售],ALLSELECTED('商品表'[商品名稱]))),
ISINSCOPE ('商品表'[產(chǎn)品類別]), DIVIDE([總銷售],CALCULATE([總銷售],ALLSELECTED('商品表'[產(chǎn)品類別]))),
DIVIDE([總銷售],CALCULATE([總銷售],ALLSELECTED('商品表'[商品名稱]))))

友情提示:switch函數(shù)要從內(nèi)層向外層寫,因為當(dāng)商品名稱被篩選時,產(chǎn)品類別也會被篩選,所以我們要先判斷最內(nèi)層,逐漸向外層判斷。打個最簡單的比方:《古惑仔》中一個社團有不同的層級,你想調(diào)查最頂級的大哥那是天方夜譚,壞事不一定他親自做,都是大哥安排二哥,二哥安排三哥。。。最后小弟執(zhí)行。調(diào)查也要先查小弟,讓他供出大哥。

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