How do you declare `DAY`, `WEEK`, `MONTH`, `QUARTER`, `YEAR` etc. as a variable in BigQuery? [duplicate]

假装没事ソ 提交于 2020-03-26 03:03:28

问题


I'd like to configure the interval used by my query, but cannot figure out how to declare DAY, WEEK, MONTH, QUARTER, YEAR etc. as a variable.

DECLARE interval ???; -- What datatype is `DAY`, `MONTH` etc?
SET interval = MONTH;

If relevant, my query does something like this:

WITH dates AS (
  SELECT * FROM UNNEST(
    GENERATE_DATE_ARRAY(
      DATE_TRUNC('2019-12-11', MONTH),
      DATE_TRUNC('2020-02-19', MONTH),
      INTERVAL 1 MONTH
    )
  ) as date
)
SELECT * FROM dates;

And I'd like MONTH to be switched out for WEEK or DAY for example.


回答1:


You cannot declare as variables, but this is the best trick I use:

DECLARE var_date_option STRING DEFAULT 'MONTH';

then use as

CASE var_date_option 
    WHEN 'DAY' THEN GENERATE_DATE_ARRAY(t.min_date,t.max_date, INTERVAL 1 DAY)
    WHEN 'WEEK' THEN GENERATE_DATE_ARRAY(t.min_date,t.max_date, INTERVAL 1 WEEK)
    WHEN 'MONTH' THEN GENERATE_DATE_ARRAY(t.min_date,t.max_date, INTERVAL 1 MONTH)
  END


来源:https://stackoverflow.com/questions/60176167/how-do-you-declare-day-week-month-quarter-year-etc-as-a-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!