ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: shwangfeng

[求助] [PowerBI]ALLEXCEPT在扩展表中表现错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-22 11:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 PowerBI极客 于 2019-5-22 11:58 编辑

不知道你是基于研究还是其他目的,实际上不需要这么复杂
  1. test =
  2. ADDCOLUMNS (
  3.     VALUES ( Data[Name] ),
  4.     "MonthNum", CALCULATE (
  5.         DISTINCTCOUNT ( 'Date'[YearMonth] ),
  6.         CALCULATETABLE ( Data )
  7.     )
  8. )
复制代码

ALL这类函数在作为表和作为calculate筛选器时行为是不一样的,这是一个需要注意的点,你写的比较多,是个比较奇怪的思路 我不是很理解

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-22 12:48 来自手机 | 显示全部楼层
PowerBI极客 发表于 2019-5-22 11:55
不知道你是基于研究还是其他目的,实际上不需要这么复杂
ALL这类函数在作为表和作为calculate筛选器时行为 ...

谢谢回复,正确的写法我理解,all函数的两种行为我也理解,对于all我理解得通,我只是想知道一楼带有allexcept的写法错在哪里,这个函数它具体的行为是怎么样的,是先以整个data表接受筛选,然后排除指定列,还是反过来,还是什么别的过程?它最终返回的是不是完整的data扩展表?还是去除指定列以后的不完整表?类似这些具体的描述,我找不到参考资料。

TA的精华主题

TA的得分主题

发表于 2019-5-22 22:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shwangfeng 发表于 2019-5-22 12:48
谢谢回复,正确的写法我理解,all函数的两种行为我也理解,对于all我理解得通,我只是想知道一楼带有alle ...

如果确实理解了all函数的这两种行为,是不会使用CALCULATETABLE ( ALLEXCEPT ( Data, Data[Name] ) )这种写法的,因为这里的CALCULATETABLE不起作用

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-23 09:17 | 显示全部楼层
PowerBI极客 发表于 2019-5-22 22:57
如果确实理解了all函数的这两种行为,是不会使用CALCULATETABLE ( ALLEXCEPT ( Data, Data[Name] ) )这种 ...

我好像突然明白了点什么……可是还是不对呀,SQLBI上不是有类似描述吗,在All函数的外部套一个Calculatetable或者filter,可以强制返回表:SQLBI-洞悉ALL系列函数原理
1.png



  1. =Calculate(...,Calculatetable(Allexcept(Data,Data[Name])))
复制代码
为例,Allexcept作用是清除Data扩展表中除Name列之外其他所有列的筛选,然后它给Calculatetable什么结果?Calculatetable又给外层Calculate什么结果?如果说Calculatetable不起作用的话,那不就和上面举的All函数例子不一致了吗?

我比较愚钝,翻来覆去就是想不明白,恳请指点!

TA的精华主题

TA的得分主题

发表于 2019-5-23 22:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 PowerBI极客 于 2019-5-27 10:43 编辑
shwangfeng 发表于 2019-5-23 09:17
我好像突然明白了点什么……可是还是不对呀,SQLBI上不是有类似描述吗,在All函数的外部套一个Calculatet ...

扩展表生效的前提是表要完整,一旦排除自身的列之后就失效了。加上calculatetable之后allexcept就变成返回表的表达式了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-23 22:16 | 显示全部楼层
PowerBI极客 发表于 2019-5-23 22:08
扩展表生效的前提是表要完整,一旦排除自身的列之后就失效了。

哦,就是说问题出在这里~~这个完不完整的概念还是第一次听到,那Allexcept返回的是什么呢?按道理它永远是不完整的,那是不是说它永远只能做一个removefilter,即使外层套了Calculatetable和Filter之类的也无法返回表,依然是一个removefilter(就是之前提到的Calculatetable失效)?还有类似要求扩展表完整性的函数或者场景吗?

TA的精华主题

TA的得分主题

发表于 2019-5-23 22:30 | 显示全部楼层
shwangfeng 发表于 2019-5-23 22:16
哦,就是说问题出在这里~~这个完不完整的概念还是第一次听到,那Allexcept返回的是什么呢?按道理它永远 ...

allexcept(fact_table,dim_tableN) 这个仍然是完整的

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-23 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PowerBI极客 发表于 2019-5-23 22:30
allexcept(fact_table,dim_tableN) 这个仍然是完整的

抱歉dim_tableN是什么意思,指以整个表作为排除参数吗?
这样的话我明天测试一下,有问题再来请教。
谢谢各位大佬耐心的解答。

TA的精华主题

TA的得分主题

发表于 2019-5-23 23:49 | 显示全部楼层
本帖最后由 张文洲 于 2019-5-24 00:09 编辑

楼主研究问题的态度令人敬佩
以下是我对你案例的理解,仅供参考。

ALLEXCEPT.jpg

个人对DAX的学习体会是上下文绝不是虚无缥缈的事物,最好的方法是按DAX Guide第10章介绍的思路,将上下文通过可视化的二维表来理解,上下文之间的运算只有Overwrite和Intersect两种,上下文在表间传递具有方向性,ALL和ALLEXCEPT作为筛选上下文时需要考虑扩展表原理。
单纯的语言很难清晰描述DAX计算过程。
关于DAX更多资料,欢迎关注我的课程

TA的精华主题

TA的得分主题

发表于 2019-5-24 08:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张文洲 发表于 2019-5-23 23:49
楼主研究问题的态度令人敬佩
以下是我对你案例的理解,仅供参考。

更正一下第3步表述,上下文A并不会参与Intersect运算,因为上下文A不会影响维度表的计算。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-14 14:48 , Processed in 0.033658 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表