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
15:19 min - 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
Viendo ahora - 24

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

Solución ETL con dimensiones en paralelo en Redshift
07:27 min
Cierre
Cómo calcular MaxID y MaxDate en Pentaho
Resumen
Orquestar un flujo ETL implica coordinar extracción, transformación y carga en una sola ejecución controlada. Aquí aprenderás a construir un job en Pentaho que ejecute tus transformaciones en el orden correcto y, sobre todo, a calcular dos variables clave: el máximo ID y la máxima fecha de cada tabla del data warehouse. Esto te sirve si trabajas con cargas incrementales y quieres evitar reprocesar datos.
¿Qué es un job en Pentaho y por qué lo necesitas?
Un job es el orquestador que llama a cada transformación en el orden correcto. En lugar de ejecutar manualmente cada ETL, defines una secuencia que arranca con un start y avanza por las dimensiones antes de llegar a los hechos.
¿Por qué cargar primero las dimensiones? Porque la tabla de ventas necesita cruzar con clientes, productos, territorios, tiempo y vendedores para resolver los IDs. Si las dimensiones no están listas, el cruce falla.
El flujo que vas a orquestar incluye las transformaciones de clientes (que deja un archivo en S3 y carga vía copy), territorios, tiempo, vendedores, productos y, al final, ventas.
¿Cómo calcular el máximo ID de cualquier tabla con una transformación parametrizada?
La idea es no quemar el nombre de la tabla ni el campo en la consulta. Creas una transformación genérica que reciba dos parámetros: tabla y consecutivo. Así te sirve para clientes, productos, vendedores o cualquier dimensión.
Construye el input con variables
En un table input escribes una consulta del tipo select max(${consecutivo}) as consecutivo from dwh.${tabla}. Activa la opción para que reemplace variables en el script, porque si no, Pentaho lo toma como texto literal y falla.
Al ejecutar el preview con id_cliente y dim_clientes, si la tabla está vacía obtienes un nulo. Y aquí viene lo importante: necesitas un entero, no un nulo.
Convierte nulos en ceros y suma uno
Usas el paso de validación de nulos para transformar el resultado en cero cuando no hay registros. Después, con la calculadora, defines una constante B = 1 y calculas valor_maximo = A + B, donde A es el valor que llega de la consulta.
- Si la tabla tiene 500 registros, devuelve 501.
- Si la tabla está vacía, devuelve 1.
- El resultado se asigna a la variable
MaxRegistroID.
Ese MaxRegistroID es el que las otras ETL usarán como punto de partida para generar nuevos consecutivos.
¿Cómo identificar la fecha máxima para cargas incrementales?
La fecha máxima te permite traer solo los registros nuevos. Si ayer cargaste hasta cierto punto, hoy quieres consultar a partir de esa fecha en la base transaccional, no toda la historia otra vez.
¿Qué es un campo pivot? Es la columna de fecha que define desde cuándo traer datos en la siguiente ejecución. Suele ser
ModifiedDateo una fecha de actualización del registro.
Creas otro table input con una consulta que use NVL o equivalente para devolver una fecha muy lejana cuando no hay registros previos. El truco es usar 1900-01-01 00:00:00 como valor por defecto, así la primera carga trae toda la historia sin condiciones especiales.
Setea la variable MaxDate
Después del cálculo, asignas el resultado a la variable MaxDate con el paso set variables. Pentaho te avisa que esa variable solo está disponible en transformaciones llamadas desde el mismo job, por eso la orquestación importa tanto.
Para probar la transformación en aislamiento, vas a Editar, Asignar variable de entorno, y defines valores de prueba:
consecutivo: 1.tabla: dim_clientes.MaxRegistroID: 1.MaxDate: 1900-01-01 00:00:00.
¿Cómo aplicar las variables en cada transformación?
En la consulta input de cada dimensión agregas un filtro que use MaxDate. Por ejemplo, en clientes:
sql where c.ModifiedDate >= cast('${MaxDate}' as datetime)
El cast es obligatorio porque la variable llega como texto y la columna es de tipo fecha. Sin esa conversión explícita, la consulta falla o trae resultados inesperados.
Estandariza los nombres de variables
Un detalle que parece menor pero rompe el flujo: si en clientes nombraste la variable MaxRegistro y en productos MaxRegistroID, el job no puede pasar un solo valor a todas. Revisa cada transformación y unifica el nombre.
- Productos:
MaxRegistroID. - Territorios:
MaxRegistroID. - Clientes: cambia de
MaxRegistroaMaxRegistroID. - Vendedores y tiempo: no usan esta variable.
Con los nombres alineados, configuras una sola variable global y todas las transformaciones la leen.
Habilidades y conceptos que se trabajan
En esta sesión aparecen varias piezas que conviene tener claras antes de avanzar a la orquestación completa.
- Job de Pentaho: contenedor que ejecuta transformaciones en secuencia y comparte variables entre ellas.
- Transformación parametrizada: ETL que recibe
tablayconsecutivocomo parámetros, evitando código duplicado. - Reemplazo de variables en script SQL: opción que debes activar para que Pentaho sustituya
${variable}antes de enviar la consulta a la base. - NVL y validación de nulos: técnica para convertir nulos en valores por defecto (cero para enteros, 1900-01-01 para fechas).
- Calculadora: paso que permite operaciones aritméticas como sumar uno al máximo ID encontrado.
- Set variables: paso que expone un valor calculado al resto del flujo.
- Campo pivot: columna de fecha que ancla la carga incremental.
- Cast as datetime: conversión explícita necesaria cuando una variable de texto se compara con una columna fecha.
- Carga incremental: estrategia que solo procesa registros nuevos o modificados desde la última ejecución.
Si quieres profundizar en ETL más allá de esta orquestación básica, revisa el curso de ETL con Python y Pentaho en la plataforma. ¿Cómo estás manejando hoy las cargas incrementales en tus proyectos? Cuéntame en los comentarios.