Inicio / Data Factory / Pipelines incrementales paso a paso
Data Factory

Pipelines incrementales paso a paso

Watermarks, upserts y control de errores para cargas que no se rompen a las 3 de la madrugada.

[ imagen de portada · pipeline de Data Factory con actividades encadenadas ]

Cargar la tabla entera cada noche funciona… hasta que la tabla tiene cien millones de filas. La carga incremental solo trae lo que cambió desde la última ejecución. Es más rápida, más barata y —bien hecha— mucho más robusta.

El patrón watermark

Un watermark es una marca que recuerda hasta dónde leíste la última vez: normalmente una columna de fecha de modificación o un id autoincremental. En cada ejecución lees solo las filas por encima de esa marca y, al terminar, la actualizas.

get_watermark.sql Spark SQL
-- Última marca procesada para esta tabla
SELECT COALESCE(MAX(ultima_marca), '1900-01-01') AS wm
FROM control.watermarks
WHERE tabla = 'ventas';

Lee solo lo nuevo

Con la marca en la mano, parametriza la consulta de origen para traer únicamente lo modificado después de ella. Pasa la marca como parámetro del pipeline, nunca la incrustes en el código.

extract_delta.sql Spark SQL
SELECT *
FROM origen.ventas
WHERE modificado_en > '@{pipeline().parameters.watermark}';
OJO

Usa mayor estricto (>) y no >= sobre la marca, o reprocesarás la última fila en cada ejecución. Y guarda la marca solo si el upsert terminó bien.

Upsert idempotente con MERGE

El destino se actualiza con MERGE: actualiza lo que ya existe, inserta lo nuevo. Así, reejecutar el pipeline tras un fallo no duplica nada —la propiedad que de verdad te salva a las 3 de la madrugada.

upsert_ventas.sql Spark SQL
MERGE INTO silver.ventas AS t
USING staging.ventas AS s
  ON t.venta_id = s.venta_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

Control de errores que no te deja a ciegas

  • Envuelve la extracción y el upsert en una rama con manejo de fallo explícito.
  • Actualiza el watermark solo en la rama de éxito.
  • Registra cada ejecución (filas leídas, escritas, duración) en una tabla de control.
  • Configura alertas: un pipeline que falla en silencio es peor que uno que no existe.

Con watermark, lectura incremental, MERGE idempotente y control de errores tienes una carga que se recupera sola. En el próximo artículo la conectamos al modelo semántico con DirectLake.

#DataFactory#Pipelines#Incremental#Watermark

Kilian Baccaro Salinas

Arquitecto de Datos especializado en Microsoft Fabric.

Sigue entrenando

todos los artículos →
[ diagrama: medallón ]
Lakehouse

Arquitectura medallón en Fabric, sin morir en el intento

8 MIN
[ captura: portal OneLake ]
OneLake

Cómo organizar tu OneLake desde el día 1

6 MIN
[ diagrama: benchmark ]
DirectLake

DirectLake vs Import: el benchmark definitivo

9 MIN
Newsletter

¿Te ha servido? Recibe el próximo entreno

Un tutorial práctico de Fabric cada semana, directo a tu bandeja.

1 email / semana · cancela cuando quieras · 0 spam