Hive-之posexplode
函数实现查询startDate~endDate之间的所有日期
- 需求:目前需要动态找到 20200603~20200607之间的所有日期
SET hive.exec.mode.local.auto=true;
WITH temp1 AS (
select 'name1' as uid,'2020-06-03' as start_date, '2020-06-07' as end_date
UNION ALL
select 'name2' as uid,'2020-05-03' as start_date, '2020-05-12' as end_date
)
SELECT
*,
t.pos,
DATE_ADD(start_date,t.pos) AS real_shengxiao_time
FROM temp1
LATERAL VIEW POSEXPLODE(SPLIT(SPACE(datediff(end_date,start_date)),'')) t AS pos,empty_string
uid start_date end_date pos empty_string pos real_shengxiao_time
name1 2020-06-03 2020-06-07 0 0 2020-06-03
name1 2020-06-03 2020-06-07 1 1 2020-06-04
name1 2020-06-03 2020-06-07 2 2 2020-06-05
name1 2020-06-03 2020-06-07 3 3 2020-06-06
name1 2020-06-03 2020-06-07 4 4 2020-06-07
name2 2020-05-03 2020-05-12 0 0 2020-05-03
name2 2020-05-03 2020-05-12 1 1 2020-05-04
name2 2020-05-03 2020-05-12 2 2 2020-05-05
name2 2020-05-03 2020-05-12 3 3 2020-05-06
name2 2020-05-03 2020-05-12 4 4 2020-05-07
name2 2020-05-03 2020-05-12 5 5 2020-05-08
name2 2020-05-03 2020-05-12 6 6 2020-05-09
name2 2020-05-03 2020-05-12 7 7 2020-05-10
name2 2020-05-03 2020-05-12 8 8 2020-05-11
name2 2020-05-03 2020-05-12 9 9 2020-05-12