Extracción de datos con Pentaho desde cero

Resumen

Si vienes de construir un pipeline en Python y te preguntas cómo replicarlo sin escribir tanto código, Pentaho te da una alternativa visual y open source para montar tu ETL arrastrando cajas. Esta guía te muestra cómo extraer datos desde PostgreSQL, un archivo CSV y un JSON usando la interfaz de Pentaho, paso a paso.

Qué es Pentaho y por qué usarlo en un proceso ETL

Pentaho es una herramienta open source pensada para diseñar procesos de extracción, transformación y carga sin tener que programarlo todo desde cero. En lugar de escribir scripts, tú armas el flujo conectando steps visuales.

La interfaz se divide en dos zonas que vale la pena reconocer desde el inicio:

  • View: muestra todo lo que usa el proyecto, como conexiones a base de datos y los steps configurados.
  • Design: contiene las cajas disponibles para construir el flujo, organizadas por input, output y demás categorías.
  • Preview data: te permite ver el resultado de cada paso antes de ejecutar el flujo completo.

La idea es simple: defines de dónde sacas los datos, cómo los transformas y dónde los cargas, todo arrastrando bloques.

¿Qué diferencia hay entre Pentaho y un ETL en Python? Pentaho te da rapidez y una interfaz visual sin escribir código, mientras que Python te da control total y customización. La elección depende del proyecto y del nivel de flexibilidad que necesites.

Cómo crear una conexión a PostgreSQL desde Pentaho

Antes de leer datos de una base, necesitas registrar la conexión. En la sección de conexiones le das en New y eliges PostgreSQL como motor.

Los parámetros que usé en la clase fueron:

  • Host: localhost, porque la base corre de forma local.
  • Nombre de la base: postgres.
  • Username: postgres.
  • Password: my_secret_pass.

Después pulsas Test para validar que la conexión responde y luego OK para guardarla. A partir de ahí, esa conexión queda disponible para cualquier step del proyecto.

Cómo leer una tabla con Table input

Para extraer datos desde Postgres usas el step Table input, que está dentro de la categoría Input del panel de diseño. Lo arrastras al lienzo y escribes la consulta SQL que necesites.

En este caso, la consulta fue un SELECT FROM trades con un límite de 1.000 filas para no traer toda la tabla en la prueba. Seleccionas la conexión que creaste antes, ejecutas y, al terminar, en Preview data ves los registros que vienen directo de tu base.

Cómo leer archivos CSV y JSON con los inputs de Pentaho

Un proceso ETL casi nunca depende de una sola fuente. Aquí entran los steps para archivos planos y semiestructurados.

Cómo configurar un CSV input

Arrastras CSV input al lienzo, lo abres y le das un nombre, en este caso codes. Luego buscas el archivo, que estaba en la carpeta ETL/sources/codes.csv, y confirmas que el delimitador es la coma.

Un detalle útil: con la opción Get Fields y una muestra de 100 líneas, Pentaho infiere automáticamente los campos y sus tipos. Después usas Preview para confirmar que la información se lee correctamente y das OK.

Cómo extraer datos de un JSON con JSON input

El JSON requiere un poco más de trabajo porque es un formato no estructurado. Arrastras JSON input, le pones un nombre como JSON country y apuntas al archivo ETL/sources/country_data.json.

Luego, en la pestaña Fields, defines la estructura usando rutas tipo JSONPath. Para este dataset, los campos extraídos fueron:

  • country: con la ruta $..country.
  • alpha3: con la ruta $..alpha3.
  • region: con la ruta $..region.
  • subregion: con la ruta $..subregion.

El símbolo $.. indica que Pentaho recorra todo el árbol del JSON buscando esa clave. Haces Preview, confirmas que el dataset trae las cuatro columnas y guardas.

¿Qué es JSONPath en Pentaho? Es la sintaxis que usas en JSON input para indicar qué campos extraer del archivo. Por ejemplo, $..country recorre todo el JSON y devuelve cada valor asociado a la clave country.

Cuándo conviene usar Pentaho frente a un ETL custom en Python

Después de ver lo rápido que se arma una extracción aquí, surge la pregunta obvia: ¿código propio o herramienta visual?

La respuesta no es absoluta y depende del contexto. Estas son las dos caras:

  • Python custom: te da elasticidad total y control fino sobre cada transformación. Ideal cuando necesitas lógica muy específica o integraciones particulares.
  • Pentaho: te da velocidad de desarrollo, interfaz visual y steps listos para usar. Ideal cuando quieres montar flujos estándar sin reinventar la rueda.
  • Criterio de decisión: el tipo de proyecto, la madurez del equipo y la necesidad de mantenimiento a largo plazo.

Si trabajaste el módulo anterior con pandas, ya tienes la referencia de lo que cuesta hacerlo a mano. Ahora que viste la versión Pentaho, cuéntame en los comentarios cuál te resultó más cómoda y en qué escenario aplicarías cada una.