使用配置单元查询分析时间序列数据

b1zrtrql  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

我在hive中有一个表,它显示了系统中每个用户(userid)的登录时间(connect\u date)。以下是表格结构:

hive> describe access_log;
OK
user_id                 double                  from deserializer
connect_date            timestamp               from deserializer
ip                      string                  from deserializer
logout_date             timestamp               from deserializer
session_id              string                  from deserializer

我的目标是找出每个用户在特定时间段内的平均登录间隔时间,让我们用最后7天来回答这个问题。
配置单元查询如何实现对数据的这种分析?谢谢。

mi7gmzs6

mi7gmzs61#

有几种方法可以做到这一点:
1) 您可以将connect\u日期聚合到一个数组中,并编写一个udf来将一个日期/时间戳数组解析为平均时间间隔。
2) 您可以使用Hive0.12中引入的窗口函数—这要简单得多

select
    user_id, avg(connect_date-lag_connect_date)
from
    (
    select
        user_id, connect_date, lag(connect_date) over (partition by user_id order by connect_date) as lag_connect_date
    from
        access_log
    ) a
group by
    user_id

相关问题