Ao usar as uniões do BigQuery, você pode combinar dados de várias tabelas. Ao unir tabelas, você pode consultar dados com base em relacionamentos e correlações entre conjuntos de dados.
No entanto, é importante mencionar que há alguns tipos de junções no BigQuery SQL: INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN. Cada tipo de união permite que você combine linhas entre tabelas de forma diferente.
Neste artigo, você encontrará um tutorial passo a passo sobre como usar as uniões do BigQuery para combinar dados de várias tabelas.
Observação: Se você ainda não sabe como escrever consultas SQL básicas, confira este tutorial sobre como usar Sintaxe SQL do BigQuery antes de ler este artigo.
Um guia para junções de SQL no BigQuery
Antes de começarmos a escrever consultas usando as uniões do BigQuery, precisamos entender como esses quatro tipos de uniões funcionam e como você pode usá-los para mesclar dados no BigQuery.
INNER JOINO que é uma junção interna: a junção interna faz a correspondência de linhas entre duas tabelas e retorna apenas as linhas correspondentes. Portanto, quando você combinar os dados, ele deixará de fora todas as linhas não correspondentes.
JUNÇÃO ESQUERDAA união à esquerda corresponde a todas as linhas da tabela da esquerda, mesmo que não exista nenhuma linha correspondente na tabela da direita. Aqui, o BigQuery retornará todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita.
RIGHT JOIN: é o oposto de uma união à esquerda. Ela corresponde a todas as linhas da tabela da direita, mesmo que não exista nenhuma linha correspondente na tabela da esquerda.
JUNÇÃO COMPLETAUma união completa combina uniões à esquerda e à direita. Todas as linhas de ambas as tabelas são retornadas, independentemente de serem correspondentes.
Explicação dos tipos de união
Aqui está uma representação visual desses quatro tipos de união.
Como você pode ver, a união interna retornará apenas as linhas correspondentes, uma união esquerda retornará todas as linhas da tabela esquerda, uma união direita retornará todas as linhas da tabela direita e uma união completa retornará todas as linhas de ambas as tabelas.
Veja um exemplo:
Digamos que eu tenha essas duas tabelas contendo informações sobre os times de basquete da NCAA. Embora essas tabelas compartilhem a coluna “Name”, elas também contêm alguns itens diferentes. Combinarei os dados dessas duas tabelas, unindo a coluna “Name” compartilhada.
Ao usar INNER JOIN, o BigQuery retornaria apenas as linhas correspondentes. Aqui está a aparência do resultado.
Como você pode ver, o BigQuery retornou as linhas correspondentes, mas deixou de fora todas as linhas não correspondentes.
Se eu usar a união LEFT, o BigQuery retornará todas as linhas da tabela da esquerda. Como resultado, ele deixará de fora todas as linhas não correspondentes da tabela da direita.
Ao usar RIGHT JOIN, o BigQuery retornará todas as linhas da tabela da direita, deixando de fora as linhas sem correspondência da tabela da esquerda.
Por fim, o FULL JOIN retornará todas as linhas de ambas as tabelas, incluindo as linhas não correspondentes em ambos os lados.
Em todos esses casos, o BigQuery retornaria a palavra “null” para preencher todas as correspondências ausentes.
Agora que você conhece as diferenças entre esses tipos de união, aprenderemos a combinar dados usando essas uniões do BigQuery.
INNER JOIN
Primeiro, usarei a palavra-chave INNER JOIN porque quero que o BigQuery retorne apenas as linhas correspondentes de duas tabelas. Aqui está a sintaxe que usarei:
Sintaxe de INNER JOIN
SELECT nome_da_coluna(s)
FROM table1
INNER JOIN tabela2
ON table1.column_name = table2.column_name;
Mostrarei como usar as uniões do BigQuery para combinar dados desses conjuntos de dados de basquete da NCAA. Enquanto uma das tabelas contém informações sobre as equipes da NCAA (mbb_teams), a outra tabela contém dados sobre os mascotes dessas equipes.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
INNER JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascots.name = teams.name;
Vamos detalhar isso:
1) Primeiro, quero selecionar todas as colunas dos resultados. Usarei a cláusula SELECT *.
2) A cláusula FROM especifica a primeira tabela na união. Usei um alias (AS) para dar a essa tabela um nome temporário (“mascots”), o que me permite usar o alias mais tarde em vez de escrever o nome completo da tabela.
3) A cláusula INNER JOIN especifica a segunda tabela. Também usei um alias para nomear essa tabela.
4) A instrução ON é a condição que faz a correspondência das colunas entre as duas tabelas. Em vez de escrever o nome da tabela, usei os aliases seguidos da coluna: “name” (nome).
JUNÇÃO ESQUERDA
Depois de aprender a usar a instrução INNER JOIN, você pode escrever facilmente uma consulta LEFT JOIN seguindo o mesmo padrão.
Sintaxe de LEFT JOIN
SELECT nome_da_coluna(s)
FROM table1
LEFT JOIN tabela2
ON table1.column_name = table2.column_name;
Aqui está a fórmula completa.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
LEFT JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascots.name = teams.name;
RIGHT JOIN
Agora vamos escrever uma consulta SQL para retornar apenas as linhas correspondentes da tabela correta.
Sintaxe de RIGHT JOIN
SELECT nome_da_coluna(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
Esta é a aparência da consulta.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
RIGHT JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascots.name = teams.name;
JUNÇÃO COMPLETA
Por fim, podemos usar o FULL JOIN para escrever uma consulta que retorne todas as linhas de ambas as tabelas, independentemente de haver correspondência entre elas. Veja a seguir a sintaxe do FULL JOIN.
Sintaxe de FULL JOIN
SELECT nome_da_coluna(s)
FROM table1
FULL JOIN tabela2
ON table1.column_name = table2.column_name;
Essa é a aparência da consulta completa.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
FULL JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascots.name = teams.name;
Lembre-se de que você pode combinar cláusulas JOIN com outras instruções. Por exemplo, eu poderia combinar essas duas tabelas e usar WHERE para filtrar dados específicos. Digamos que eu queira que o BigQuery retorne apenas os mascotes que começam com a letra “A”.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
FULL JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotes.name = equipes.name
WHERE mascote LIKE ‘A%’;
Uniões do BigQuery: um guia passo a passo
É isso aí! É assim que você pode usar as uniões do BigQuery para combinar dados de várias tabelas. Se você quiser saber mais sobre o BigQuery, confira este artigo sobre como usar o Sintaxe SQL do BigQuery para escrever suas primeiras consultas.
