Power BI之DAX神功:第3卷第15回 理解活動(dòng)關(guān)系慎用表篩選
上節(jié)課文末,我們提到了在擴(kuò)展表中防火防盜防虛線(關(guān)系)
我們利用《DAX神功》第1卷第21回的案例


建立下面兩個(gè)度量值:
返回結(jié)果:

以上案例來自《DAX神功》第1卷第21回?當(dāng)時(shí)我們已經(jīng)將原理進(jìn)行了證明
我們在《DAX神功》第1卷第21回講了計(jì)算順序:
Calculate(計(jì)算器,篩選器或調(diào)節(jié)器)? // 在本例中先調(diào)節(jié)器,后計(jì)算器,使用USERELATIONSHIP建立了新的關(guān)系,屏蔽了舊的關(guān)系,在新的關(guān)系上使用count('Sheet1'[姓名])進(jìn)行計(jì)算。

很久很久以前,老師讓學(xué)生們畫蛇,有一個(gè)名叫“DAX原理”的孩子很快就畫完了,他抬頭看看四周,看到大家剛畫完一半,于是心生優(yōu)越感,在自己畫的蛇添了四只腳。


思考,要激活虛線關(guān)系并生成一張表,filter行嗎?不行!因?yàn)樘摼€關(guān)系USERELATIONSHIP是Calculate的調(diào)節(jié)器,如果你想返回表,需要用Calculatetable
返回結(jié)果:

但是,在Calculate中使用表篩選和新建表可不是一回事,使用表篩選,我們引用的是擴(kuò)展表。由于日期表與Sheet1是一對多關(guān)系。

如果我們將公式寫成了:
但是,我問你,你的USERELATIONSHIP是誰的調(diào)節(jié)器?
是Calculatetable的調(diào)節(jié)器!當(dāng)USERELATIONSHIP在Calculatetable中工作結(jié)束后,通過Calculatetable生成了一張表。外層的calculate是什么關(guān)系?是實(shí)線關(guān)系!
總結(jié):用虛線生成的擴(kuò)展表,篩選實(shí)線生成的擴(kuò)展表,再計(jì)算人數(shù)!
這里你要與 Calculate+Filter/ALL區(qū)分:
ALL是Calculate的調(diào)節(jié)器,但是在Filter中ALL是表函數(shù),當(dāng)Filter/ALL放到Calculate中ALL才起到Calculate調(diào)節(jié)器的作用。

返回結(jié)果:為什么返回結(jié)果是空,你心里明白不行,要說明白

我們分別模擬實(shí)線關(guān)系激活或虛線關(guān)系激活時(shí)的Sheet1擴(kuò)展表:

通過上圖你能看出來什么?我用虛線生成的擴(kuò)展表篩選實(shí)線生成的擴(kuò)展表,它們每一行都不同(表篩選當(dāng)然要看所有列)。最后篩選出來的結(jié)果是空表。所以你外層的Calculate計(jì)算出的結(jié)果都是BLANK()
是不是這樣的,我們來證明一下:
我們對Sheet1增加一行,孫興華,2021/1/3來上班,看到同事是哈羅雷球白夕尚*,完了芭比q了,于是當(dāng)天就離職了。

現(xiàn)在,用虛線生成的擴(kuò)展表去篩選實(shí)線生成的擴(kuò)展表:得到下表

再計(jì)算姓名有幾個(gè)?答案是:1

不過,度量值的名字叫【表篩選離職】就不太好了,建議改成:離職與入職在同一天的人數(shù)
今天的知識總結(jié)成一句話:調(diào)節(jié)器好比女朋友,是誰的就是誰的!
張三((李四,李四女朋友),張三女朋友)

《孫興華講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辦公自動(dòng)化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等
https://www.bilibili.com/read/cv10222110