hive中的分析函数以及时间戳的使用

本文介绍如何使用Hive的分析函数计算同一成员ID在不同时间戳之间的间隔。通过创建测试表并插入数据,利用lag窗口函数获取上一行记录的时间戳,进而计算时间差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

样例数据如下所示: 仅仅展示字段createTime和memberId

createTime                    memberId
2017/11/13 2017-11-13 12:00:01 8a9e7bf05d7ec61b015d89e060901ef8
2017/11/13 2017-11-13 12:01:01 8a9f156c5d409b7d015d4566b0f06b06
2017/11/13 2017-11-13 12:02:01 8a9f17655e078b0e015e14a79de02059


需求是怎么将相同的memberId,间隔展示出来??


---创建测试表

create table member_create(memberId String,creatime TIMESTAMP);


--插入数据

insert into member_create values('8a9e7bf05d7ec61b015d89e060901ef8','2017-11-13 12:00:01');
insert into member_create values('8a9e7bf05d7ec61b015d89e060901ef8','2017-11-13 12:01:01');
insert into member_create values('8a9e7bf05d7ec61b015d89e060901ef8','2017-11-13 12:02:01');


---测试语句

select memberid, creatime, last_creatime,
case when last_creatime is null then 0 else unix_timestamp(creatime)-unix_timestamp(last_creatime) end diff_time
 from (select memberid, creatime, lag(creatime) over(partition by memberid order by creatime) last_creatime
from member_create) t;

--执行结果

8a9e7bf05d7ec61b015d89e060901ef8 2017-11-13 12:00:01 NULL 0
8a9e7bf05d7ec61b015d89e060901ef8 2017-11-13 12:01:01 2017-11-13 12:00:01 60
8a9e7bf05d7ec61b015d89e060901ef8 2017-11-13 12:02:01 2017-11-13 12:01:01 60


说明: 我仅仅列举了偏移量函数的用法,个人认为,hive中的分析函数和oracle中的分析函数功能都是类似的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值