引用@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 从表的第一行开始迭代;它创建了一个包含该行的行上下文并计算表达式。然后它移到第二行,再次计算表达式。此行为发生在表的所有行,如果表有一百万行,你可以认为 DAX 创造了一百万个行上下文来计算公式一百万次。对于当前行定位单元格,和原始数据表的列进行一对多的比较,满足筛选条件的被留下,用于计算表达式)

对于X1的报错:表扫描前不存在行上下文,因为sumx函数还未执行。这样子执行fliter函数,EARLIER函数是运行不了的。

对于X2的修正:CALCULATE函数中先执行FLITER,实现筛选,再根据筛选运算表达式。筛选中,先运行table,扫描table的每一行进行sumx的筛选程序,创造了行上下文,接下来运行sumx,从左往右运行,能够实现EARLIER函数。

【知识基础】

1.FLITER/SUMX函数计算执行顺序:在DAX函数中,绝大多数函数的执行顺序都是从左到右依次进行,例如SUMX函数SUMX(<table>,<expression>),如果table参数处使用了一个可以返回表单的表达式,则在运行时Power BI会先将这个表单表达式的结果计算出来,之后再计算expression参数部分。

2.CALCULATE函数计算执行顺序:CALCULATE函数CALCULATE(<expression>,<filter1>,<filter2>…)则很特殊,Power BI会先对后面的filter参数部分进行计算,之后才会运行expression表达式部分。

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

  1. VS使用scanf函数报错解决方法

    VS使用scanf函数报错解决方法 首先来看一段很简单的C语言代码 #include<stdio.h> int main(void) {char s[10];scanf("%s& ...

  2. php的old函数,laravel单元测试之phpUnit中old()函数报错解决

    php 的 laravel单元测试之phpUnit中old()函数报错解决 前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问 ...

  3. Oracle中wm_concat函数报错解决方法

    Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...

  4. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...

  5. IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)

    晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...

  6. mysql text 函数的使用方法_MySQL空间数据操作:GeomFromText()和astext()函数报错解决...

    报错问题: 之前在向MySQL导入经纬度数据的时候,用GeomFromText()方法来将字符串格式的空间点坐标转化为Geometry类型,得到了如下的报错: FUNCTION db.GeomFrom ...

  7. PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...

    前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错 错误原因: exception 'Runt ...

  8. matlab predict函数并行,Matalb 智能算法第29个案例运行报错问题

    使用的Matlab版本是2011b, SVM软件包版本是libsvm-3.17,程序跑到反归一化predict_1 = mapminmax('reverse',Predict_1,outputps); ...

  9. verilog “function”函数一直报错解决办法

    verilog "function"函数一直报错 ,经qq群中的大佬指点,发现是在 function 函数内部的逻辑部分缺少 begin--end导致.在此记录一下. functi ...

最新文章

  1. 项目管理流程有哪些?如何才能让项目管理更有效?
  2. 腾讯发布2020人工智能白皮书:泛在智能
  3. apimonitor 神器啊 。。
  4. 练习友元函数,有元类,快排和全排列问题
  5. matlab gui设计实例_S-Funciton应用实例
  6. springboot整合redis集群master宕机后连接超时
  7. otsu阈值分割算法原理_大津二值化算法OTSU的理解
  8. java for each 的源_Java JDK1.5的新特性之for-each循环的底层原理
  9. Android之ndk之gdb调试
  10. openstack开发_在OpenStack开发中有效使用指标
  11. bootstrap signin将邮件改成用户名_了解电子邮件传递背后的流程
  12. IIS和APACHE共用80端口的方法
  13. Collections集合工具类的方法
  14. java日期互转:LocalDateTime、String、Instant、Date
  15. C++获取Unix时间戳(分别以秒和毫秒为单位)的几种方法
  16. c语言-输出菱形图案
  17. android原生4.0,原生Android 4.0系统_手机_手机Android频道-中关村在线
  18. 各种区块链浏览器的地址总汇
  19. 视频配音文字转语音怎么弄?介绍几种好用的方法给你
  20. 推荐!适合C++服务器编程初学者的基础开源项目

热门文章

  1. php iphone图片旋转图片,php识别翻转iphone拍摄的颠倒图片
  2. 蓝牙耳机选什么好?5款主打高性价比的蓝牙耳机推荐
  3. 《痞子衡嵌入式半月刊》 第 69 期
  4. 疫情对2020春招有什么影响?
  5. 计算机的管理员关机命令,电脑自动关机命令是什么?怎么用
  6. 客观评价,一起看看iPhone 12是否值得你入手?
  7. angular的 #
  8. PCB设计线宽、线距规则设置多大?
  9. 2022年4月蓝桥杯软件类省赛:真题+解析
  10. 开发微信小程序推荐使用phpstorm进行开发