ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] DAX 上下文转换问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-9-13 01:47 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
初学者刚看DAX权威指南,一个问题但困扰我很长时间了,关于calculate的上下文转换,比如如下SUMX和度量值(自带calculate),既然CALCULATE计算的表达式中没有任何有效的外部行上下文。所有外部行上下文都被转换为等效的筛选上下文。那么没有行上下文就没有迭代,那么筛选上下文不就取代了SUMX的行上下文了吗?那为什么结尾为X的这些函数,比如SUMX和average X,还是在迭代呢?到底怎么理解外部行上下文无效的概念以及SUMX还在迭代的逻辑呢?求解!!!

Product[SalesWithSUMX] =
SUMX (
Customer,
[SumOfSalesAmount]

TA的精华主题

TA的得分主题

发表于 2022-9-13 15:58 | 显示全部楼层
《DAX权威指南》乃DAX初学者劝退首选,趁着你还没有彻底丧失对DAX的耐心和信心,赶紧换个其他的简单教材。

“迭代”、“行上下文”、“筛选上下文”和“上下文转换”是支撑DAX的核心概念,也是DAX所特有的,初学起来有所混淆实属正常。

对于-X(table, expr)族函数和很多其他函数,“迭代”是这么进行的,
  1. foreach row in table
  2.     expr
  3. next row
复制代码
对于每次循环(迭代)中expr的计算,row(行上下文)是一定存在的,至于需不需要进行上下文转化,就取决于expr的计算对于估值上下文的要求了。发生上下文转换的典型场景包括但不限于:expr本身就是度量值、expr的计算包含CALCULATE/CALCULATETABLE或含有满足特定条件的时间智能函数等。

以我个人的经验,检验自己对这些核心概念的掌握程度,一个RANKX()函数的理解、使用情况就够,什么时候能把这个函数差不多弄通透了,DAX度量值也基本不是问题了。

TA的精华主题

TA的得分主题

发表于 2022-9-13 16:24 | 显示全部楼层
不要劝退,继续努力,你需要的是坚持,以及下面这句话
费曼的读书法:“你从头读,尽量往下读,直到你一窍不通时,再从头开始,这样坚持往下读,直到你完全读懂为止。”

TA的精华主题

TA的得分主题

发表于 2022-9-13 17:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
都学Dax了,为啥不去学PYTHON呢

TA的精华主题

TA的得分主题

发表于 2022-9-13 17:38 | 显示全部楼层
Sumx()  就是迭代,对那个表 Customer表中每一行计算 [SumOfSaleAmount]的值 然后进行Sum计算

TA的精华主题

TA的得分主题

发表于 2022-9-13 17:59 | 显示全部楼层
fengbao008 发表于 2022-9-13 17:30
都学Dax了,为啥不去学PYTHON呢

个人感觉,PY的教程遍地都是,但没有一个我觉得有 DAX权威指南 第二版 讲的好的。。

TA的精华主题

TA的得分主题

发表于 2022-10-18 19:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
flashevil 发表于 2022-9-13 17:59
个人感觉,PY的教程遍地都是,但没有一个我觉得有 DAX权威指南 第二版 讲的好的。。

嗯,同意,DAX 只需要学 DAX权威指南 这一本书就够了

TA的精华主题

TA的得分主题

发表于 2022-10-23 21:45 | 显示全部楼层
“没有行上下文就没有迭代”这句话是理解上的错误。行上下文来自于两种情况:新建计算列和迭代函数。或者说,行上下文不是迭代的因,迭代可能是行上下文的因。

“筛选上下文不就取代了SUMX的行上下文了”,这句话也是理解错误。筛选上下文和行上下文是两个东西,不能替换。

迭代函数对第一个表格参数进行逐行迭代,这是迭代函数的特性,不受外部因素影响。再者,迭代是产生行上下文的两种方式之一,迭代不需要行上下文。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 15:31 , Processed in 0.032856 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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