Carga masiva de CSVs a Redshift con Python

Resumen

Automatizar la carga de archivos CSV a Redshift con Python te permite cerrar el ciclo completo de un pipeline ETL sin escribir consultas manuales por cada tabla. Aquí pondrás a prueba la función de carga, iterarás sobre múltiples archivos y validarás los resultados directamente en la base de datos.

¿Cómo probar la función de carga en Redshift?

La primera validación se hace con un archivo conocido para confirmar que la sentencia SQL está bien formada antes de escalar el proceso.

Al ejecutar la carga sobre years.csv, aparece un error en la sentencia por una comilla mal ubicada. La estructura correcta del COPY exige comillas alrededor del nombre de la tabla, las credenciales y las opciones del CSV. Una vez corregida la sintaxis y recargada la conexión, la tabla queda poblada en Redshift [01:00].

¿Por qué falla la conexión al reejecutar el script? Porque la conexión anterior quedó abierta. Debes cerrarla con con.close() y volver a crearla antes de ejecutar nuevas cargas.

¿Cómo iterar sobre múltiples archivos CSV con os.listdir?

Para que el proceso sea automático, en lugar de cargar archivo por archivo, lees el contenido del directorio target y recorres la lista resultante.

El flujo queda así:

  • Usas os.listdir para obtener todos los archivos CSV almacenados en la carpeta destino.
  • Guardas el resultado en una lista llamada list_files.
  • Iteras con un for file in list_files y llamas a la función de carga por cada archivo.

Antes de la carga masiva conviene truncar la tabla con TRUNCATE TABLE etl_test.years para evitar duplicados de la prueba previa [02:30]. Esto deja la tabla vacía y lista para recibir la información sin sobrescribir registros parciales.

¿Qué archivos componen el modelo estrella?

El pipeline carga seis tablas que conforman un star schema sobre etl_test:

  • years: dimensión temporal con identificador único y año.
  • quantity: 12 tipos distintos de unidades de medida.
  • codes: tabla enriquecida con categorías y nombres de producto.
  • countries: dimensión geográfica con región y subregión.
  • flow: dirección del comercio (importación o exportación).
  • trades: tabla de hechos con aproximadamente seis millones de registros.

Después de cargar cada archivo al bucket S3 y de allí a Redshift, ejecutas commit para confirmar los cambios y cierras la conexión.

¿Cómo validar las cargas y aprovechar el modelo estrella?

La validación se hace con consultas directas en la consola de Redshift, revisando que cada tabla tenga su identificador único y los campos esperados.

La tabla trades tarda un poco más por su volumen y por no tener indexación total en Redshift, así que conviene aplicar un LIMIT durante la verificación [05:30]. Aun así, ya cuenta con las llaves foráneas hacia las dimensiones, lo que abre la puerta a análisis mucho más ricos.

¿Qué ventaja da un esquema estrella frente a una tabla plana? Permite cruzar la tabla de hechos con dimensiones como countries o codes para responder preguntas tipo: ¿qué subregión tuvo más importaciones en dólares en cierto año? Antes solo tenías códigos sueltos, ahora tienes nombres y categorías listas para BI.

Con countries puedes filtrar por región o subregión y comparar montos de importación. Con codes, gracias al enriquecimiento previo, consultas por categoría o por nombre de producto sin necesidad de joins externos.

¿Es Redshift la única opción de destino?

No. El pipeline está diseñado para ser portable. Los targets pueden cambiar sin reescribir toda la lógica:

  • BigQuery.
  • Snowflake.
  • Cualquier base de datos relacional o repositorio compatible.

Las fuentes también son intercambiables: archivos planos, APIs u otras bases. La función que construiste con Python y Pandas se adapta porque la lógica de extracción, transformación y carga vive separada de las credenciales y los destinos.

¿Qué hace commit al final del proceso? Confirma todas las inserciones realizadas en la sesión. Sin él, los cambios quedan en estado pendiente y se pierden al cerrar la conexión.

Con esto cierras el módulo de ETL con Python y Pandas, listo para replicar el mismo flujo en Pentaho. Si quieres profundizar en modelos estrella, BI o el funcionamiento interno de Redshift, revisa los recursos de la clase. ¿Qué fuente o destino vas a conectar tú primero?