您的位置:首页 > 其它

Hive表获取字段状态变化记录-Lag函数应用

2017-02-28 09:40 288 查看
场景:日志表中记录了关于某个实体的状态变化所有信息,想单单提取出,按照时间轴顺序,发生了状态变化的数据行;

思路:Lag函数或者Lead函数可以将上一行或者下一行的字段内容获取到本行,这样可以比较字段是否发生变化,进而判断是否状态变化,是否需要提取出该数据行;

实现SQL

1. 数据行内容

select
house_id,
status,
create_time
from
tmp.tmp_test;




2. 实现想要的效果

select
t1.house_id,
t1.status,
t1.create_time
from
(
select
house_id,
status,
create_time,
lag(status,1,-999) over(partition by house_id order by create_time) as status2
from
tmp.tmp_test
) t1
where
t1.status <> t1.status2;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hive Lag 状态变化