Power BI之DAX神功:第3卷第16回 表的扩展行为与筛选行为的区别
一、表的筛选行为

今天我手贱,把单向箭头改成了双向箭头

如下图所示:

新建以下度量值:
我们将其放到矩阵上:

看似一端和多端可以互相筛选了,但是《DAX神功》第1卷第2回 我们讲了双向箭头的弊端,如下图所示:案例来自《DAX神功》第1卷第2回

表2筛选表3,是可以的。多端筛选1端(双向箭头),测试通过!
表3筛选表4,是可以的。1端筛选多端(本来就可以),测试通过!
表1跨表2筛选表3,是可以的。因为表2与表3双向箭头,筛选过程首先符合箭头方向,其次他们都是1对多关系。你观察表1和表2是一对多,表3和表2是一对多,一旦箭头方向放开,就可以筛选。
使用表1跨越表2和表3筛选表4,数据不是我们需要的。因为在这个过程中,虽然箭头方向符合要求,但是这条线路中有两个多端,其中表2和表4,组成了多对多关系,造成结果不对的原因不是箭头方向,是多对多关系问题。
表2跨越表3筛选表4,数据不是我们需要的。同理,表2是多端,表4是多端,即便箭头方向符合要求,多端也无法筛选多端。
以我们现在掌握的知识:箭头方向符合要求时,一端可以筛选多端,多端可以筛选一端,一端可以筛选一端,多端可以筛选自己。但是在任何线路中,不要出现2个或以上的多端表。
Ps: 早就提示过大家,避免使用双向箭头,在分析中,你很难照顾这些关系,除非你有这个能力。
二、表扩展行为
友情提示:表的扩展行为大多数情况下,有提示!
相当于是拿到成绩表的扩展表,在这张扩展表中,通过summarize取姓名列不重复值构成的表

返回结果:

上面的案例我不再解释,你能听懂!
扩展表原理:当关系是一对多时,多端表将有关系的1端表所有列都V过来
但是,一端不能V多端!不管你是不是双向箭头!就是筛选行为和扩展行为的区别!
能否筛选:1看箭头,2看内部有无多对多关系
能否扩展:当关系是1对多时,无论是否双向箭头,都是从多端扩展1端所有列。
这种情况一般都有提示,例如使用summarize或related时:
虽然我是双向箭头,但是我使用summzrize时,只要使用了学生表,写上逗号后,他根本就不会弹出其它表。因为他没有其它表的相关列。如下图所示

不相信我们可以试试,我使用summzrize时,使用了成绩表,它会将成绩表本身和有相关列的表都展示出来。

三、表扩展行为的特例


《DAX神功》第3卷第12回 我们讲了特殊情况下的表扩展,一对一关系下默认双向箭头,这时成绩表的扩展表包含学生表所有列,学生表的扩展表包含成绩表所有列。咱们使用刚才讲的summarize提示功能再来测试一下。

如上图所示,summarize使用成绩表时,提示了所有相关列所在的表

如上图所示,summarize使用学生表时,提示了所有相关列所在的表
忠告:还是那句话,表尽量少(数据清洗搞定表数量),关系就是一对多,箭头就是单向。如果你不听上述忠告,不是大神便是笑话。

《孙兴华讲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函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等