如何在BigQuery中生成逐小时粒度的时间序列数据表
BigQuery生成逐小时维度表方案
你可以直接用BigQuery内置的GENERATE_TIMESTAMP_ARRAY函数生成指定区间的逐小时时间序列,无需依赖其他外部表,示例代码如下:
SELECT hour AS mydate FROM UNNEST(GENERATE_TIMESTAMP_ARRAY( '2010-01-01 00:00:00', -- 自定义时间序列起始点 '2010-01-01 23:00:00', -- 自定义时间序列结束点 INTERVAL 1 HOUR -- 时间间隔为1小时,实现逐小时维度 )) AS hour
参数说明
- 你可以根据自己的业务需求修改起始和结束时间,比如要生成2010年全年的逐小时数据,就把结束时间改为
'2010-12-31 23:00:00'即可 - 如果需要将生成的结果持久化存储为维度表,只需要在查询前加建表语句即可:
CREATE OR REPLACE TABLE `你的项目ID.你的数据集名.小时维度表` AS -- 上面的查询内容
执行上述代码后输出的结果就和你提供的样例结构完全一致,样例输出如下:
| mydate |
|---|
| 2010-01-01 00:00:00 |
| 2010-01-01 01:00:00 |
| 2010-01-01 02:00:00 |
| 2010-01-01 03:00:00 |
| 2010-01-01 04:00:00 |
| 2010-01-01 05:00:00 |
后续会按1小时间隔顺延至你设置的结束时间点。
内容的提问来源于stack exchange,提问作者Simon Breton
相关产品推荐
相关产品推荐

