Power BI之DAX神功番外篇:第2回 為什么這個度量值一端和多端均可篩選
一、網(wǎng)友提問:

網(wǎng)友使用的是《孫興華講PowerBI火力全開》
07.ALL函數(shù)、Allexcept函數(shù)、ALLSELECTED函數(shù) ? 中的案例
https://www.bilibili.com/video/BV1YE411E7p3
二、解答問題
我們將案例的數(shù)據(jù)量縮小,來舉例:


【度量值】
銷售表中的商品總數(shù) = CALCULATE(COUNTROWS('商品表'),'銷售表')
將公式拆分:
COUNTROWS('商品表') ? ?// 因為商品表里有4行,返回4
當Calculate使用篩選器是 '銷售表' ?時,銷售表中有幾種商品? 3種?
我們將銷售表中有的商品從 ?COUNTROWS('商品表') ?中篩選出來,結(jié)果就是3
【1】將度量值放到矩陣中,行標題使用商品表中的商品名稱

【度量值】
銷售表中的商品總數(shù) = CALCULATE(COUNTROWS('商品表'),'銷售表')
返回結(jié)果是3個品種
這3個品種分別是白菜、茄子、土豆,每個品種都是1
一對多關(guān)系,不管你的COUNTROWS來自哪張表,1端可以篩選自己,也可以篩選多端。
【2】將度量值放到矩陣中,行標題使用銷售表中的商品名稱

可能很多人會有疑問,為什么也可以篩選呢?
多端不是只能篩選自己,不能篩選一端表嗎?
【度量值】
銷售表中的商品總數(shù) = CALCULATE(COUNTROWS('商品表'),'銷售表')
分析:
COUNTROWS('商品表') ? ?// 返回的的確是一端表的行數(shù)
如果你將公式寫成
銷售表中的商品總數(shù) = CALCULATE(COUNTROWS('商品表'))
放到矩陣中就不能篩選了:

那為什么我這樣寫就可以篩選呢?
首先,我們看一下另一個公式:
銷售表中的商品總數(shù)固定值 = CALCULATE(COUNTROWS('商品表'),all(銷售表'))
分析公式:
COUNTROWS('商品表') ? //返回商品表中的所有行,結(jié)果是4
all(銷售表') ? ?//取消銷售表的篩選,需要銷售表中所有商品在COUNTROWS('商品表')中的固定值,結(jié)果是3,而這個3,因為使用了all(表) 所有字段內(nèi)部篩選器和外部篩選都無效了。
那結(jié)果就出來了,當度量值沒有使用all(表),而是直接使用 ‘表’ 就是允許這張表篩選。
所以下面這個度量值,即可以被商品表篩選也可以被銷售表篩選。
【度量值】
銷售表中的商品總數(shù) = CALCULATE(COUNTROWS('商品表'),'銷售表')
友情提示:這些原理知識需要有一定的基礎和興趣再來學習,學完《孫興華講PowerBI火力全開》以后,再來學習《孫興華講PowerBI之DAX神功》效果更加。

《孫興華講PowerBI火力全開》PowerBI必學課程
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等等