[已解决] [DAX]筛选主键会覆盖同表其他列的筛选吗

  [复制链接]
查看297052 | 回复197 | 2020-9-16 06:03:18 | 显示全部楼层 |阅读模式
以下内容出自《DAX圣经》第238页:
9916012147541.jpg
这两段话出现于时间智能函数的介绍篇,第一段说如果Sales表和Date表相关联,且Date表主键为Date列,那么对Date列使用时间智能函数会清除Date表的其他筛选器。在SQLBI中可以找到相同的说明(时间智能函数会自动为日期表添加ALL条件):
https://www.sqlbi.com/articles/time-intelligence-in-power-bi-desktop/

但是第二段Note又说,当任意两个表是一对多关系,那么对一端的表的主键列使用筛选器会覆盖非主键列的筛选,是这个意思吗?为什么我试验下来无效呢?
回复

使用道具 举报

fdy | 2020-9-16 06:12:18 | 显示全部楼层
一楼的表述有问题,不应当说“主键”而应当说“定义一对多关系的一端的列”,因为主键不一定就是关系列。
不过不影响问题成立,根据我的测试,在类似表A(1)→表B(*)(通过关系列X)这样的关系中,测试度量值:
  1. =CALCULATE(CALCULATE(COUNTROWS(表B),[表A]列X=值1),[表A]列Y=值2,[表A]列Z=值3)
复制代码


只有在表A是日期表(即列X是日期列)的时候,书中的结论才成立(列Y和列Z筛选会无效,只剩列X筛选),当表A非日期表时结论不成立(列Y和列Z筛选仍然有效,与列X叠加)。
回复

使用道具 举报

lisir | 2020-9-16 06:13:18 | 显示全部楼层
一楼的表述有问题,不应当说“主键”而应当说“定义一对多关系的一端的列”,因为主键不一定就是关系列。
...


经过验证书中表述确实不准确,只对日历表有这样的情形。
回复

使用道具 举报

kklau | 2020-9-16 06:20:19 | 显示全部楼层
经过验证书中表述确实不准确,只对日历表有这样的情形。


谢谢大佬印证,如果这段Note属实,那么对DAX来说肯定是一条极其重要的特性,结果居然是写错了,确实有点匪夷所思。
在SQLBI中,作者承认书中的Allselected部分写错了,但是这一条我找不到相关说明。
回复

使用道具 举报

Randex831004 | 2020-9-16 06:25:19 | 显示全部楼层
谢谢大佬印证,如果这段Note属实,那么对DAX来说肯定是一条极其重要的特性,结果居然是写错了,确实有点 ...


第一版的勘误(包含上面这个)在中文版圣经里已经做了备注
回复

使用道具 举报

yuhonghong111 | 2020-9-16 06:28:19 | 显示全部楼层
第一版的勘误(包含上面这个)在中文版圣经里已经做了备注


谢谢,第二版发行的时候会同步第二版的中文版吗
回复

使用道具 举报

tanyq8290 | 2020-9-16 06:35:19 | 显示全部楼层
谢谢,第二版发行的时候会同步第二版的中文版吗


这个不会,翻译需要时间
回复

使用道具 举报

~烟~ | 2020-9-16 06:39:20 | 显示全部楼层
这个不会,翻译需要时间

中文版的dax圣经啥时候能上市啊?
回复

使用道具 举报

fwd | 2021-4-27 15:18:09 | 显示全部楼层
这个视频很不错,推荐一下
回复

使用道具 举报

成哥 | 2021-4-28 16:27:32 来自手机 | 显示全部楼层
介是神马?!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则