Как разделить GENERATE_DATE_ARRAY на дату для одной строки в Google Bigquery, чтобы создать представление даты? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь создать представление даты, используя MIN и MAX дат из другой таблицы в Google Bigquery. Я натолкнулся на GENERATE_DATE_ARRAY и смог создать нужные мне даты в одном массиве. Однако разделение их на одну дату в строке было сложной задачей.

Я пытался использовать UNNEST для этого, но когда я запускаю код, он дает мне только первый результат, поэтому я что-то здесь упускаю.

Это код, который я использовал для генерации массива, но я застрял при его выделении:

SELECT GENERATE_DATE_ARRAY( 
              MIN(CAST(journaldate AS DATE)), 
              MAX(CAST(journaldate AS DATE))
            )
          AS Period
FROM
dataset.table

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Я думаю, что вы хотите:

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
0 голосов
/ 08 июня 2019

Другая версия:

#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
...