Power BI之DAX神功:第3卷第16回 表的擴(kuò)展行為與篩選行為的區(qū)別
一、表的篩選行為

今天我手賤,把單向箭頭改成了雙向箭頭

如下圖所示:

新建以下度量值:
我們將其放到矩陣上:

看似一端和多端可以互相篩選了,但是《DAX神功》第1卷第2回?我們講了雙向箭頭的弊端,如下圖所示:案例來自《DAX神功》第1卷第2回?

表2篩選表3,是可以的。多端篩選1端(雙向箭頭),測試通過!
表3篩選表4,是可以的。1端篩選多端(本來就可以),測試通過!
表1跨表2篩選表3,是可以的。因?yàn)楸?與表3雙向箭頭,篩選過程首先符合箭頭方向,其次他們都是1對多關(guān)系。你觀察表1和表2是一對多,表3和表2是一對多,一旦箭頭方向放開,就可以篩選。
使用表1跨越表2和表3篩選表4,數(shù)據(jù)不是我們需要的。因?yàn)樵谶@個(gè)過程中,雖然箭頭方向符合要求,但是這條線路中有兩個(gè)多端,其中表2和表4,組成了多對多關(guān)系,造成結(jié)果不對的原因不是箭頭方向,是多對多關(guān)系問題。
表2跨越表3篩選表4,數(shù)據(jù)不是我們需要的。同理,表2是多端,表4是多端,即便箭頭方向符合要求,多端也無法篩選多端。
以我們現(xiàn)在掌握的知識:箭頭方向符合要求時(shí),一端可以篩選多端,多端可以篩選一端,一端可以篩選一端,多端可以篩選自己。但是在任何線路中,不要出現(xiàn)2個(gè)或以上的多端表。
Ps: 早就提示過大家,避免使用雙向箭頭,在分析中,你很難照顧這些關(guān)系,除非你有這個(gè)能力。
二、表擴(kuò)展行為
友情提示:表的擴(kuò)展行為大多數(shù)情況下,有提示!
相當(dāng)于是拿到成績表的擴(kuò)展表,在這張擴(kuò)展表中,通過summarize取姓名列不重復(fù)值構(gòu)成的表

返回結(jié)果:

上面的案例我不再解釋,你能聽懂!
擴(kuò)展表原理:當(dāng)關(guān)系是一對多時(shí),多端表將有關(guān)系的1端表所有列都V過來
但是,一端不能V多端!不管你是不是雙向箭頭!就是篩選行為和擴(kuò)展行為的區(qū)別!
能否篩選:1看箭頭,2看內(nèi)部有無多對多關(guān)系
能否擴(kuò)展:當(dāng)關(guān)系是1對多時(shí),無論是否雙向箭頭,都是從多端擴(kuò)展1端所有列。
這種情況一般都有提示,例如使用summarize或related時(shí):
雖然我是雙向箭頭,但是我使用summzrize時(shí),只要使用了學(xué)生表,寫上逗號后,他根本就不會(huì)彈出其它表。因?yàn)樗麤]有其它表的相關(guān)列。如下圖所示

不相信我們可以試試,我使用summzrize時(shí),使用了成績表,它會(huì)將成績表本身和有相關(guān)列的表都展示出來。

三、表擴(kuò)展行為的特例


《DAX神功》第3卷第12回 我們講了特殊情況下的表擴(kuò)展,一對一關(guān)系下默認(rèn)雙向箭頭,這時(shí)成績表的擴(kuò)展表包含學(xué)生表所有列,學(xué)生表的擴(kuò)展表包含成績表所有列。咱們使用剛才講的summarize提示功能再來測試一下。

如上圖所示,summarize使用成績表時(shí),提示了所有相關(guān)列所在的表

如上圖所示,summarize使用學(xué)生表時(shí),提示了所有相關(guān)列所在的表
忠告:還是那句話,表盡量少(數(shù)據(jù)清洗搞定表數(shù)量),關(guān)系就是一對多,箭頭就是單向。如果你不聽上述忠告,不是大神便是笑話。

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