如果存在小的时间间隔,则计算事件聚集的事件

时间:2016-04-08 20:42:15

标签: sql hive counting

我正在尝试计算使用HIVE在我的数据集中发生了多少'使用'。

我的数据中包含各个用户ID的列,unix纪元时间中的时间戳,事件名称和事件长度(以秒为单位)。

每次用户触发事件时都会考虑使用“使用”。问题是如果用户触发事件然后在五分钟内触发另一个事件,我将被视为相同的“使用”

在计算时,我很难在精神上弄清楚如何计算五分钟的窗口。我似乎无法在HIVE中制作一堆“创建表格”,就像我在SQL中乱七八糟地避免过多的子查询一样,因为我很容易迷失在那些中。

这似乎是一个标准问题,处理这类物品是否有明智或明显的解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

在Hive中,您可以使用lag()查看在给定记录前五分钟是否有另一条记录。如果没有,则将标志设置为1并计算:

select count(*)
from (select t.*,
             lag(timestamp) over (partition by user order by timestamp) as prev_timestamp
      from t
     ) t
where prev_timestamp is null or
      (timestamp - prev_timestamp) > 5*60;