DAX:概述EARLIEST和EARLIER函数

本文介绍了DAX中的EARLIEST和EARLIER函数,这两个函数在处理行上下文时用于访问不同层级的列值。EARLIER函数允许访问外层行上下文,而EARLIEST则直接获取最外层上下文的值。虽然现在变量的引入使得EARLIER的功能可以被替代,但理解这两个函数的用法仍然很重要。文章通过举例展示了如何使用它们实现Dense Rank功能,比较了使用EARLIER和变量两种方法的实现思路。
摘要由CSDN通过智能技术生成

EARLIEST和EARLIER函数只用于行上下文中,并且主要用于计算列的行上下文中。行上下文的作用是迭代,逐行扫描表,并且不会筛选数据。

EARLIER函数用于访问外层行上下文,即使用外层行上下文,而不是最内层的行上下文检索列的值。

EARLIER(<column>, <number>) 
EARLIEST(<column>) 

注意:EARLIER函数的第二个参数是可选的,默认值是1,表示要跳过的层数,可以向外跳过2层或多层行上下文。EARLIEST函数直接访问最外层的行上下文。

自从变量出现之后,EARLIER函数的所有功能都可以通过变量来实现,并且更直观和高效。

举个例子,创建计算列,对产品的价格进行排序:

方法1:使用EARLIER函数实现Dense Rank,DAX实现的思路:

  • 计算列会创建外层的行上下文,FILTER函数是迭代函数,会创建一个行上下文,这是内层行上下文。
  • 由于外层的行上下文不会筛选数据,因此,VALUES('Product'[UnitPrice])得到的是整个表的UnitPrice。
  • EARLIER('Product'[UnitPrice])访问外层行上下文,得到当前行的UnitPrice。
  • FILTER函数过滤UnitPrice࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值