利用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函数正是获取行上下文的最好工具之一。