如何使用脚本生成 INTERVAL 1

2023-12-10

我们正在尝试找到一种语法来从日期函数的第三个参数生成 DAY|WEEK|MONTH 选项。

DECLARE var_date_option STRING DEFAULT 'DAY';
select GENERATE_DATE_ARRAY('2019-01-01','2020-01-01',INTERVAL 1 WEEK)
                                            dynamic param here -^^^

您知道 DECLARE 中使用的正确语法是什么吗?并且应该将其转换为有效的 SQL。


以下是 BigQuery 标准 SQL

Those DAY|WEEK|MONTH是文字并且不能参数化
而且,如您所知 - 动态 SQL 还不可用

所以,不幸的是,下面是我今天能想到的唯一解决方案

#standardSQL
DECLARE var_date_option STRING DEFAULT 'DAY';
DECLARE start_date, end_date DATE;
DECLARE date_array ARRAY<DATE>;

SET (start_date, end_date, var_date_option) = ('2019-01-01','2020-01-01', 'MONTH');

SET date_array = (
  SELECT CASE var_date_option 
    WHEN 'DAY' THEN GENERATE_DATE_ARRAY(start_date, end_date, INTERVAL 1 DAY)
    WHEN 'WEEK' THEN GENERATE_DATE_ARRAY(start_date, end_date, INTERVAL 1 WEEK)
    WHEN 'MONTH' THEN GENERATE_DATE_ARRAY(start_date, end_date, INTERVAL 1 MONTH)
  END
);

SELECT * FROM UNNEST(date_array) AS date_dt;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用脚本生成 INTERVAL 1 ? 的相关文章

随机推荐