美文网首页PowerBI专栏
有了EARLIER函数,PowerBI也可以进行更细粒度的分析了

有了EARLIER函数,PowerBI也可以进行更细粒度的分析了

作者: PowerBI星球 | 来源:发表于2018-03-20 20:07 被阅读154次

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

    .

    EARLIER语法

    EARLIER(, )

    第一个参数是列名

    第二个参数一般可省略

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

    微信公总号:PowerBI星球。

    相关文章

      网友评论

      • 举_6e5f:下个订单日期那个为什么要用sumx这个公式?sumx不是求和吗?
        PowerBI星球:@一个初学者12019 求两个时间的间隔,都可以用DATEDIFF函数,该函数的第三个参数可以控制间隔的精度,比如求间隔的秒数,参数为second,DATEDIFF([订单日期],[下个订单日期],SECOND)
        一个初学者12019:第一个求间隔,如果数据里日期里有小时分秒的数据,想计算两个时间,秒的间隔应该怎么样计算,求解,谢谢
        PowerBI星球:@举_6e5f 确实是求和,不过这个例子中只是找出下一个订单的日期,对一个订单日期求和也是这个日期,因此可以用sumx来计算
      • 祝磊_048b:学习了😊

      本文标题:有了EARLIER函数,PowerBI也可以进行更细粒度的分析了

      本文链接:https://www.haomeiwen.com/subject/llfiqftx.html