我想在 1 小时内统计每个 ID 的记录。我尝试了一些 IMPALA 查询,但没有任何运气。
我有如下输入数据:
预期的输出是:
我试过了:
select
concat(month,'/',day,'/',year,' ',hour,':',minute) time, id,
count(1) over(partition by id order by concat(month,'/',day,'/',year,' ',hour,':',minute) range between '1 hour' PRECEDING AND CURRENT ROW) request
from rt_request
where
concat(year,month,day,hour) >= '2019020318'
group by id, concat(month,'/',day,'/',year,' ',hour,':',minute)
但是我遇到了异常。
RANGE 仅支持下限和上限 UNBOUNDED 或一个 UNBOUNDED 和另一个 CURRENT ROW。
如有任何建议/帮助,我们将不胜感激。 提前致谢!
最佳答案
我认为您正在寻找给定 ID 在几天内同一小时内的计数。您可以简单地使用 row_number
来执行此操作。
select time,id,row_number() over(partition by id,hour order by concat(month,'/',day,'/',year,' ',hour,':',minute)) as total
from tbl
关于hadoop - 黑斑羚 : Running sum of 1 hour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54529840/