DolphinDB中的asof join适用于哪些场景,能详细讲解一下吗?

DolphinDB中的asof join适用于哪些场景,应该怎么使用,能详细讲解一下吗?

请先 登录 后评论

1 个回答

Xinhai Tang

asof join和左连接函数十分相似,但有以下区别:

(1)假设最后一个连接列为time,对于左表中某 time=t 的行,如果右表中其它连接列都匹配的记录中有 time=t 的记录,则取之(若有多行,则取其中最后一行);若没有time=t的记录,则取这些记录中在t之前的最近时间对应的行(若有多行,则取其中最后一行)。

(2)如果只有1个连接列,则aj函数假定右表已按照连接列排过序。 如果有多个连接列,则aj函数假定右表根据除最后一个连接列外的其他连接列定义分组,每个分组根据最后一个连接列排序。右表的其他连接列不需要排序。 如果这些条件不符合,处理将与期望值不符。 左表不需要排序。

实例代码:

t1 = table(2015.01.01+(0 31 59 90 120) as date, 1.2 7.8 4.6 5.1 9.5 as value)
t2 = table(2015.02.01+(0 15 89 89) as date, 1..4 as qty)

select * from aj(t1, t2, `date) where t1.date>=2015.03.01

结果:

attachments-2021-06-Ph92dZci60d54152c2fb2.png

请先 登录 后评论