Hiveql - 将每小时数据汇总到每天

Posted

技术标签:

【中文标题】Hiveql - 将每小时数据汇总到每天【英文标题】:Hiveql - Aggregating hourly data to daily 【发布时间】:2020-07-20 16:40:35 【问题描述】:

我是 Hiveql 的新手,希望在一个非常简单的问题上得到帮助。

我有一个每小时数据表,我在下面提供了一个简化示例:

datetimetimezone  ID  value
202007130000+0100 001 2
202007130100+0100 001 3
202007130200+0100 001 4
202007130300+0100 001 1
202007140000+0100 002 3
202007140100+0100 002 7
202007140200+0100 002 9
202007140300+0100 002 2

目标是创建一个输出,其中我将 datetimezone 剥离为“yyyymmdd”格式,并从每小时到每天汇总 (SUM) 值。所以我最终会得到一个新的输出,如下所示:

datetimetimezone  ID  value
20200713          001 10
20200714          002 21

我知道我可以使用 substr(datetimetimezone, 0, 8) 来获得所需的日期格式,但是我不确定如何将 ID 值从每小时聚合到每天,如上面的第二个表所示。欢迎任何帮助。

【问题讨论】:

【参考方案1】:

您似乎想要以下聚合查询:

select
    substr(datetimetimezone, 1, 8) yyyymm,
    id,
    sum(value) value
from mytable
group by substr(datetimetimezone, 1, 8), id

请注意,substr()1 开头,而不是 0

【讨论】:

以上是关于Hiveql - 将每小时数据汇总到每天的主要内容,如果未能解决你的问题,请参考以下文章

将每日数据汇总到月/年间隔

HIVEQL,每天记录的数量

将每日数据转换为每周数据并汇总 R 中的多个列

数据框 - 将每日数据减少到年度频率

将每一行的值汇总为布尔值(PySpark)

对于时间序列汇总/聚合,流处理是不是优于批处理?