hivesql练习_会话划分问题

Posted 娜娜娜娜小姐姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hivesql练习_会话划分问题相关的知识,希望对你有一定的参考价值。

现有页面浏览记录表(page_view_events)如下,表中有每个用户的每次页面访问记录。

user_idpage_idview_timestamp
100 home 1659950435
100 good_search 1659950446
100 good_list 1659950457
100 home 1659950541
100 good_detail 1659950552
100 cart 1659950563
101 home 1659950435
101 good_search 1659950446
101 good_list 1659950457
101 home 1659950541
101 good_detail 1659950552
101 cart 1659950563
102 home 1659950435
102 good_search 1659950446
102 good_list 1659950457
103 home 1659950541
103 good_detail 1659950552
103 cart 1659950563

规定若同一用户的相邻两次访问记录时间间隔小于60s,则认为两次浏览记录属于同一会话。现有如下需求,为属于同一会话的访问记录增加一个相同的会话id字段,会话id格式为"user_id-number",其中number从1开始,用于区分同一用户的不同会话,期望结果如下:

user_id
<int>
(用户id)
page_id
<string>
(页面id)
view_timestamp
<bigint>
(浏览时间戳)
session_id
<string>
(会话id)
100 home 1659950435 100-1
100 good_search 1659950446 100-1
100 good_list 1659950457 100-1
100 home 1659950541 100-2
100 good_detail 1659950552 100-2
100 cart 1659950563 100-2
101 home 1659950435 101-1
101 good_search 1659950446 101-1
101 good_list 1659950457 101-1
101 home 1659950541 101-2
101 good_detail 1659950552 101-2
101 cart 1659950563 101-2
102 home 1659950435 102-1
102 good_search 1659950446 102-1
102 good_list 1659950457 102-1
103 home 1659950541 103-1
103 good_detail 1659950552 103-1

 

解答:

 with tt as(
   SELECT
   user_id,page_id,view_timestamp,
   lag(view_timestamp, 1, 0) over(partition by user_id order by view_timestamp) last_view_timestamp 
   FROM
   page_view_events
 )
 select
 user_id, page_id, view_timestamp,
 concat(user_id, "-", sum(if(view_timestamp - last_view_timestamp > 60, 1, 0)) over(partition by user_id order by view_timestamp)) session_id 
 from tt

 

做题加练习

做题加练习

hive窗口函数练习题

https://blog.csdn.net/weixin_45775873/article/details/109556502

hive sql 50道练习题

https://blog.csdn.net/qq_37064763/article/details/120673550

尚硅谷

http://forum.atguigu.cn/

牛客

https://www.nowcoder.com/

更新中。。。

以上是关于hivesql练习_会话划分问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flex 3 在会话中划分 dataGrid

会话控制_2-5 编程练习

如何查看hivesql里执行了哪些查询

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

20200508_NoSql——中间件综合小项目练习

函数_练习题_登录注册游戏抽奖