我想在Hive里根据时差把行分成最接近半个小时
下面是我想要达到的目标的一个例子
User Start_time End_time Duration
A 2020-05-05 06:45:00 2020-05-05 07:15:00 30
B 2020-05-05 10:15:00 2020-05-05 11:15:00 60
User Start_time End_time Duration
A 2020-05-05 06:45:00 2020-05-05 07:00:00 15
A 2020-05-05 07:00:00 2020-05-05 07:15:00 15
B 2020-05-05 10:15:00 2020-05-05 10:30:00 15
B 2020-05-05 10:30:00 2020-05-05 11:00:00 30
B 2020-05-05 11:00:00 2020-05-05 11:15:00 15
1条答案
按热度按时间xeufq47z1#
根据需要计算间隔数
floor(duration/30)
然后使用lateral view posexplode(split(space(s.num_intervals),' '))
参见代码中的其他逻辑:结果:
也许我没有测试所有可能的案例。请自己测试调试。对于您的数据示例,它工作得很好。