我想将行中的时差拆分为最接近的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
计算floor(duration/30)
所需的间隔数,然后使用lateral view posexplode(split(space(s.num_intervals),' '))
生成行,请参见代码中的其他逻辑: