如何在BigQuery中基于日期范围拆分数据生成每日行记录?
在BigQuery中拆分日期范围为每日记录
完全可以在BigQuery中实现这个需求,核心是利用GENERATE_DATE_ARRAY生成日期范围内的所有日期,再通过UNNEST将数组拆分为单行记录。
假设你的表名为employee_rules,字段为RuleFrom(DATE类型)、RuleTo(DATE类型)、Rules(STRING类型),可以使用以下SQL:
SELECT day AS RuleFrom, day AS RuleTo, Rules FROM employee_rules, UNNEST(GENERATE_DATE_ARRAY(RuleFrom, RuleTo, INTERVAL 1 DAY)) AS day
代码说明
GENERATE_DATE_ARRAY(RuleFrom, RuleTo, INTERVAL 1 DAY):根据每条记录的起始和结束日期,生成包含该范围内所有日期的数组UNNEST(...) AS day:将日期数组拆分为单独的行,每行对应一个日期- 把拆分后的
day同时赋值给RuleFrom和RuleTo,保持Rules值不变
示例验证
针对你提供的示例数据(RuleFrom=2023-05-31,RuleTo=2023-06-06,Rules=10%),执行上述SQL后会输出你期望的结果:
RuleFrom RuleTo Rules 2023-05-31 2023-05-31 10% 2023-06-01 2023-06-01 10% 2023-06-02 2023-06-02 10% 2023-06-03 2023-06-03 10% 2023-06-04 2023-06-04 10% 2023-06-05 2023-06-05 10% 2023-06-06 2023-06-06 10%
内容的提问来源于stack exchange,提问作者Jonathon Chau
相关产品推荐
相关产品推荐

