如何在 Google Bigquery 的单行日期中拆分 GENERATE_DATE_ARRAY 以创建日期视图?
How to split the GENERATE_DATE_ARRAY in a date for a single row in Google Bigquery to create a date view?
我正在尝试使用 Google Bigquery 中另一个 table 的日期的最小值和最大值来创建日期视图。我遇到了 GENERATE_DATE_ARRAY 并且能够在单个数组中创建我想要的日期。然而,将它们分成每行一个日期一直是困难的部分。
我曾尝试使用 UNNEST 来执行此操作,但是当我 运行 代码时,它只给了我第一个结果,所以我在这里遗漏了一些东西。
这是我用来生成数组的代码,但我一直坚持将其拆分:
SELECT GENERATE_DATE_ARRAY(
MIN(CAST(journaldate AS DATE)),
MAX(CAST(journaldate AS DATE))
)
AS Period
FROM
dataset.table
我想你想要:
SELECT Period
FROM (SELECT MIN(CAST(journaldate AS DATE)) as min_date,
MAX(CAST(journaldate AS DATE)) as max_date
FROM dataset.table
) t JOIN
UNNEST(GENERATE_DATE_ARRAY(t.min_date, t.max_date)) period
另一个版本是:
#standardSQL
SELECT period FROM UNNEST(
GENERATE_DATE_ARRAY(
(SELECT MIN(CAST(journaldate AS DATE)) FROM `project.dataset.table`),
(SELECT MAX(CAST(journaldate AS DATE)) FROM `project.dataset.table`)
)
) period
我正在尝试使用 Google Bigquery 中另一个 table 的日期的最小值和最大值来创建日期视图。我遇到了 GENERATE_DATE_ARRAY 并且能够在单个数组中创建我想要的日期。然而,将它们分成每行一个日期一直是困难的部分。
我曾尝试使用 UNNEST 来执行此操作,但是当我 运行 代码时,它只给了我第一个结果,所以我在这里遗漏了一些东西。
这是我用来生成数组的代码,但我一直坚持将其拆分:
SELECT GENERATE_DATE_ARRAY(
MIN(CAST(journaldate AS DATE)),
MAX(CAST(journaldate AS DATE))
)
AS Period
FROM
dataset.table
我想你想要:
SELECT Period
FROM (SELECT MIN(CAST(journaldate AS DATE)) as min_date,
MAX(CAST(journaldate AS DATE)) as max_date
FROM dataset.table
) t JOIN
UNNEST(GENERATE_DATE_ARRAY(t.min_date, t.max_date)) period
另一个版本是:
#standardSQL
SELECT period FROM UNNEST(
GENERATE_DATE_ARRAY(
(SELECT MIN(CAST(journaldate AS DATE)) FROM `project.dataset.table`),
(SELECT MAX(CAST(journaldate AS DATE)) FROM `project.dataset.table`)
)
) period