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

Posted

技术标签:

【中文标题】如何获得蜂巢中时间戳的平均差异【英文标题】:How to get average difference of timestamp in hive 【发布时间】:2016-09-26 16:38:17 【问题描述】:

我有下面这张表,其中包含两列

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

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

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

【问题讨论】:

删除与您的查询无关的标签.. 我已经做出改变了。 查看cwiki.apache.org/confluence/display/Hive/…中的lag()或lead()函数 【参考方案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;

【讨论】:

以上是关于如何获得蜂巢中时间戳的平均差异的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 显示两个不同区域中时间戳之间的实时差异?

牧牛区块链生态,区块链中时间戳的作用

DynamoDB中时间戳的数据类型[重复]

数组中时间戳之间的平均间隔

计算 BigQuery 中时间戳之间的平均延迟

如何在熊猫数据框中设置时间戳的偏移量?