【发布时间】:2015-03-07 15:36:45
【问题描述】:
我在 Hive (SQL) 中有一个表,其中包含一堆需要分组的时间戳,以便根据时间戳之间的时间差创建单独的会话。
示例:
考虑以下时间戳(为简单起见,以 HH:MM 给出):
9.00
9.10
9.20
9.40
9.43
10.30
10.45
11.25
12.30
12.33
等等..
所以现在,在下一个时间戳 30 分钟内的所有时间戳都属于同一个会话, 即 9.00,9.10,9.20,9.40,9.43 形成 1 个会话。
但由于 9.43 和 10.30 之间的差异超过 30 分钟,因此时间戳 10.30 属于不同的会话。同样,10.30 和 10.45 属于一个会话。
创建这些会话后,我们必须获取该会话的最小时间戳和最大时间戳。
我尝试用它的 LEAD 减去当前时间戳,如果它大于 30 分钟,则放置一个标志,但我遇到了困难。
你们的任何建议将不胜感激。如果问题不够清楚,请告诉我。
此示例数据的预期输出:
Session_start Session_end
9.00 9.43
10.30 10.45
11.25 11.25 (same because the next time is not within 30 mins)
12.30 12.33
希望这会有所帮助。
【问题讨论】:
-
请发布您的表结构以及示例数据和预期输出
-
@Akhil 请立即查看
-
@FenderBender 我们已经检查过了。没有变化。
标签: sql session select group-by hive