Определение постоянной таблицы в BigQuery (или Postgres)

#postgresql #google-bigquery

# #postgresql #google-bigquery

Вопрос:

Как мне определить в простой единственной строке временную таблицу констант в BigQuery (или Postgres, синтаксис которой, вероятно, будет работать в BigQuery)?

 with my_fruits as (
--- ??? define a table 
--- consisting of a single column fruit_name
--- with values ('apple', 'pear', 'gooseberry', ...  (12 more fruits))
)
select * from my_fruits left join 
(select fruit_name, 1 is_present from my_dataset.your_fruits)
using (fruit_name)
 

Ответ №1:

Вы можете использовать UNNEST:

 select * from unnest(['apple', 'pear', 'gooseberry']) as fruit_name
 

Вы также можете присоединиться к UNNEST напрямую.

Ответ №2:

С помощью Postgres вы можете легко создать таблицу констант с несколькими столбцами:

 select * from (values (1,1,1), (1,2,3)) as x(one, two, three)
 

К сожалению, приведенное выше не работает для BigQuery и не уверен, есть ли для него подходящая замена.

Комментарии:

1. Вот способ BigQuery: select * from unnest(array<struct<one int64, two int64, three int64>>[(1, 1, 1),(1, 2, 3)]) или просто select * from unnest(array[(1, 1, 1),(1, 2, 3)])