前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >行上下文筛选函数Earlier的含义及用法

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

作者头像
逍遥之
发布2020-03-24 15:39:19
1.6K0
发布2020-03-24 15:39:19
举报
文章被收录于专栏:数据技巧

1. Earlier和Earlist

A. 语法
代码语言:javascript
复制
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等函数进行取值。

完整公式为:

代码语言:javascript
复制
Calculate(Sum('表1'[金额]),Filter('表1','表1'[时间]=Earlier('表1'[时间])-1))

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

代码语言:javascript
复制
var e_day='表1'[时间]
return
Calculate(Sum('表1'[金额]),Filter('表1','表1'[时间]=e_day-1))

e_day代表之前的表的日期

请点个赞,转发分享给更多的人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Earlier和Earlist
    • A. 语法
      • B. 返回
        • C. 注意事项
          • D. 作用
            • E. 案例
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档