Al utilizar las uniones de BigQuery, puede combinar datos de varias tablas. Al unir tablas, puede consultar datos basándose en relaciones y correlaciones entre conjuntos de datos.
Sin embargo, es importante mencionar que hay algunos tipos de uniones en BigQuery SQL: INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN. Cada tipo de unión permite emparejar filas entre tablas de forma diferente.
En este artículo, encontrará un tutorial paso a paso sobre cómo utilizar las uniones de BigQuery para combinar datos de varias tablas.
Nota: Si aún no sabes cómo escribir consultas SQL básicas, consulta este tutorial sobre cómo utilizar Sintaxis SQL de BigQuery antes de leer este artículo.
Guía de SQL Joins en BigQuery
Antes de empezar a escribir consultas utilizando las uniones de BigQuery, tenemos que entender cómo funcionan estos cuatro tipos de uniones y cómo se pueden utilizar para combinar datos en BigQuery.
INNER JOINjoin interno: el join interno compara filas entre dos tablas y devuelve sólo las filas coincidentes. Por lo tanto, al combinar los datos, dejará fuera todas las filas no coincidentes.
LEFT JOINUna unión a la izquierda hace coincidir todas las filas de la tabla izquierda aunque no exista ninguna fila coincidente en la tabla derecha. En este caso, BigQuery devolverá todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha.
UNIÓN A LA DERECHAes lo contrario de una unión a la izquierda. Hace coincidir todas las filas de la tabla derecha aunque no exista ninguna fila coincidente en la tabla izquierda.
JOIN COMPLETOUna unión completa combina uniones a la izquierda y a la derecha. Se devuelven todas las filas de ambas tablas independientemente de si coinciden o no.
Explicación de los tipos de uniones
He aquí una representación visual de estos cuatro tipos de unión.
Como puede ver, la unión interna devolverá sólo las filas coincidentes, una unión izquierda devolverá todas las filas de la tabla izquierda, una unión derecha devolverá todas las filas de la tabla derecha y una unión completa devolverá todas las filas de ambas tablas.
He aquí un ejemplo:
Supongamos que tengo estas dos tablas que contienen información sobre los equipos de baloncesto de la NCAA. Aunque estas tablas comparten la columna “Nombre”, también contienen algunos elementos diferentes. Combinaré los datos de estas dos tablas, uniendo la columna compartida “Nombre”.
Utilizando INNER JOIN, BigQuery devolvería sólo las filas coincidentes. Este es el resultado.
Como puede ver, BigQuery devolvió las filas coincidentes pero dejó fuera todas las filas no coincidentes.
Si utilizo LEFT join, BigQuery devolverá todas las filas de la tabla izquierda. Como resultado, dejará fuera todas las filas no coincidentes de la tabla derecha.
Al utilizar RIGHT JOIN, BigQuery devolverá todas las filas de la tabla de la derecha, dejando fuera las filas no coincidentes de la tabla de la izquierda.
Por último, FULL JOIN devolverá todas las filas de ambas tablas, incluidas las filas no coincidentes de ambos lados.
En todos estos casos, BigQuery devolvería la palabra “null” para rellenar todas las coincidencias que faltan.
Ahora que ya conoces las diferencias entre estos tipos de join, aprenderemos a combinar datos utilizando estos joins de BigQuery.
INNER JOIN
En primer lugar, utilizaré la palabra clave INNER JOIN porque quiero que BigQuery devuelva sólo las filas coincidentes de dos tablas. Esta es la sintaxis que usaré:
Sintaxis INNER JOIN
SELECT nombre_columna(s)
DE tabla1
INNER JOIN tabla2
ON tabla1.nombre_columna = tabla2.nombre_columna;
Le mostraré cómo utilizar las uniones de BigQuery para combinar datos de estos conjuntos de datos de baloncesto de la NCAA. Mientras que una de las tablas contiene información sobre los equipos de la NCAA (mbb_teams), la otra tabla contiene datos sobre las mascotas de estos equipos.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
INNER JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotas.nombre = equipos.nombre;
Vamos a desglosarlo:
1) En primer lugar, quiero seleccionar todas las columnas de los resultados. Voy a utilizar la cláusula SELECT *.
2) La cláusula FROM especifica la primera tabla de la unión. He utilizado un alias (AS) para dar a esta tabla un nombre temporal (“mascotas”), lo que me permite utilizar el alias más adelante en lugar de escribir el nombre completo de la tabla.
3) La cláusula INNER JOIN especifica la segunda tabla. También he utilizado un alias para nombrar esta tabla.
4) La sentencia ON es la condición que hace coincidir las columnas entre las dos tablas. En lugar de escribir el nombre de la tabla, he utilizado los alias seguidos de la columna “nombre”.
LEFT JOIN
Después de aprender a utilizar la sentencia INNER JOIN, puede escribir fácilmente una consulta LEFT JOIN siguiendo el mismo patrón.
Sintaxis LEFT JOIN
SELECT nombre_columna(s)
DE tabla1
LEFT JOIN tabla2
ON tabla1.nombre_columna = tabla2.nombre_columna;
Aquí está la fórmula completa.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
LEFT JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotas.nombre = equipos.nombre;
UNIÓN A LA DERECHA
Ahora vamos a escribir una consulta SQL para devolver sólo las filas coincidentes de la tabla correcta.
Sintaxis de RIGHT JOIN
SELECT nombre_columna(s)
DE tabla1
RIGHT JOIN tabla2
ON tabla1.nombre_columna = tabla2.nombre_columna;
Este es el aspecto que tendría la consulta.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
RIGHT JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotas.nombre = equipos.nombre;
JOIN COMPLETO
Por último, podemos utilizar FULL JOIN para escribir una consulta que devuelva todas las filas de ambas tablas, independientemente de si coinciden o no. Esta es la sintaxis de FULL JOIN.
Sintaxis FULL JOIN
SELECT nombre_columna(s)
DE tabla1
FULL JOIN tabla2
ON tabla1.nombre_columna = tabla2.nombre_columna;
Así sería la consulta completa.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
FULL JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotas.nombre = equipos.nombre;
Recuerde que puede combinar las cláusulas JOIN con otras sentencias. Por ejemplo, podría combinar estas dos tablas y utilizar WHERE para filtrar datos específicos. Digamos que quiero que BigQuery me devuelva sólo las mascotas que empiecen por la letra “A”.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mascots` AS mascots
FULL JOIN `bigquery-public-data.ncaa_basketball.mbb_teams` AS teams
ON mascotas.nombre = equipos.nombre
WHERE mascota LIKE ‘A%’;
Uniones en BigQuery: guía paso a paso
Ahí lo tiene. Así es como puede utilizar las uniones de BigQuery para combinar datos de varias tablas. Si quieres aprender más sobre BigQuery, echa un vistazo a este artículo sobre cómo utilizar Sintaxis SQL de BigQuery para escribir sus primeras consultas.
