https://zhuanlan.zhihu.com/p/64400583

前面利用PowerBI做数据分析的时候都是对整列的字段进行操作,并没有做更细化的分析,比如分析数据的每一行、提取某一行的数据,这在Excel中很容易实现,因为Excel公式是对单元格操作。那么在PowerBI中能不能按行分析呢,答案当然是肯定的,并且比Excel更加灵活,借助这个函数:EARLIER

.

EARLIER语法

EARLIER(<column>, <number>)

  • 第一个参数是列名
  • 第二个参数一般可省略
  • EARLIER函数提取本行对应的该列的值,实际上就是提取本行和参数列交叉的单元格

这个函数是指定行上下文重要工具,下面靠几个实例来理解这个函数。

EARLIER应用实例

有一张订单表:

利用EARLIER做以下几种分析:

01 | 求两个订单的时间间隔

相当于用下一个订单的日期减去当前订单的日期,为了相减的方便,新建列[下个订单日期],先把下一行的订单日期提取过来,输入DAX公式:

= SUMX(FILTER('订单表','订单表'[序号]=
EARLIER('订单表'[序号])+1),
'订单表'[订单日期])

这个公式的意思是,利用EARLIER获取当前行的序号,然后找到当前序号+1的那一行的订单日期,结果如下,

然后新建一列,用两列日期相减得到间隔的天数,

间隔 = IF([下个订单日期]=BLANK(),
BLANK(),
[下个订单日期]-[订单日期])

这里用IF判断主要因为最后一列为空值,避免出现不合理的数值,

02 | 求每个订单日期的累计销售金额

新建列[累计销售额],

= SUMX (FILTER('订单表','订单表'[序号]<=EARLIER('订单表'[序号])),
'订单表'[销售金额])

利用EARLIER求当前行的序号,然后把小于等于当前序号的所有行的销售额累加。

03 | 求截至目前订单,每种产品的销量

新建列[产品累计销量],

= SUMX(FILTER(
'订单表','订单表'[序号]<=EARLIER('订单表'[序号])
&&'订单表'[产品名称]=EARLIER('订单表'[产品名称])),
'订单表'[销售数量])

不仅利用EARLIER筛选小于当前行的序号,还利用它求得当前行的产品名称,然后同时符合这两个条件的销量才累加,结果正是我们期望的,

以上几个实例都是先获得本行的记录,然后做各种聚合预算,本行的记录可以称为行上下文,EARLIER函数正是获取行上下文的最好工具之一。

最新文章

  1. 这两年在QQGame写过的游戏(2012.7.15-2014.8.25)
  2. 如何用inno setup打包activex
  3. Cell右滑的动作状态
  4. null 与 string.IsNullOrEmpty 区别
  5. generator函数
  6. (六)6.17 Neurons Networks convolutional neural network(cnn)
  7. No ongoing transaction. Did you forget to call multi?
  8. noip2013Day2T3-华容道【一个蒟蒻的详细题解】
  9. cs231n --- 1:线性svm与softmax
  10. 关闭系统邮件提醒:you hava a new mail(转)
  11. 【深度学习】--DCGAN从入门到实例应用
  12. 2016word多级列表 一级标题居中后偏左
  13. scala-LinkedList
  14. mysql添加外键的4种方式
  15. java基础基础总结----- Date
  16. 下载企业级证书打包的app 出现“无法下载应用程序”的问题
  17. Ajax核心技术之XMLHttpRequest
  18. Types方法之isSameType-isSuperType-isSubType
  19. C++继承模型
  20. ARM地址重映射机制

热门文章

  1. ClientDataSet训练之1
  2. 14.Django-JWT
  3. (二)JavaMail创建包含内嵌图片的邮件
  4. 微信小程序-工具的下载与安装
  5. C# 人脸识别库
  6. Jmeter系列(34)- 详解 Counter 计数器
  7. 苹果XR手机的音频体验测试总结
  8. MyEclipse中项目利用不同版本JDK编译注意点
  9. [源码解析]Oozie来龙去脉之提交任务
  10. C++ 调用Python文件方法传递字典参数并接收返回值