PowerBI之DAX神功:答網(wǎng)友問01.ALLEXCEPT函數(shù)應(yīng)用
很多網(wǎng)友,咨詢PowerBI我并沒有回復(fù),這里有兩個(gè)原因:
1.關(guān)于圖表的問題:我工作中基本不做圖,只分析結(jié)果,領(lǐng)導(dǎo)不好糊弄,你云叔和化騰哥哥應(yīng)該也是有著相同的愛好。這方面我個(gè)人水平有限幫不到你。
2.關(guān)于業(yè)務(wù)的問題:隔行如隔山,你的表通過學(xué)習(xí)也許我能看懂,但是需要花費(fèi)時(shí)間去理解你的業(yè)務(wù),凡是10分鐘我不能理解的表,我就不去研究他了。即便你是某知名互聯(lián)網(wǎng)公司花重金請(qǐng)的財(cái)務(wù)總監(jiān),現(xiàn)在讓你去做刑偵分析,跟換個(gè)小學(xué)生去沒有區(qū)別,結(jié)果就是什么都看不懂唄。
我在視頻中使用的表都非常簡(jiǎn)單,我講什么就用什么表,方便大家理解具體知識(shí)點(diǎn),你如果哪里不會(huì),問哪里就好了,但是將你復(fù)雜的模型發(fā)過來,我浪費(fèi)時(shí)間去研究不值得,我研究出來做視頻也沒有太多人愿意看,他們會(huì)覺得具體業(yè)務(wù)與自己無關(guān)且不易理解。也許在互聯(lián)網(wǎng)上,有一些講師能幫到你,因?yàn)槟銈兟殬I(yè)對(duì)口,例如都是財(cái)務(wù)業(yè)務(wù)自然就是互通的。
凡是,提問者將問題轉(zhuǎn)換成小學(xué)生能聽懂的語言(小學(xué)生無法解決問題,但是通過你的講解他們能看懂你的表),我都會(huì)盡力幫助你。當(dāng)你無法轉(zhuǎn)化語言時(shí),你的問題可能不是來自計(jì)算機(jī)軟件上面,而是你的業(yè)務(wù)不熟練。
為什么羅老師講法,大家都愛聽?再換個(gè)其它人給你講,也許你就睡著了。語言表達(dá)能力很重要。

提問粉絲:**雨雪
提問時(shí)間:2021年8月7日



以上內(nèi)容,是粉絲真實(shí)提問,并不是我從國(guó)外哪個(gè)網(wǎng)站上看到個(gè)案例在里這講。
在講課之前,我還是要重申那句話:
世界上本沒有路,走的人多了便成了路。
DAX本沒有原理,公式推導(dǎo)過程就是原理。

網(wǎng)友發(fā)過來的表格,已經(jīng)是人為精簡(jiǎn)過,小學(xué)生都能看懂的數(shù)據(jù)了。不過,我又在這個(gè)基礎(chǔ)上精簡(jiǎn)了記錄數(shù),目的是可以實(shí)現(xiàn)口算,判斷對(duì)錯(cuò)。如下圖所示:
用戶需求:每天按類別的銷售數(shù)量求占比

我們新建一個(gè)度量值,并將它放在表上:
(因?yàn)榫仃嚥荒懿⒘蟹艃蓚€(gè)行標(biāo)題進(jìn)行篩選)
總銷售 = sum('Sheet1'[銷售])
這個(gè)度量值所有的字段都可以篩選它

我們?cè)僮鲆粋€(gè)度量值:
all表 = calculate([總銷售],all('Sheet1'))
這個(gè)度量值所有的字段都不能篩選它


現(xiàn)在你可能會(huì)想,我問的是ALLEXCEPT,你給我講ALL干什么?記得電視劇《大宅門》,白景琦與女兒白佳莉的對(duì)話嗎?白佳莉說中醫(yī)過時(shí)了,戰(zhàn)場(chǎng)上救死扶傷要依靠西醫(yī),白景琦說西醫(yī)治標(biāo)不治本,你們就會(huì)哪疼治哪!白佳莉反問道:難到腦袋疼還治腳嗎?白景琦說對(duì)啦,有的時(shí)候腦袋疼就需要治腳。
《DAX神功》中西醫(yī)結(jié)合
問ALLEXCEPT函數(shù),需要理解ALL,只要理解了ALL函數(shù),ALLEXCEPT函數(shù)秒懂,如果不懂ALL函數(shù),那么ALLEXCEPT函數(shù)學(xué)了也沒用。頭痛有的時(shí)候還真的是治腳。

現(xiàn)在我們使用ALL(列)
all日期 = CALCULATE([總銷售],all(Sheet1[日期]))
只有日期不能篩選,但是其它字段可以篩選


仔細(xì)觀察,當(dāng)類別可以篩選時(shí),紅25,黃45,藍(lán)30
【總銷售】是可以被所有字段篩選,現(xiàn)在我們將日期放到篩選行上

由于使用了all(日期)取消了對(duì)日期字段的篩選,只有類別字段可以篩選它,現(xiàn)在兩個(gè)度量值相除可以求占比了。

因?yàn)槟悻F(xiàn)在用的不是矩陣,是表,所以這里會(huì)有一個(gè)誤區(qū),當(dāng)你將表換成矩陣時(shí),值也可以做行標(biāo)題。如下圖:
這時(shí)你會(huì)發(fā)現(xiàn),銷售仍然可以篩選 all(日期)

如果,我不想讓取消銷售的篩選功能:
all銷售 = CALCULATE([總銷售],all(Sheet1[銷售]))

如果我想看每個(gè)類別,每日的銷售占比,我應(yīng)該只讓類別進(jìn)行篩選,取消其它列的篩選:
all銷售和日期 = CALCULATE([總銷售],all(Sheet1[銷售],Sheet1[日期]))

由于本案例只有3個(gè)列,以后列多了,怎么辦?
ALLEXCEPT = CALCULATE([總銷售],ALLEXCEPT('Sheet1',Sheet1[類別]))

現(xiàn)在你再去算占比,就達(dá)到了要求,每天按類別的銷售數(shù)量占比。其實(shí)這些知識(shí)我在《DAX神功》第8課都講了,只是講的不是你現(xiàn)在的表格。

所以,數(shù)學(xué)是多么的重要?
《The Definitive Guide to DAX》這本書大家都能買得起,可是不運(yùn)用數(shù)學(xué)的邏輯思維,大家真的能理解嗎?
為什么孫興華在2020年不講原理?因?yàn)镈AX沒有原理,公式的推導(dǎo)過程才是原理。

