我正在使用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 ??
答案 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
希望这适合你。