Carga y Validación de Datos en Sakila ETL con Python y SQL

Clase 23 de 24Curso de ETL e ingesta de datos con Python

Resumen

El proceso de creación de una base de datos y sus tablas es crucial en el manejo de datos, especialmente cuando se trata de proyectos ETL (Extract, Transform, Load). En este ejercicio, hemos usado MySQL junto con Python para demostrar cómo se puede automatizar esta tarea.

Primero, verificamos si la base de datos existe y, si no es así, la creamos. Usamos el siguiente comando SQL:

CREATE DATABASE IF NOT EXISTS Akila;
USE Akila;

Una vez creada la base de datos, procedemos a la creación de las tablas. Por ejemplo, la tabla actor transformado con su llave primaria y campos personalizados:

CREATE TABLE IF NOT EXISTS actor_transformado (
  actor_id INT PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  description TEXT
);

Esta tabla almacenará transformaciones hechas sobre nuestros datos de actores, especificando campos como first_name y last_name.

¿Cómo ejecutamos las consultas SQL usando Python?

Para garantizar la integridad del proceso, Python ofrece herramientas que facilitan la conexión con bases de datos SQL, como MySQL Connector y SQLAlchemy. Aquí se explica cómo manejar estas operaciones en Python.

  1. Conexión al servidor: Primeramente, establecemos la conexión al servidor de base de datos y creamos un cursor.

    import mysql.connector

    conn = mysql.connector.connect( host="tu_host", user="tu_usuario", password="tu_contraseña", database="Akila" ) cursor = conn.cursor()

  2. Ejecutar las consultas: Tanto para crear la base de datos como las tablas, ejecutamos las consultas con el cursor.

    cursor.execute("CREATE DATABASE IF NOT EXISTS Akila;") cursor.execute("USE Akila;") cursor.execute(""" CREATE TABLE IF NOT EXISTS actor_transformado ( actor_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), description TEXT ); """)

  3. Confirmar cambios y cerrar conexión: Después de ejecutar las consultas, confirmamos los cambios y cerramos la conexión.

    conn.commit() cursor.close() conn.close()

¿Cómo validar la carga y transformación de los datos con Python?

Una vez creadas las tablas, la carga de datos se realiza usando Pandas y SQLAlchemy. Este proceso recopila los datos, los transforma según necesidades y los guarda en las tablas SQL.

  1. Conectar y cargar datos: Usamos pandas para leer y transformar datos, luego los cargamos a nuestras tablas con SQLAlchemy.

    from sqlalchemy import create_engine import pandas as pd

    engine = create_engine('mysql+mysqlconnector://tu_usuario:tu_contraseña@tu_host/Akila') df = pd.DataFrame({ 'actor_id': [1, 2], 'first_name': ['John', 'Jane'], 'last_name': ['Doe', 'Doe'], 'description': ['Actor principal', 'Actor secundario'] }) df.to_sql('actor_transformado', engine, if_exists='replace', index=False)

  2. Validar carga de datos: Validamos usando queries SQL para asegurar que los datos estén correctamente cargados.

    query = "SELECT * FROM actor_transformado;" df_result = pd.read_sql(query, engine) print(df_result)

Este proceso muestra cómo utilizar la programación para gestionar bases de datos de manera eficiente. Además, al terminar el ejercicio, es una excelente práctica verificar manualmente los datos en MySQL para garantizar que todo esté en su lugar. ¿Has logrado ejecutar este proyecto? ¿Qué retos enfrentaste? ¡Cuéntanos en los comentarios para que podamos ayudarte! Sigue adelante, cada paso cuenta en tu proceso de aprendizaje.