Возникают проблемы с получением всех столбцов в SQL-соединении - BigQuery SQL JOINS - PullRequest
0 голосов
/ 11 июля 2019

У меня проблемы с объединениями SQL в Bigquery. Я очень новичок в SQL, поэтому я уверен, что это просто фундаментальное понимание типа проблемы. Надеясь, что кто-то может указать мне правильное направление.

Пример соединения:

SELECT domain,content1,content2,content3,content4 FROM `project.dataset.content` //10 rows
FULL OUTER JOIN 
(Select domain from `project.dataset.all_domains`) USING (domain) //100 rows - This is a single column list of all GUIDs in my dataset. Each Table uses the same GUIDs a portion of this list, so I am joining it to ensure I get all data returned to a single table
FULL OUTER JOIN 
(Select * [e.g.: domain,color1,color2,etc.] from`project.dataflowed.color`)  USING (domain) // 10 rows
FULL OUTER JOIN 
(Select * from `project.dataset.language`) USING (domain) //10 rows
FULL OUTER JOIN 
(Select * from `project.dataset.type`) USING (domain) //10 rows

Я думал, что понял, как это работает, но мне кажется, что я просто получаю:

|| домен | content1 | content2 | content3 | content4 || <- 100 строк ->

Но я надеюсь получить: || домен | content1 | content2 | content3 | content4 | цвет 1 | цвет 2 ... | language2 | язык 2 ... | type1 | type2 ... || <- 100 строк ->

То есть я не получаю столбцы из какой-либо таблицы, кроме исходной (левой?) Таблицы ..?

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

1 Ответ

2 голосов
/ 11 июля 2019

То есть я не получаю столбцы из какой-либо таблицы, кроме исходной (левой?) Таблицы ..?

Ниже приведено описание BigQuery Standard SQL и специально заданный выше вопрос - я полагаю, что ваша FULL OUTER JOIN часть верна и соответствует любой логике, которую вы ожидаете

#standardSQL
SELECT *
FROM `project.dataset.content` 
FULL OUTER JOIN `project.dataset.all_domains` USING(domain)
FULL OUTER JOIN `project.dataset.color` USING(domain)
FULL OUTER JOIN `project.dataset.language` USING(domain)
FULL OUTER JOIN `project.dataset.type` USING(domain)   

Выше предполагается, что единственным общим именем поля между всеми таблицами является domain - в противном случае вам необходимо явно включить все выходные поля в список SELECT и предоставить псевдонимы для неоднозначных полей. Нравится SELECT domain, content1, content2, color1, color2, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...