如何在BigQuery中将日期范围展开为行(数据集含历史数据)
BigQuery中展开日期范围为单独行的方法
当然可以实现,用BigQuery的GENERATE_DATE_ARRAY函数生成日期序列,再配合UNNEST把数组拆成单独行即可。
示例输入数据
假设你的表名为your_table,结构和数据如下:
| Itemid | start_date | end_date |
|---|---|---|
| A | 2021-07-02 | 2021-09-01 |
| B | 2021-06-01 | 2021-06-03 |
实现SQL
SELECT Itemid, date FROM your_table, UNNEST(GENERATE_DATE_ARRAY(start_date, end_date, INTERVAL 1 DAY)) AS date
说明
GENERATE_DATE_ARRAY(start_date, end_date, INTERVAL 1 DAY):根据起始和结束日期生成包含每天日期的数组,步长为1天。UNNEST(...) AS date:把生成的日期数组拆成单独的行,每行对应一个日期。- 这里用逗号分隔主表和UNNEST,相当于隐式的CROSS JOIN,会把每个Itemid对应的日期数组都展开。
执行后就能得到你期望的输出:每个Itemid对应日期范围内的每一天,逐行展示。
内容的提问来源于stack exchange,提问作者Consuela
相关产品推荐
相关产品推荐

