En este tema, aprenderemos sobre las operaciones de Joins y Uniones en SQL, específicamente en el contexto de BigQuery. Estas operaciones son fundamentales para combinar datos de múltiples tablas y obtener información más completa y útil.
Objetivos de Aprendizaje
- Comprender los diferentes tipos de Joins en SQL.
- Aprender a utilizar Joins en BigQuery.
- Entender cómo funcionan las Uniones (Unions) y cuándo utilizarlas.
- Practicar con ejemplos y ejercicios para consolidar el conocimiento.
- Introducción a los Joins
Los Joins se utilizan para combinar filas de dos o más tablas basadas en una columna relacionada entre ellas. Existen varios tipos de Joins, cada uno con su propósito específico:
Tipos de Joins
- INNER JOIN: Devuelve las filas que tienen coincidencias en ambas tablas.
- LEFT JOIN (o LEFT OUTER JOIN): Devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Si no hay coincidencia, los resultados de la tabla derecha serán NULL.
- RIGHT JOIN (o RIGHT OUTER JOIN): Devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Si no hay coincidencia, los resultados de la tabla izquierda serán NULL.
- FULL JOIN (o FULL OUTER JOIN): Devuelve todas las filas cuando hay una coincidencia en una de las tablas. Si no hay coincidencia, los resultados serán NULL en las columnas de la tabla que no tiene coincidencia.
- CROSS JOIN: Devuelve el producto cartesiano de las dos tablas.
Sintaxis Básica de un Join
SELECT tabla1.columna1, tabla2.columna2 FROM tabla1 JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;
- Ejemplos Prácticos de Joins en BigQuery
INNER JOIN
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees INNER JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Explicación: Este INNER JOIN selecciona los nombres de los empleados y los nombres de los departamentos donde hay una coincidencia en department_id
.
LEFT JOIN
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees LEFT JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Explicación: Este LEFT JOIN selecciona todos los nombres de los empleados y los nombres de los departamentos. Si un empleado no tiene un departamento asociado, el campo department_name
será NULL.
RIGHT JOIN
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees RIGHT JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Explicación: Este RIGHT JOIN selecciona todos los nombres de los departamentos y los nombres de los empleados. Si un departamento no tiene empleados asociados, el campo name
será NULL.
FULL JOIN
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees FULL JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Explicación: Este FULL JOIN selecciona todos los nombres de los empleados y los nombres de los departamentos, incluyendo aquellos que no tienen coincidencias en la otra tabla.
CROSS JOIN
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees CROSS JOIN `project.dataset.departments` AS departments;
Explicación: Este CROSS JOIN devuelve el producto cartesiano de las dos tablas, es decir, cada fila de employees
se combina con cada fila de departments
.
- Uniones (Unions)
Las Uniones se utilizan para combinar los resultados de dos o más consultas SELECT en una sola. Las consultas deben tener el mismo número de columnas y tipos de datos compatibles.
Sintaxis Básica de una Unión
Ejemplo Práctico de Unión
Explicación: Este UNION selecciona todos los nombres de la tabla employees
y la tabla contractors
, eliminando duplicados.
UNION ALL
Si deseas incluir duplicados, puedes usar UNION ALL
:
SELECT name FROM `project.dataset.employees` UNION ALL SELECT name FROM `project.dataset.contractors`;
- Ejercicios Prácticos
Ejercicio 1: INNER JOIN
Instrucción: Selecciona los nombres de los empleados y los nombres de los departamentos donde hay una coincidencia en department_id
.
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees INNER JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Ejercicio 2: LEFT JOIN
Instrucción: Selecciona todos los nombres de los empleados y los nombres de los departamentos, incluyendo aquellos empleados que no tienen un departamento asociado.
SELECT employees.name, departments.department_name FROM `project.dataset.employees` AS employees LEFT JOIN `project.dataset.departments` AS departments ON employees.department_id = departments.department_id;
Ejercicio 3: UNION
Instrucción: Selecciona todos los nombres de la tabla employees
y la tabla contractors
, eliminando duplicados.
- Resumen
En esta sección, hemos aprendido sobre los diferentes tipos de Joins y cómo utilizarlos en BigQuery para combinar datos de múltiples tablas. También hemos explorado las Uniones para combinar los resultados de varias consultas SELECT. Estos conceptos son fundamentales para trabajar con datos relacionales y realizar análisis complejos.
Próximos Pasos
En el siguiente tema, profundizaremos en las subconsultas, que nos permitirán realizar consultas más avanzadas y anidadas dentro de nuestras consultas principales.
Curso de BigQuery
Módulo 1: Introducción a BigQuery
- ¿Qué es BigQuery?
- Configuración de tu Entorno de BigQuery
- Entendiendo la Arquitectura de BigQuery
- Visión General de la Consola de BigQuery
Módulo 2: SQL Básico en BigQuery
Módulo 3: SQL Intermedio en BigQuery
Módulo 4: SQL Avanzado en BigQuery
- Joins Avanzados
- Campos Anidados y Repetidos
- Funciones Definidas por el Usuario (UDFs)
- Particionamiento y Agrupamiento
Módulo 5: Gestión de Datos en BigQuery
- Cargando Datos en BigQuery
- Exportando Datos desde BigQuery
- Transformación y Limpieza de Datos
- Gestión de Conjuntos de Datos y Tablas
Módulo 6: Optimización del Rendimiento de BigQuery
- Técnicas de Optimización de Consultas
- Entendiendo los Planes de Ejecución de Consultas
- Uso de Vistas Materializadas
- Optimización del Almacenamiento
Módulo 7: Seguridad y Cumplimiento en BigQuery
- Control de Acceso y Permisos
- Encriptación de Datos
- Auditoría y Monitoreo
- Cumplimiento y Mejores Prácticas
Módulo 8: Integración y Automatización de BigQuery
- Integración con Servicios de Google Cloud
- Uso de BigQuery con Dataflow
- Automatización de Flujos de Trabajo con Cloud Functions
- Programación de Consultas con Cloud Scheduler
Módulo 9: Machine Learning en BigQuery (BQML)
- Introducción a BigQuery ML
- Creación y Entrenamiento de Modelos
- Evaluación y Predicción con Modelos
- Características Avanzadas de BQML