Rafael Arruda

Rafael Arruda

Data Engineer | Specialist and Instructor Pentaho

Otros Artículos:

Cómo Implementar Carga Dinámica en Pentaho: Guía Paso a Paso para ETL

Compartir en linkedin
LinkedIn
Compartir en facebook
Facebook
Compartir en twitter
Twitter
Compartir en whatsapp
WhatsApp

En los proyectos de Data Warehouse, el primer paso tras finalizar el modelado de datos es implementar el ETL. En este artículo, exploramos cómo realizar una carga dinámica en Pentaho, un enfoque clave para optimizar la transferencia de datos desde sistemas de producción hacia el área de staging. Este método es especialmente útil en proyectos con un gran volumen de tablas, permitiendo agilizar y automatizar el proceso mediante pipelines y configuraciones específicas.

Los pasos son los siguientes:

  • Área de Staging.
  • Dimensiones.
  • Tabla de hechos.
  • Validación de los datos.
  • Orquestación del ETL.
  • Documentación del DW.


En este artículo vamos a hablar sobre el primer paso, que es cuando extraemos los datos del sistema de producción, sin realizar ningún tipo de tratamiento, es decir, datos en bruto. 

Dependiendo del proyecto, podemos tener 10, 20, 50 o hasta 100 tablas; esto puede variar según el tamaño del proyecto.

Para dinamizar este proceso vamos a crear un proceso para cargar todas las tablas en un solo Job. 

Vamos a utilizar 2 pipelines y enviar datos de un pipeline para el otro.

El primer pipeline leerá la tabla de configuración para listar todas las tablas de un schema. La lógica es la misma para todos los bancos de datos; en este ejemplo, estamos utilizando MySQL:

				
					SELECT t.table_schema, t.table_name, CONCAT('stg', '_',t.table_name) AS stg
FROM information_schema.`TABLES` t
WHERE t.TABLE_SCHEMA = 'north'


				
			

El Copy Rows to Result se utiliza para enviar datos de un pipeline a otro. Con esta consulta, obtenemos tanto la tabla de origen como la tabla de destino, que será nuestra tabla de Staging. 

El segundo ETL se configura así:

En Generate, creamos los campos con un valor: @1 y @2, y en Replace, hacemos el cambio de estos valores por la variable enviada desde el pipeline anterior.

Este paso es fundamental para que los datos del ETL anterior lleguen a este punto.

En el Table Input utilizamos la variable de la tabla:

				
					select * from ${table_name}


				
			

Y en el Table Output utilizamos la variable stg.

Al ejecutar el Workflow, el proceso se ejecuta para todas las tablas en formato de bucle (loop).

				
					2024/10/22 08:54:37 - Write to log.0 - 
2024/10/22 08:54:37 - Write to log.0 - ------------> Linenr 1------------------------------
2024/10/22 08:54:37 - Write to log.0 - table_schema = north
2024/10/22 08:54:37 - Write to log.0 - table_name = categories
2024/10/22 08:54:37 - Write to log.0 - 
2024/10/22 08:54:37 - Write to log.0 - ====================
2024/10/22 08:54:37 - Entrada_Dados.0 - Finished reading query, closing connection.
2024/10/22 08:54:37 - Replace in string.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
2024/10/22 08:54:37 - Entrada_Dados.0 - Finished processing (I=8, O=0, R=0, W=8, U=0, E=0)
2024/10/22 08:54:37 - Write to log.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
2024/10/22 08:54:37 - Table output.0 - Finished processing (I=0, O=8, R=8, W=8, U=0, E=0)
2024/10/22 08:54:37 - entrada_var - Pipeline duration : 0.121 seconds [  0.121" ]
2024/10/22 08:54:37 - entrada_var - Execution finished on a local pipeline engine with run configuration 'local'
2024/10/22 08:54:37 - entrada_var.hpl - Using run configuration [local]
2024/10/22 08:54:37 - entrada_var - Executing this pipeline using the Local Pipeline Engine with run configuration 'local'
2024/10/22 08:54:37 - entrada_var - Execution started for pipeline [entrada_var]
2024/10/22 08:54:37 - Table output.0 - Connected to database [DW] (commit=1000)
2024/10/22 08:54:37 - generate.0 - Finished processing (I=0, O=0, R=0, W=1, U=0, E=0)
2024/10/22 08:54:37 - Write to log.0 - 
2024/10/22 08:54:37 - Write to log.0 - ------------> Linenr 1------------------------------
2024/10/22 08:54:37 - Write to log.0 - table_schema = north
2024/10/22 08:54:37 - Write to log.0 - table_name = customers



				
			

ETL finalizado:

Al final, también se podría añadir un paso para enviar un correo electrónico al equipo, avisando que el proceso se ejecutó con éxito. Igualmente, se podría enviar otro correo en caso de error.

Una información importante es que este ejemplo se realizó con las tablas ya creadas.
Por eso, el paso del modelado de datos es tan importante, ya que será tu GPS en cualquier proyecto de Data Warehouse.


Hasta el próximo artículo.
Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Business Data Master Logo

No te pierdas el

WEBINAR
Gratuito

Explicaremos en detalle los contenidos y objetivos del Business Data Master

29/11/2021

18:30 (GTM+1)

Online

BUSINESS DATA MASTER

* Tu información será utilizada exclusivamente para contactarte en relación al Business Data Master. No hacemos spam ni compartimos datos con terceros.