我在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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.