用Hive分析函数lead计算用户页面的停留时长
来源:互联网 发布:重新加载数据会丢吗 编辑:程序博客网 时间:2024/05/16 18:02
Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的。
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率,其中over()表示当前查询的结果集对象,括号里面的语句则表示对这个结果集进行处理。
场景描述:
用户Peter在浏览网页,在某个时刻,Peter点进了某个页面,过一段时间后,Peter又进入了另外一个页面,如此反复,那怎么去统计Peter在某个特定网页的停留时间呢,又或是怎么统计某个网页用户停留的总时间呢?
1、建表及数据准备
2、获取用户在某个页面停留的起始与结束时间
3、计算用户在页面停留的时间间隔
4、计算每个页面停留的总时间(某个用户访问某个页面的总时间)
5、最终想要的结果
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率,其中over()表示当前查询的结果集对象,括号里面的语句则表示对这个结果集进行处理。
场景描述:
用户Peter在浏览网页,在某个时刻,Peter点进了某个页面,过一段时间后,Peter又进入了另外一个页面,如此反复,那怎么去统计Peter在某个特定网页的停留时间呢,又或是怎么统计某个网页用户停留的总时间呢?
1、建表及数据准备
drop table if exists xxx_user_vist_log;create table xxx_user_vist_log(userid string,time string,url string) row format delimited fields terminated by ',';[hadoop@emr-worker-10 hiveAnalyticFunction]$ cat xxx_user_vist_log.txt Peter,2015-10-12 01:10:00,url1Peter,2015-10-12 01:15:10,url2Peter,2015-10-12 01:16:40,url3Peter,2015-10-12 02:13:00,url4Peter,2015-10-12 03:14:30,url5Marry,2015-11-12 01:10:00,url1Marry,2015-11-12 01:15:10,url2Marry,2015-11-12 01:16:40,url3Marry,2015-11-12 02:13:00,url4Marry,2015-11-12 03:14:30,url5LOAD DATA LOCAL INPATH '/home/hadoop/nisj/hiveAnalyticFunction/xxx_user_vist_log.txt' OVERWRITE INTO TABLE xxx_user_vist_log;
2、获取用户在某个页面停留的起始与结束时间
select userid,time stime,lead(time) over(partition by userid order by time) etime,url from xxx_user_vist_log;
3、计算用户在页面停留的时间间隔
select userid,time stime,lead(time) over(partition by userid order by time) etime,UNIX_TIMESTAMP(lead(time) over(partition by userid order by time),'yyyy-MM-dd HH:mm:ss')- UNIX_TIMESTAMP(time,'yyyy-MM-dd HH:mm:ss') period,url from xxx_user_vist_log;
4、计算每个页面停留的总时间(某个用户访问某个页面的总时间)
select nvl(url,'-1') url,nvl(userid,'-1') userid,sum(period) totol_peroid from (select userid,time stime,lead(time) over(partition by userid order by time) etime,UNIX_TIMESTAMP(lead(time) over(partition by userid order by time),'yyyy-MM-dd HH:mm:ss')- UNIX_TIMESTAMP(time,'yyyy-MM-dd HH:mm:ss') period,url from xxx_user_vist_log) a group by url, userid with rollup;
5、最终想要的结果
OK-1 -1 14940url1 -1 620url1 Marry 310url1 Peter 310url2 -1 180url2 Marry 90url2 Peter 90url3 -1 6760url3 Marry 3380url3 Peter 3380url4 -1 7380url4 Marry 3690url4 Peter 3690url5 -1 NULLurl5 Marry NULLurl5 Peter NULLTime taken: 99.59 seconds, Fetched: 16 row(s)
阅读全文
0 0
- 用Hive分析函数lead计算用户页面的停留时长
- hive计算网页停留时长
- 计算用户在页面停留的时间
- js计算用户在页面的停留的时间
- 计算网页停留时间的平均时长
- Hive 分析函数lead、lag实例应用
- hive--lag和lead 分析函数
- 用户行为统计分析页面停留时间计算
- HIVE分析窗口函数: LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数之LAG,LEAD,FIRST_VALUE和LAST_VALUE
- Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析窗口函数(三) LAG,LEAD,FIRST_VALUE,LAST_VALUE
- Hive分析函数之LAG、LEAD、FIRST_VALUE、LAST_VALUE学习
- Hive分析窗口函数 LAG,LEAD,FIRST_VALUE,LAST_VALUE
- 结构体所占内存
- “逐渐失效”的摩尔定律
- Unity 背景音乐 跨场景播放
- ViewPager实现画廊
- C++——临时对象
- 用Hive分析函数lead计算用户页面的停留时长
- smashthestack的wp
- a到b之间的整数求和
- LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d249d.lib”问题解决
- 万树IT:Net程序员该怎样成为大牛?
- Unity格子类三消游戏【物体下落】小细节(Unity萌新的备忘录)
- [Tensorflow][Train]Tensorflow 使用Detect API 训练自己的data(local)
- Mac 10.13 安装中文版 man 命令
- ssm项目中Dao,Service抽取