微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Bigquery-创建活动记录数的时间序列

如何解决Google Bigquery-创建活动记录数的时间序列

我正在尝试在Google bigquery sql中创建时间序列。我的数据是一系列时间范围,涵盖了该记录的活动时间段。这是一个示例:

Start                   End
2020-11-01 21:04:00 UTC 2020-11-02 07:15:00 UTC
2020-11-01 21:45:00 UTC 2020-11-02 04:00:00 UTC
2020-11-01 22:00:00 UTC 2020-11-02 09:48:00 UTC
2020-11-01 22:00:00 UTC 2020-11-02 06:00:00 UTC

我希望创建一个新表来汇总15分钟内的活动记录总数。例如,“ 21:00:00”将是21:00到21:14.59。对于上述情况,我期望的输出是:

Period              Active_Records
2020-11-01 21:00:00 1
2020-11-01 21:15:00 1
2020-11-01 21:30:00 1
2020-11-01 21:45:00 2
2020-11-01 22:00:00 4
2020-11-01 22:15:00 4

等,直到最后一个有效范围的结尾。

我还希望能够通过查询日期范围并使其每隔15分钟返回该范围内的数据以及该时间段内有多少活动记录来即时生成此记录。

任何帮助将不胜感激。

解决方法

以下是用于BigQuery标准SQL

#standardSQL
select ts as period,count(1) as Active_Records
from unnest((
  select generate_timestamp_array(timestamp_trunc(min(start),hour),max(`end`),interval 15 minute)
  from `project.dataset.table` 
)) ts 
join `project.dataset.table`
on not (`end` < ts or start > timestamp_add(ts,interval 15 * 60 - 1 second))
group by ts

如果要应用于您的问题的样本数据-输出为

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。