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.

  1. 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

  1. INNER JOIN: Devuelve las filas que tienen coincidencias en ambas tablas.
  2. 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.
  3. 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.
  4. 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.
  5. 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;

  1. 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.

  1. 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

SELECT columna1, columna2 FROM tabla1
UNION
SELECT columna1, columna2 FROM tabla2;

Ejemplo Práctico de Unión

SELECT name FROM `project.dataset.employees`
UNION
SELECT name FROM `project.dataset.contractors`;

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`;

  1. 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.

SELECT name FROM `project.dataset.employees`
UNION
SELECT name FROM `project.dataset.contractors`;

  1. 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

Módulo 2: SQL Básico en BigQuery

Módulo 3: SQL Intermedio en BigQuery

Módulo 4: SQL Avanzado en BigQuery

Módulo 5: Gestión de Datos en BigQuery

Módulo 6: Optimización del Rendimiento de BigQuery

Módulo 7: Seguridad y Cumplimiento en BigQuery

Módulo 8: Integración y Automatización de BigQuery

Módulo 9: Machine Learning en BigQuery (BQML)

Módulo 10: Casos de Uso de BigQuery en el Mundo Real

© Copyright 2024. Todos los derechos reservados