Hive:如何计算差异时间?

时间:2014-10-14 15:56:07

标签: mapreduce hive hiveql

我正在使用Hive 0.12,

数据: customer_name val时间 cust1 1 2014-05-19 05:12:43 cust1 2 2014-05-19 05:12:50 cust1 3 2014-05-19 05:13:27 cust1 4 2014-05-19 05:14:14 cust2 1 2014-05-19 05:16:27 cust2 2 2014-05-19 05:17:01 cust2 3 2014-05-19 05:17:05

我希望每个客户的时间差异从val = 1到val = n。 预期产出:

cust1 00:01:31 cust2 00:00:39

对于客户而言,日期可能会更改为第二天。例如 cust3 1 2014-05-19 23:59:00 cust3 1 2014-05-20 00:02:25

预期产量: cust3 00:02:26

第一个问题。可以在没有UDF的情况下完成吗? 第二个问题。如果不?如何使用UDF ??

1 个答案:

答案 0 :(得分:0)

在我回答这个问题之前,我做了两个假设(根据您的需要纠正我,如果这些是错误的),首先是时间戳是按值排序的顺序,即对于cust1,值1的时间戳小于时间戳价值2等等。

其次,输出以秒为单位。请使用上面的任何功能转换为您想要的格式。

以下是格式正确的数据:

cust(string),val(string),ts(timestamp)
cust1,1,2014-05-19 05:12:43 
cust1,2,2014-05-19 05:12:50 
cust1,3,2014-05-19 05:13:27 
cust1,4,2014-05-19 05:14:14 
cust2,1,2014-05-19 05:16:27 
cust2,2,2014-05-19 05:17:01 
cust2,3,2014-05-19 05:17:05

查询:

  

select cust,unix_timestamp(max(ts)) - unix_timestamp(min(ts))from   temp_txns GROUP BY cust

输出:

cust1   91
cust2   38

希望这适合你。