在配置单元中按日期重复以前的值

拉维

我有2个表格-日期和数据,其数据如下:表格:日期

Date
1/02/2020
2/02/2020
3/02/2020
4/02/2020
5/02/2020
6/02/2020
7/02/2020
8/02/2020
9/02/2020
10/02/2020

表:数据

Date    Id  Amount
1/02/2020   1   10
3/02/2020   1   30
10/02/2020  1   50
2/02/2020   2   5
6/02/2020   2   10
9/02/2020   2   20

预期成绩:

Date    Id  Amount
1/02/2020   1   10
2/02/2020   1   10
3/02/2020   1   30
4/02/2020   1   30
5/02/2020   1   30
6/02/2020   1   30
7/02/2020   1   30
8/02/2020   1   30
9/02/2020   1   30
10/02/2020  1   50
2/02/2020   2   5
3/02/2020   2   5
4/02/2020   2   5
5/02/2020   2   5
6/02/2020   2   10
7/02/2020   2   10
8/02/2020   2   10
9/02/2020   2   20

我尝试使用PARTITION OVER,但是从Dates表中获取重复的价位和并非所有日期,因此未获得期望的结果。如果您可以帮助Hive SQL中的代码,请多谢。

戈登·利诺夫

使用cross join来生成行。然后left join将两个表合并。最后用于last_value()引入缺失值:

select d.date, i.id,
       last_value(amount, TRUE) over (partition by id order by d.date) as amount
from date d cross join
     (select distinct id from data) i left join
     data t
     on d.date = t.date and i.id = t.id;

last_value()与第二个参数忽略NULL值,所以它会“返回”,以获取最新的非NULL价值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章