我们正在尝试找到一种语法,以从日期函数的第三个参数生成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尚不可用
DAY|WEEK|MONTH
因此,不幸的是,以下是我今天能想到的唯一解决方案
#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;