Power BI之DAX神功:答網(wǎng)友問15 Allexcept和ALL/VALUES的區(qū)別 刪除與添加篩選器
一、網(wǎng)友提問
權(quán)威指南關(guān)于本節(jié)內(nèi)容一上來就缺失公式,造成無法繼續(xù)往下看
ALLEXCEPT和ALL+VALUES函數(shù)到底有什么區(qū)別?
二、我個人的想法
這是我見過最搞笑的問題,沒有之一!
給大家舉個簡單的例子:
有如下圖一張表,讓你添加紅色字體的這一列,你會不會?這個公式書中不提供應(yīng)該沒問題吧?

三、先回答關(guān)于公式缺失的問題

【度量值】姓名列是否篩選 = ISFILTERED(Sheet1[姓名])
《DAX神功》第2卷第20回 我們講解了ISFILTERED函數(shù)
當(dāng)ISFILTERED函數(shù)指定表或指定表中的指定列被篩選時,返回True
如下圖所示,數(shù)學(xué)、語文、英語是科目字段,沒有被行標(biāo)題篩選,返回False
總計只受值的影響,我沒現(xiàn)在也沒有使用切片器,所以總計沒有被篩選,返回False
但是,張三、李四、王五是姓名,他被行標(biāo)題篩選了,返回True

現(xiàn)在,我們將分?jǐn)?shù)考慮進(jìn)來:
【度量值】總分 = sum(Sheet1[分?jǐn)?shù)])?
// 這是最基礎(chǔ)的度量值,因為現(xiàn)在只有一張表,所以任何字段都可以篩選它。如果有多張表,一端可以篩選多端,多端可以篩選自己。(使用雙向箭頭添亂的人除外)
【度量值】all姓名列總分 = CALCULATE([總分],all(Sheet1[姓名]))?
// 《DAX神功》第1卷第8回? ALL列:指定表指定列刪除內(nèi)部與外部篩選,但其它列可以篩選
【度量值】比較 = [總分]=[all姓名列]?
// 這就是你說權(quán)威指定上缺失的公式。。。。這個公式寫不寫也不影響理解

這么做的目的:例如:張三、李四、王五分別占數(shù)學(xué)總分的百分比!
如上圖所示,度量值【總分】就不用說了,本表任何字段都可以篩選?!綼ll姓名列總分】你刪除了姓名字段對其篩選,所以每個人都顯示的是這門課程的總分?jǐn)?shù)。但是你只是all姓名,不影響科目字段的篩選,所以科目字段可以篩選。--詳見《DAX神功》第1卷第8回
Ps:如果ALL表,這張表所有字段都不能篩選
四、ALLEXCEPT和ALL+VALUES函數(shù)的區(qū)別
在剛才的表中,插入一行:孫興華、化學(xué)、一班、520

我們想看到每個人每科成績占自己總分的百分比(百分比我就不算了,除法你還不會嗎?)
【度量值】
allexcept姓名列總分 = CALCULATE([總分],ALLEXCEPT('Sheet1',Sheet1[姓名]))?
// Sheet1這張表中,除了姓名列以外都刪除篩選,這是ALLEXCEPT的功能刪除姓名列以外的篩選。
all+Values總分 = CALCULATE([總分],ALL(Sheet1),VALUES(Sheet1[姓名]))?
// 《DAX神功》第1卷第21回 ALL是Calculate調(diào)節(jié)器,Values是篩選器,從左向右先執(zhí)行調(diào)節(jié)器再執(zhí)行篩選器,計值順序:Sheet1表所有列刪除篩選,Sheet1表姓名列添加篩選。
如下圖所示,ALLEXCEPT和ALL+VALUES函數(shù)結(jié)果相同:

但是,當(dāng)我在行標(biāo)題上刪除姓名,只留下科目時:

ALLEXCEPT和ALL+VALUES函數(shù)的區(qū)別 就出現(xiàn)了:

ALLEXCEPT刪除篩選 與??ALL+VALUES添加篩選
如果您想聽官腔,權(quán)威指南上的內(nèi)容足夠你消化。我不能照搬出版物的語言(微軟官方幫助文檔語法除外,語法不按微軟要求的寫就錯了),我只能說我自己的理解:
ALLEXCEPT刪除篩選:只保留姓名列的篩選,刪除了其它列的篩選。現(xiàn)在姓名列不見了,你保留的那個姓名列還有屁用呀?例如你經(jīng)營一家企業(yè),是通過給某部門領(lǐng)導(dǎo)送禮來達(dá)到目的,現(xiàn)在這個部門的領(lǐng)導(dǎo)被抓起來了,你看到的就全部是職員了,甚至你會被連帶調(diào)查,這就是自身沒有合法經(jīng)營能力使用保護(hù)傘搞歪門邪道的下場。
ALL+VALUES添加篩選:先通過ALL表篩選了Sheet1表中所有字段的篩選,再增加一個姓名列的篩選。例如你經(jīng)營一家企業(yè),本分誠信做生意,身正不怕影子斜,每次到某部門辦事時,你管他誰當(dāng)這個部門的領(lǐng)導(dǎo),如果原領(lǐng)導(dǎo)被抓了,上方肯定會派新領(lǐng)導(dǎo)來接替原領(lǐng)導(dǎo)的工作。新領(lǐng)導(dǎo)已經(jīng)存在,雖然行標(biāo)題上沒有姓名列,只能說原領(lǐng)導(dǎo)不再擔(dān)任,新領(lǐng)導(dǎo)接替,你不認(rèn)識新領(lǐng)導(dǎo),但是他已經(jīng)領(lǐng)導(dǎo)此部門工作,實現(xiàn)了篩選功能。

但是,沒送禮的跟送禮的比,可能在某些方面,有油水的工程都給了送禮的,ALLEXCEPT執(zhí)行速度也可能在某些方面會快于ALL+VALUES,但是ALL+VALUES是動態(tài)的相對更安全。
假設(shè)張三是收費講PowerBI或PowerQuery的人,張三認(rèn)為免費講課的人會影響他的生意,于是張三通過關(guān)系停用免費講課的人分享的課件和筆記鏈接,也許2021年張三沒被抓,誰能保證他2022年就沒事嗎?我建議:別做違法的事情,好好做人,睡覺踏實。@哈羅雷球白夕尚*

《孫興華講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