我们正在尝试找到一种语法来从日期函数的第三个参数生成 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
那些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;
关于sql - 如何使用脚本生成 INTERVAL 1 <day|week|month>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071500/