当前位置:   article > 正文

Hive sql 常见面试题-会话划分问题_sql会话划分问题

sql会话划分问题

1. 题目要求

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

在这里插入图片描述

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

在这里插入图片描述

2. 查询sql

SELECT

	user_id,

        page_id,

        view_timestamp,

        concat(user_id,"-",flag) session_id

from(

    SELECT

        user_id,

        page_id,

        view_timestamp,

        sum(flag) over(PARTITION by user_id ORDER by view_timestamp) flag

    from(

        SELECT

            user_id,

            page_id,

            view_timestamp,

            --打标签,本次page的时间戳减去上个页面的时间戳,如果大于60秒,证明本次page是会话的初始page,打上一个1的标签

            IF(view_timestamp-last_view_timestamp>60,1,0) flag

        from(

            SELECT

                  user_id,

                  page_id,

                  view_timestamp,

                  --取出上一个page页面的时间戳

                  lag(view_timestamp,1,0) over(PARTITION by user_id order by view_timestamp ) last_view_timestamp

        FROM page_view_events

        )t1

    )t2

)t3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/745903
推荐阅读
相关标签
  

闽ICP备14008679号