Hive last_value/first_value实现ignore nulls

创建一张测试表

drop table if exists default.test_tab purge;
create table default.test_tab
as
select date_add(current_timestamp(),-10) as event_time,'1' as id, 'A' as a,'B' as b,'C' as c
union all select date_add(current_timestamp(),-9) as event_time,'1' as id, 'a' as a, null as b,null as c
union all select date_add(current_timestamp(),-8) as event_time,'1' as id,null as a, 'b' as b,null as c
union all select date_add(current_timestamp(),-7) as event_time,'1' as id,null as a, null as b,'c' as c
union all select date_add(current_timestamp(),-6) as event_time,'2' as id,'AA' as a, null as b,null as c
union all select date_add(current_timestamp(),-5) as event_time,'2' as id,null as a, 'BB' as b,null as c
union all select date_add(current_timestamp(),-4) as event_time,'2' as id,null as a, null as b,'CC' as c
union all select date_add(current_timestamp(),-3) as event_time,'2' as id,'a' as a, 'b' as b,'c' as c;

测试

select t.*, 
    last_value(a) over( partition by id order by event_time) as last_a, 
    last_value(b,TRUE) over( partition by id order by event_time ) as last_b 
from default.test_tab t

结果

Hive last_value/first_value实现ignore nulls_第1张图片

你可能感兴趣的:(商业智能-ETL,数据库技术-Oracle,SQL,hadoop,spark,hdfs,大数据,hive)