#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)])