gpt4 book ai didi

hadoop - 从 Hive 中的最后一个非空值填充空值

转载 作者:可可西里 更新时间:2023-11-01 15:00:58 24 4
gpt4 key购买 nike

我有 4 列

date   number   Estimate   Client    
---- ------
1 3 10 A
2 NULL 10 Null
3 5 10 A
4 NULL 10 Null
5 NULL 10 Null
6 2 10 A
.......

我需要用新值替换 NULL 值,新值采用日期列中前一个日期的最后一个已知值的值,例如:日期 = 2 数字 = 3,日期 4 和 5 数字 = 5 和 5。 NULL 值随机出现。

这需要在 Hive 中完成。

最佳答案

关于滑动窗口;

这是我的表格内容;

hive> select * from my_table;
OK
1 3 10 A
2 NULL 10 NULL
3 5 10 A
4 NULL 10 NULL
5 NULL 10 NULL
6 2 10 A
Time taken: 0.06 seconds, Fetched: 6 row(s)

您需要做的就是滑过前行和当前行之间的窗口,找到最近的非空值。 LAST_VALUE可窗口函数有一个参数可以忽略空值作为 bool 值。 LAST_VALUE(<field>,<ignore_nulls> as boolean) ;

SELECT
COALESCE(`date`, LAST_VALUE(`date`, TRUE) OVER(ORDER BY `date` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)),
COALESCE(number, LAST_VALUE(number, TRUE) OVER(ORDER BY `date` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)),
COALESCE(estimate, LAST_VALUE(estimate, TRUE) OVER(ORDER BY `date` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)),
COALESCE(client, LAST_VALUE(client, TRUE) OVER(ORDER BY `date` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))
FROM my_table;

结果会是;

OK
1 3 10 A
2 3 10 A
3 5 10 A
4 5 10 A
5 5 10 A
6 2 10 A
Time taken: 19.177 seconds, Fetched: 6 row(s)

关于hadoop - 从 Hive 中的最后一个非空值填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com