【EARLIER/EARLIEST函数】引用不存在的更早的行上下文 报错解决

本文介绍了在DAX中使用EARLIER/EARLIEST函数时遇到的行上下文错误,并提供了正确的解决方案。通过示例X1和X2解释了错误的原因,指出在新建度量值时需要在扫描表前创建行上下文。总结了FLITER和SUMX函数的执行顺序,以及CALCULATE函数如何处理过滤和表达式计算。
摘要由CSDN通过智能技术生成

引用@PowerQuery的例子并给予个人理解

X1= SUMX(FILTER('Data','Data'[订单日期]>EARLIER('Data'[订单日期])),[金额])---WRONG

X2=CALCULATE(SUM(Data[金额]),FILTER(Data,SUMX(FILTER('Data','Data'[订单日期]>EARLIER('Data'[订单日期])),[金额])))---RIGHT

X1报错原因:表被扫描前没有创建行上下文。当EARLIER/EARLIEST函数被用于新建列中,会自动创建行上下文,这是由于计算列是在现有的表上新建一个列,和表中已存的列一样,可以作为表格的行、列;图标的轴及切片器的字段使用等等,也可以使用计算列与其他表格建立关系。而当EARLIER/EARLIEST函数被用于新建度量值中,度量值如果不放到上下文环境中,它是一个孤立的公式,因此想在度量值中使用,需要人为在扫描表前创建行上下文。

解决方法:利用FLITER或者其他迭代函数在表被扫描前创建行上下文。(当定义计算列时,DAX 从表的第一行开始迭代;它创建了一个包含该行的行上下文并计算表达式。然后它移到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值