如何在配置单元表中按历元时间间隔对记录进行分组?

px9o7tmv  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(361)

我有epoch中的时间戳列值(例如,最小值=1276570880,最大值=1276657260)。如何根据30分钟的间隔对配置单元表中的记录进行分组。
我需要每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)
8nuwlpux

8nuwlpux1#

这应该管用。在时间戳上使用round对于分组正确工作很重要。下面是一个sqlfiddle示例,它显示了您的特定示例。

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)

相关问题