识别配置单元表中缺少的分区

时间:2018-02-22 09:12:17

标签: hadoop hive hortonworks-data-platform

我的表每天运行并在每天生成一个名为date的分区cloumn

例如:我的查询生成日期

2018-01-01
2018-01-02
2018-01-03
2018-01-06
2018-01-08
缺少

2018-01-05 & 2018-01-07个日期。有没有办法找出那些丢失的日期?

1 个答案:

答案 0 :(得分:1)

下面的查询将1)创建一个临时表,其中包含从开始分区日期到最新分区日期的连续日期.2)执行左连接并查看缺少哪些分区日期(partition_dt为null)。希望这可以帮助。感谢。

create table partition_dtes as 
with cal_date as (select min(partition_dt) as min_dt, max(partition_dt) as max_dt from mytable) 
select date_add(t.min_dt, pe.idx) as series_dte
from  cal_date t
lateral view
posexplode(split(space(datediff(t.max_dt,t.min_dt)),' ')) pe as idx, dte; 
Result: 
2018-01-01
2018-01-02
2018-01-03
2018-01-04
2018-01-05
2018-01-06
2018-01-07
2018-01-08

select distinct dte.series_dte
from partition_dtes dte
left join mytable  tbl
on dte.series_dte=tbl.partition_dt
where tbl.partition_dt is null
order by dte.series_dte;

Result:
   2018-01-04
   2018-01-05
   2018-01-07