(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

DP-700: cargas incrementales con watermark en Fabric

João Barros 21 de July de 2026 6 min de lectura

Voy a enseñar cómo implementar cargas incrementales (incremental loads) usando una columna watermark en pipelines de ingestión en Microsoft Fabric. Esta competencia es frecuente en el examen DP-700 y, en la práctica, reduce costes y tiempo de procesamiento al evitar recargar toda la tabla. Aplicando este patrón, puedes pasar de procesar decenas o cientos de gigabytes por ejecución a solo unos megabytes o unos miles de registros, dependiendo de la tasa de cambio de los datos.

Qué necesitas saber

Una carga incremental carga solo los registros nuevos o modificados desde la última ejecución. La técnica más común usa una columna temporal o numérica (el «watermark") que identifica hasta qué punto los datos ya han sido leídos. En Fabric esto se aplica cuando usas Power Query o Dataflows para filtrar filas antes de escribir en un Lakehouse/table.

Tipos de watermark y cuándo usarlos: columnas DateTime (TransactionDate) son preferibles cuando los registros tienen sellos temporales fiables; identificadores secuenciales (ID creciente) son útiles en flujos ordenados. Para grandes volúmenes (por ejemplo 100M de registros diarios), una carga incremental puede reducir el trabajo en >95% si solo 5M son nuevos.

Cuidados prácticos: define la granularidad (segundos, minutos, días), presta atención a zonas horarias (UTC frente a locales) y convierte tipos explícitamente para evitar fallos. Decide también una ventana de tolerancia para late arriving data (por ejemplo 3–7 días), ya que reenvíos y backfills son comunes en un ecosistema real.

En la práctica: paso a paso

Sigue estos pasos prácticos para implementar un patrón de carga incremental, con ejemplos concretos.

  1. Elegir la columna watermark: preferencia por columnas de sello temporal (DateTime) o un identificador creciente (ID secuencial). Evita usar la fecha de modificación del fichero si los datos internos tienen fechas propias.
  2. Crear una tabla de control (control table): persiste el last watermark en una pequeña table en el Lakehouse o en un fichero de metadatos en OneLake. Ejemplo de esquema: (datasource_id STRING, last_watermark DATETIME, last_max_id BIGINT NULL, updated_at DATETIME, run_id STRING). Para 50 fuentes diferentes, la tabla tendrá 50 filas; para un único flujo, una sola fila basta.
  3. Crear el Dataflow/Power Query: añade un parámetro (por ejemplo LastWatermark) y aplica un filtro en la query para solo seleccionar filas donde TransactionDate > LastWatermark. Esto disminuye drásticamente los datos leídos y transforma IO y CPU en proporciones lineales con la tasa de cambio.
let
  Source = Csv.Document(File.Contents("/path/to/file.csv"),[Delimiter=",", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
  ToTable = Table.FromRows(Source, {"TransactionID","TransactionDate","Amount","Customer"}),
  ParsedDate = Table.TransformColumnTypes(ToTable, {{"TransactionDate", type datetime}}),
  Filtered = Table.SelectRows(ParsedDate, each [TransactionDate] > DateTime.FromText(Parameters[LastWatermark]))
in
  Filtered

Nota: en Power Query usado en Fabric, el parámetro Parameters[LastWatermark] viene del pipeline que ejecuta el Dataflow. También puedes parametrizar por datasource_id para multi‑fuente.

  1. Grabar los datos en el Lakehouse con lógica de upsert: si necesitas mantener la tabla actualizada (actualizaciones y eliminaciones), usa la operación de MERGE/Upsert soportada por el Lakehouse o escribe en una tabla staging y ejecuta un MERGE SQL/Delta posteriormente. Ejemplo: insertar 200k registros nuevos y 5k actualizaciones por ejecución es típico en un escenario medio.
  2. Actualizar el watermark: tras el éxito de la carga, calcula el nuevo last watermark (por ejemplo SELECT MAX(TransactionDate) de los datos cargados) y escríbelo en la tabla de control. Si procesaste 1M de registros con máximo 2026-07-20T12:34:56Z, escribe ese sello como nuevo watermark. Usa transacción u operación atómica para evitar condiciones de carrera.
  3. Programar y monitorizar: configura el pipeline para que se ejecute con la frecuencia deseada (diaria, horaria). Para datos de telemetría puedes programar cada 15 minutos; para ventas tal vez una vez por hora o por día. Añade alertas para fallos y métricas (registros procesados, tiempo de ejecución, porcentaje incremental) para garantizar observabilidad.

Errores comunes

  • Usar la fecha del fichero en lugar de la fecha del registro: la fecha de creación del fichero puede no reflejar cuándo se generaron los registros. Esto causa duplicación o pérdida de datos cuando ficheros se reenvían.
  • No tratar datos retrasados (late arriving data): si tienes registros con TransactionDate anterior al last watermark, los vas a perder. Soluciones: ventana de tolerancia (p.ej. reprocesar últimos 7 días), clave de desduplicación con MERGE y logs de auditing para identificar pérdidas. En porcentajes concretos, un sistema con 0,5–2% de registros tardíos puede representar valores financieros significativos si no se trata.
  • No gestionar schema drift: añadir o renombrar columnas sin cambiar la lógica puede romper el pipeline; selecciona explícitamente las columnas necesarias, valida el esquema al inicio de la ejecución y aplica transformaciones defensivas.
  • Condiciones de concurrencia: varias ejecuciones en paralelo pueden leer y actualizar la tabla de control simultáneamente; usa mecanismos de locking, run_id y pruebas de idempotencia para prevenir carreras.

Cómo practicar

Practica este patrón con una cuenta trial de Microsoft Fabric y un pequeño conjunto de ficheros CSV en OneLake o Blob Storage. Crea 30 ficheros diarios con 1k–10k registros cada uno, simula late arrivals reenviando algunos ficheros y observa cómo cambia la carga de trabajo cuando aplicas el filtro por watermark. Implementa el pipeline en tres componentes: Dataflow (Power Query) que filtra por watermark, una tabla de control en el Lakehouse para guardar el last watermark y una tarea de MERGE/upsert para aplicar cambios.

Para preparar el DP-700, utiliza el Practice Assessment oficial de Microsoft (gratuito) y la Study Guide oficial de Microsoft Learn (gratuita). Esos recursos ayudan a validar tu comprensión de las skills medidas y a practicar escenarios sin recurrir a materiales no autorizados.

En resumen

  • Las cargas incrementales con watermark reducen tiempo y costes al ingerir solo registros nuevos/modificados — muchas veces con ganancias de rendimiento del orden del 80–99% en I/O y CPU, según la tasa de cambio.
  • Necesitas una columna de watermark, una tabla de control para el last watermark y pipelines que apliquen filtros antes de escribir en el Lakehouse.
  • Gestiona late arriving data, actualizaciones (upsert/merge), schema drift y concurrencia para garantizar fiabilidad.
  • Practica en Fabric con Dataflows/Power Query, Lakehouse y la tabla de control; usa los recursos oficiales de Microsoft para estudio y validación.