查询用户出现在表中后的前 48 小时活动 (HiveQL / SQL)

Posted

技术标签:

【中文标题】查询用户出现在表中后的前 48 小时活动 (HiveQL / SQL)【英文标题】:Querying the first 48 hours of activity after a user appears in a table (HiveQL / SQL) 【发布时间】:2020-06-06 01:50:10 【问题描述】:

我正在使用 Hive 表,该表表示网站上的流量并包含 user_iddayevent 等列。我还有一个单独的user_ids 列表,我正在尝试为此 Hive 表编写一个查询,该查询返回与该列表中每个用户的前 48 小时活动相对应的所有行(对于每个用户,有表中带有event = SIGNUP 的初始行)。

对于如何编写此查询,我感到有些困惑。有没有人指点一下?

谢谢!

【问题讨论】:

请提供样本数据和所需结果。 【参考方案1】:

您可以使用窗口函数计算每个user_id 的第一个日期:

select t.*
from (select t.*, 
             min(day) over (partition by user_id) as min_day
      from t
      where t.user_id in ( . . . ) -- your list here
     ) t
where day <= date_add(min_day, 2)

【讨论】:

以上是关于查询用户出现在表中后的前 48 小时活动 (HiveQL / SQL)的主要内容,如果未能解决你的问题,请参考以下文章

在表上聚合查询?

如何在 postgresql 中改进此查询?它已经花费了超过 48 小时

为啥在尝试访问 HTML 表中的前两列时会出现错误?

使用 WHERE 子句的查询不起作用

查询以获取亚马逊红移中给定日期到 48 小时内的数据

从三张表中提取数据,一张表作为中间