我在时期中列出了列值(例如,最小值= 1276570880,最大值= 1276657260)。如何基于30分钟的间隔对我的Hive表中的记录进行分组。
我需要从最小时间戳值开始每隔30分钟计算一个值,直到时间戳列中的最大时间戳值。
我已尝试过以下查询,但未产生任何结果。
SELECT COUNT(method) AS mycount, FROM_UNIXTIME(floor(UNIX_TIMESTAMP(ts)/1800)*1800)
FROM http
WHERE ts >= '2010-06-14 20:01:20'
AND ts <= '2010-06-14 22:01:20'
AND method='GET'
GROUP
BY FROM_UNIXTIME(
floor(UNIX_TIMESTAMP(ts)/1800)*1800)
答案 0 :(得分:1)
这应该有效。在时间戳上使用舍入对于分组正常工作很重要。这是一个显示您具体示例的SQLfiddle example。
select count(method) as mycount,
from_unixtime(round(unix_timestamp(ts))
from http
where ts >= '2010-06-14 20:01:20'
and ts <= '2010-06-14 22:01:20'
and method='GET'
group by round(ts/1800)