@hive技巧
概要
将单个分区的数据,批量复制到其他的时间分区里面去
关键逻辑:
select date_add (‘2022-01-01’,s.i) as ts,s.x
from ( select posexplode(split(space(datediff(‘2022-01-30’,‘2022-01-01’)),’ ')) as (i,x) ) s
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE dw.table2 PARTITION(ts)
SELECT t1.column1
,t1.column2
,t1.column3
,r.ts --partition column is the last one
FROM dw.table1 t1
CROSS JOIN
(
select date_add ('2022-01-01',s.i) as ts,s.x
from ( select posexplode(split(space(datediff('2022-01-30','2022-01-01')),' ')) as (i,x) ) s
) r
WHERE t1.ts='2023-03-09'
DISTRIBUTE BY r.ts;