• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

游客您好
Lv.2 注册会员
627号会员,139活跃度,2018/11/14 加入学习
  • 75发帖
  • 7主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
优秀讲师更多
课堂交流更多

[已解决] 此Filter的详细计算流程?

[复制链接]
10002674 发表于 2020-9-16 05:14:04 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
场景PowerBI,单Data表模型,外部可视化切片包含Data[Time]和Data[Type]="B",求问以下两种度量值在计算流程上有何不同:
  1. Correct = CALCULATE(DISTINCTCOUNT(Data[Name]),FILTER(Data,Data[Type]="A"))
复制代码
  1. Wrong = CALCULATE(DISTINCTCOUNT(Data[Name]),FILTER(ALL(Data[Type]),Data[Type]="A"))
复制代码
我理解的Correct流程:

1.Calculate计算外部筛选上下文,得到Data子集1(筛选Time与Type="B");

2.代入外部上下文,计算Filter,此时Filter拿到的Data就是子集1,在此基础上叠加Type="A"(维持Time筛选,将Type改为同时筛选"B"和"A"),由于Type有且仅有一种,Filter返回空集;
3.Calculate在空集中计算参数一,得到Blank()。

我理解的Wrong流程:
1.Calculate计算外部筛选上下文,得到Data子集1(筛选Time与Type="B");

2.代入外部上下文,计算Filter,由于参数一的写法是ALL(单列),此时的参数一是所有Type的去重复集合,同时ALL清除了Type="B"的筛选,改为Type="A",由于各列独立筛选,因而Time筛选没有变化(即此时筛选Time与Type="A"),得到子集2;
3.Calculate在子集2中计算结果,得到同时满足Time与Type="A"的不重复Name个数。

PS:筛选Time是通过切片器选择的时间段,筛选Type则是通过在可视化中点击图形完成。

求问以上两种理解有什么问题,尤其是Wrong实际的计算流程如何,百思不得其解,求指点。
问的原因是我发现在某些情况下Wrong的值很奇怪,与我预期的完全不同,尝试模拟数据又因为不知道错在哪里,无法复现这个错误,不能上传文件还请谅解!
回复

使用道具 举报

精彩评论5

昭靈 发表于 2020-9-16 05:21:05 | 显示全部楼层
DAX语法简单,但逻辑相对复杂。目前学习资源很多,对其的解释总体相似,略有差异。
上述问题可看成你对筛选上下文的本质、上下文之间的计算、Filter函数以及ALL函数的用法等知识理解稍有不足,建议参考国外相对完整权威的学习资料:
The Definitive Guide to DAX Business intelligence with Microsoft Excel, SQL Server Analysis Services, and Power BI (Business Skills)
回复

使用道具 举报

dk77 发表于 2020-9-16 05:26:05 | 显示全部楼层
DAX语法简单,但逻辑相对复杂。目前学习资源很多,对其的解释总体相似,略有差异。
上述问题可看成你对筛 ...


感谢大佬指点,我现在就是觉得自己一知半解,想对DAX的本质有深入彻底的了解。
目前我的学习资料只有看了一半的《Definitive Guide》,由于偶然间(那时读到第七章)遇到了这个解不开的问题,现在我从第三章开始逐句重读,觉得字里行间的描述还是有些模糊不清的地方,希望读完第十章可以自己探索解决这个问题。

附上试验用的小附件,有兴趣的一起研究,共勉。
9867012101471.html (19.53 KB, 下载次数: 0)
回复

使用道具 举报

wzfwzf 发表于 2020-9-16 05:31:05 | 显示全部楼层
DAX语法简单,但逻辑相对复杂。目前学习资源很多,对其的解释总体相似,略有差异。
上述问题可看成你对筛 ...

大神你好,我重新整理了问题,请看此帖:
https://www.yunfa.vip/thread-7002-1-1.html?_dsign=323e7ae6
回复

使用道具 举报

1606 发表于 2021-6-19 15:34:15 来自手机 | 显示全部楼层
我也是坐沙发的
回复

使用道具 举报

emimei 发表于 3 天前 | 显示全部楼层
忙完了,来看看视频
回复

使用道具 举报

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

本版积分规则

全国统一客服电话
025-66044769

24x7小时免费咨询

  • 关注官方微信

  • QQ在线客服1

    在线联系

    QQ在线客服2

    在线联系
  • 南京优易多网络科技有限公司
  • 南京市六合区龙池街道雄州南路399
Powered by Discuz!X3.4 ©2015-2019 YouYiDuo Inc. 南京优易多网络科技有限公司 版权所有( 苏ICP备16017959号-5 )