美文网首页
行上下文筛选函数Earlier的含义及用法

行上下文筛选函数Earlier的含义及用法

作者: Data_Skill | 来源:发表于2019-05-19 14:37 被阅读0次

    (四) 行上下文的筛选

    1. Earlier和Earlist

    A. 语法

    Eariler ( <ColumnName> [, <Number>] )
    Earliest ( <ColumnName> )
    
    参数 秒数
    ColumnName 所需值得的列名
    可选第2参数Number 往前的第几层,默认值1
    Earliest因直接返回最外面一层,所以也就没有第2参数

    B. 返回

    标量——指定列的当前行里的值

    C. 注意事项

    • 只有存在表的层级,才会起作用,如果不存在层级则会出错。
    • 不建议使用,可以使用var变量赋值给与替代。

    D. 作用

    返回之前层级的列数值。(相当于固定一个之前层级的数值)

    E. 案例

    案例数据案例数据

    我们要添加一列上一天的金额。在Excel里面我们很容易,直接相对引用上一行的金额单元格就可以。当然因为第一天没有数值我们直接从第2个数值开始输入B2往下拖曳即可。


    要求结果要求结果

    那这种效果如何在Power Pivot里实现呢?这时就需要我们使用到表的层级的概念。
    我们知道Power Pivot的计算原则,是以筛选作为计算基础。

    步骤:
    因为我们知道在Power Pivot中是不存在单元格的概念,只有表和列的概念。
    首先:筛选出比当天日期小1天的表。Filter('表1','表1'[时间]= '表1'[时间]-1)
    但是如果是这样的表达式肯定是不会筛选出结果的,所以这里涉及到2个表,一个是当前表,一个是之前表,之前表我们就需要用EARLIER来体现。往外几层,第2个参数就用数字多少表示,因为这里只涉及一层,所以第二参数可以不写。
    Filter('表1','表1'[时间]=Earliter('表1'[时间])-1)))每一行都会执行这个公式来进行比较。

    时间 金额 比较状态 结果
    2019/5/1 100 筛选日期比2019/5/1小一天的表 不存在
    2019/5/2 200 筛选日期比2019/5/2小一天的表 时间为2019/5/1的表
    2019/5/3 300 筛选日期比2019/5/3小一天的表 时间为2019/5/2的表
    2019/5/4 400 筛选日期比2019/5/4小一天的表 时间为2019/5/3的表
    2019/5/5 500 筛选日期比2019/5/5小一天的表 时间为2019/5/4的表
    2019/5/6 600 筛选日期比2019/5/6小一天的表 时间为2019/5/5的表

    最后一天筛选出来的结果就是下图这样。


    案例数据案例数据

    其次:我们要针对这个表进行取值,我们需要的是金额这一列的数字,因为我们每天只有一条数据,我们可使用任意的取值公式。这里我们用最简单的sum,min,max等函数进行取值。

    完整公式为:

    Calculate(Sum('表1'[金额]),Filter('表1','表1'[时间]=Earlier('表1'[时间])-1))
    

    如果我们用var变量来进行赋值的话会更好理解

    var e_day='表1'[时间]
    return
    Calculate(Sum('表1'[金额]),Filter('表1','表1'[时间]=e_day-1))
    

    e_day代表之前的表的日期

    喜欢的点个赞,分享下咯。

    相关文章

      网友评论

          本文标题:行上下文筛选函数Earlier的含义及用法

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