Hive嵌套组

时间:2015-08-20 22:48:13

标签: sql hive

我正在尝试识别重复的数据组,并且一直认为这听起来很简单。

以下是我的数据集。

ID, TIME, Speed 
1,   10,   0
1,   11,   0
1,   12,   0
1,   12,   1
1,   13,   2
1,   14,   0
1,   15,   0
1,   16,   4

我正在努力实现重复零速度的最小值和最大值。在这个案例中

ID, Min, Max, Value
1 , 10 , 12,    0
1,  14,  15,    0 

我尝试了潜在客户/滞后功能但能够获得每一行。但不是零组。我试图在Hive中得到它。

任何帮助都会受到极大的赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用不同的行号来执行此操作:

select id, speed, min(time), max(time)
from (select t.*,
             (row_number() over (partition by id order by time) -
              row_number() over (partition by id, speed order by time)
             ) as grp
      from table t
     ) t
where speed = 0
group by id, speed, grp;

当相邻值相同时,行数的差异是恒定的。