Contenido del curso
Modelos dimensionales
- 6

Data Warehouse, Data Lake y Lakehouse
07:02 min - 7

Modelo estrella vs copo de nieve en datos
05:14 min - 8

Tipos de dimensiones lentamente cambiantes
04:32 min - 9

Dimensión tipo 1: sobrescribir sin guardar historia
07:13 min - 10

Dimensión tipo 2
06:05 min - 11

Dimensión tipo 3: historia en columnas
03:31 min - 12

Tabla de hechos (fact)
09:04 min - 13

Configuración de herramientas para Data Warehouse y ETL
03:22 min - 14

Cómo extraer dimensiones de preguntas de negocio
08:54 min - 15

Diseño de tablas en un modelo dimensional
11:23 min
ETL para inserción en Data Warehouse
- 16

Documento de mapeo en ETL para data warehouse
19:25 min - 17

Creando tablas dimensionales en Redshift
07:09 min - 18

Extracción: querys en SQL
17:28 min - 19

Cruce de fuentes en Pentaho con Stream Lookup
09:25 min - 20

Transformación ETL con Pentaho paso a paso
Viendo ahora - 21

Carga de datos transformados a Redshift con Pentaho
15:01 min - 22

Cómo cargar la tabla de hechos con Pentaho
12:21 min - 23

Cómo calcular MaxID y MaxDate en Pentaho
17:26 min - 24

Orquestar ETL en Pentaho: job
24:27 min - 25

Solución ETL con dimensiones en paralelo en Redshift
07:27 min
Cierre
Transformación ETL con Pentaho paso a paso
Resumen
Transformar datos en Pentaho es el paso donde conviertes la información cruda del sistema transaccional en registros listos para alimentar tu data warehouse. Aquí defines reglas de negocio, identificas registros nuevos frente a los existentes y generas los IDs que tu dimensión necesita para mantener integridad histórica.
Esta guía te muestra cómo construir ese flujo de transformación paso a paso, desde el cruce de fuentes hasta la fórmula condicional que decide qué ID lleva cada registro.
Cómo cruzar la fuente transaccional con el data warehouse
Todo arranca con dos lecturas paralelas. Por un lado, consultas la base transaccional con un query que trae los registros actuales. Por otro, lees la dimensión del data warehouse, que en la primera ejecución estará vacía porque acabas de construir la tabla [00:24].
El cruce se hace por el código de cliente, que es el campo común entre ambas fuentes. Cuando un registro existe en el transaccional pero no en la dimensión, el ID llega en nulo y lo reemplazas por -1. Ese -1 se convierte en tu marca para identificar registros nuevos.
¿Para qué sirve marcar un ID como -1 en una ETL? Es una convención para señalar que el registro no existe aún en la dimensión. Después usas esa marca para decidir si insertas un ID nuevo o conservas el que ya tiene asignado.
Por qué necesitas una fecha de carga y un indicador de insert o update
Después del cruce viene el paso Get system info, que captura la fecha del sistema y la asigna a un campo llamado load date [01:25]. Esa fecha te indica cuándo se ejecutó la ETL y cuándo entró cada registro a la bodega.
El siguiente bloque es una constante que actúa como indicador de insert o update. Es un campo entero que copia el valor del ID de cliente original antes de que lo modifiques. Si el indicador queda en -1, sabrás que el registro va para insertar; si tiene otro valor, va para actualizar.
Este campo es clave porque más adelante en el flujo el ID original se sobreescribe, y sin esta copia perderías la trazabilidad de qué hacer con cada fila.
Cómo generar IDs nuevos con un step de secuencia en Pentaho
Con el indicador asegurado, aplicas un filter rows que separa el flujo en dos caminos según la condición ID cliente igual a -1.
- Rama false: el registro ya existe, así que creas una constante llamada max cliente ID y le asignas el mismo valor del ID actual.
- Rama true: el registro es nuevo, así que entra al step Add sequence para generar un consecutivo.
- Unión final: un step Dummy recombina ambos flujos en uno solo.
En el step de secuencia configuras el campo max cliente ID para que arranque desde un valor inicial e incremente de uno en uno. Pero ese valor inicial no puede estar fijo en el código, porque cambia con cada ejecución conforme la dimensión crece.
La solución es declarar una variable con la sintaxis ${max_registro} que se inicializa al momento de correr la ETL [05:50]. Así, si hoy tu dimensión tiene 30 registros, mañana arrancará desde 31 sin tocar la transformación.
¿Qué hace el step Dummy en Pentaho? Une dos o más flujos en uno solo sin transformar los datos. Es útil cuando partiste el proceso con un filtro y necesitas volver a juntarlo antes del siguiente paso.
Cómo escribir la fórmula condicional que decide el ID final
Después del Dummy agregas un step Formula para resolver qué ID queda como definitivo. Creas un campo llamado ID calculado que después reemplaza al max cliente ID, y escribes una condicional tipo:
IF([ID cliente]=-1; [max cliente ID]; [ID cliente])
La lógica es directa. Si el ID de cliente es -1, toma el valor generado por la secuencia. Si no, conserva el ID que ya existía en la dimensión. Con eso, cada fila sale con su identificador correcto sin importar si es nueva o vieja.
Qué revisar antes de correr el preview
Antes de ejecutar conviene validar que cada step esté bien conectado y que las asignaciones de valores no estén invertidas. En el ejemplo de la clase aparece un error típico: asignar el valor del insert update al ID cliente en lugar de hacerlo al revés [09:33]. Como el insert update se construye después, llega en nulo y rompe el campo destino.
La corrección es asignar el ID de cliente al indicador, no al contrario. Después de eso, el preview muestra los registros con:
- ID cliente en -1 para todas las filas nuevas.
- Indicador insert update en -1, marcando que van para inserción.
- Max cliente ID con el consecutivo desde el valor inicial de la variable.
Qué reglas de negocio aplicaste en esta transformación
Al cerrar el flujo ya tienes los datos listos para cargar a la dimensión, y de paso aplicaste varias reglas que dan robustez al proceso:
- Identificación de registros nuevos vs existentes mediante el cruce por código.
- Trazabilidad temporal con la fecha de carga capturada del sistema.
- Generación de IDs incrementales sin colisión, gracias a la variable de máximo registro.
- Conservación del ID original para los registros que ya estaban en la dimensión.
- Marcado explícito de cada fila con un indicador de insert o update.
Con esta base ya puedes pasar a la carga al data warehouse. Cuéntame en los comentarios qué reglas adicionales aplicas tú en tus ETL y qué dudas te quedaron sobre el manejo de la variable de máximo registro.