Hive SQL处理缺失日期补齐
一、题目
用hive函数实现如图效果
二、Hive建表初始化
--创建表
create table test01(id int,start_dt date,end_dt date);
--插入数据
insert into test01 values(1,'2013-04-05','2013-04-09');
三、处理逻辑
--处理逻辑
select
id,
date_add(start_dt,i) as new_dt
from test01
lateral view
posexplode(split(space(datediff(end_dt,start_dt)),' ')) t as i,x;
展示效果:
id new_dt
1 2013-04-05
1 2013-04-06
1 2013-04-07
1 2013-04-08
1 2013-04-09
注意:posexplode独立执行时语法不需要别名,索引位置和对应值用括号括起来
select posexplode(split(space(7),’ ')) as (i,x)
参考资料:
Hive–sql中的explode()函数和posexplode()函数
Hive查询在生成缺失日期时面临的问题