如何获得蜂巢中时间戳的平均差异

时间:2016-09-26 16:38:17

标签: mysql hadoop hive hiveql bigdata

我的下表包含两列

hive> select * from hivetable;

a 2016-09-16T03:01:12.367782Z
b 2016-09-16T03:01:12.300514Z
c 2016-09-16T03:01:12.241532Z
a 2016-09-16T03:01:12.138016Z
c 2016-09-16T03:01:12.136986Z
b 2016-09-16T03:01:10.512201Z
c 2016-09-16T03:01:12.235671Z

Time taken: 0.457 seconds, Fetched: 7 row(s)

现在我想找到第一列的唯一值和时间戳差异,或者我应该说平均时间戳差异,如果有超过2条记录,就像c一样。所以在我的情况下,输出应该像

a  1 day 5 hr 30 min 20 sec
b  5 sec
c  30 minutes

注意:它只是一个示例输出而不是实际输出

是否有可能在蜂巢中获得此输出或任何类似的输出?

1 个答案:

答案 0 :(得分:1)

您只需使用窗口功能选择分组中的上一行。我不相信它可以压缩成一个查询。

select 
 id,
 avg(DATEDIFF(time, prev_time)) as avg_time_diff_days
from (
   select id,
   time,
   LAG(time, 1, 0) OVER (PARTITION BY id, time ORDER BY time ASC)) as prev_time
   from table
) intervals
group by id;