一、单向箭头方向,从1端指向多端,代表1端可以筛选多端:
例如:无论是公司和员工谁触犯法律都会受到制裁。可是只有员工违反了自己公司的规定才会受到公司规章制度的处罚。【详见图1-2-1】
二、你还会遇到另一种情况:双向箭头
<1> 双击“连接线”,打开对话框:
<2> 切换后,即可实现双向筛选:
<3> 接下来,我们分别利用花名册和成绩表制作两个度量值
度量值公式如下:
人数 = count('花名册'[学号])
总分 = sum('成绩表'[成绩])
<4> 在报表中,做两个矩阵,进行测试
<5> 如果你将模型中的箭头方向变回“单一”,多端将无法筛选一端
现在,我们聊一聊双向箭头弊端
公司规定岂能容你个人随意更改? 【详见图1-2-2】
正义可能会迟到,但是正义永远不会缺席。
原模型:【详见图1-2-3】
这时,表1筛选表4只有一条路
当表2与表3的连线改成双向【详见图1-2-4】
这时,肉眼看表1筛选表4有两条路:
第1条路:表1直接筛选表4
第2条路:表1途径表2和表3,最后筛选表4
真的是这样吗?我们试试看
我们举个简单的例子:
如图1-2-5,你真的认为,它是在线路1和线路2中任选一条线路吗?当你将线路1的关系删除时,矩阵中的筛选失效了。线路2根本行不通。
表2筛选表3,是可以的。多端直连1端(中间无过渡表),测试通过!
表3筛选表4,是可以的。1端筛选多端,测试通过!
表1跨表2筛选表3,是可以的。因为是1端通过中间表筛选1端。
使用表1跨越表2和表3筛选表4,数据不是我们需要的
表2跨越表3筛选表4,数据不是我们需要的
也许有些人举出的案例是可以的,我故意举的反面案例,有100个成功案例,但是有一个失败的,就证明它有问题。
所以,连《The Definitive Guide to DAX》也不推荐大家使用双向连接。假设有100个杀人犯都是男性,你不能说男性都是杀人犯,这叫以偏概全,不能这样讲话,但是,如果一个路段多发事故,交管部门善意提醒,你说自己这条路走了多少年了,怎么就没出过事故呢?这叫杠精。
这里有两个问题
第一:真正做分析的时候,你关注不过来,你万一忘了这件事,他没报错,但是给了一个不是你需要的数据,造成最终结果错误!
第二:举这些例子只是告诉你尽量避免这么做。这就绕回了上节课的知识 【表关系】
我们使用表1、表3、表5建立1对多的关系,这样就避开了很多难以预知的问题
《陈翔6点半》有一集是这么演的,米线打出租车,司机是毛台,米线发现司机绕路了,毛台说我没绕,米线说你就是绕了,你绕这一个环岛多个圈了?
如果一个人是给你举例说明,这是案例,只是讲明白某一个知识点,那你不用抬扛。可是 为了防止走火入魔,建议你将表拿出来简单画一画,看看是不是能化繁为简。
就好比讲部分Excel的讲师不愿意让你接触数据库,找出各种理由阻止你,你一旦了解数据库基础知识,ExcelVBA难度直接降低30%。DAX也是同理。
你可能会认为这个案例用表中的两个多端是可以合并的,实际工作中的表不一定是这样的,没关系,只要你对自己的业务充分理解,且你的表与表之间可以连线,那他们就一定可以简化。
既然已经来到DAX世界,就不需要再用SQL的方法去处理了,后面的课程中,会一一向大家介绍DAX处理方法。
本文章视频版已同步更新S01E02
https://www.bilibili.com/video/BV1YE411E7p3