Skip to content

Calidad, idempotencia y reprocesos

Un pipeline serio asume que algo fallara: la fuente cambiara, llegaran duplicados, un fichero estara incompleto o una ejecucion se quedara a medias.

Calidad de datos

Los controles de calidad detectan datos invalidos antes de que contaminen capas posteriores.

Validaciones frecuentes:

  • Columnas obligatorias.
  • Tipos correctos.
  • Rangos validos.
  • Valores permitidos.
  • Claves no nulas.
  • Duplicados.
  • Integridad referencial.
  • Volumen esperado.
  • Frescura del dato.

Ejemplo:

txt
regla: importe >= 0
accion si falla: enviar fila a cuarentena
severidad: error

Cuarentena

La cuarentena es una zona donde se guardan registros rechazados con el motivo del fallo.

Debe incluir:

  • Payload original o fila rechazada.
  • Regla incumplida.
  • Fecha de ejecucion.
  • Identificador del pipeline.
  • Version del codigo o del flujo.
  • Mensaje de error.

No descartes datos silenciosamente. Lo que hoy parece basura puede ser necesario para depurar una incidencia.

Idempotencia

Un pipeline es idempotente si puedes ejecutarlo varias veces con la misma entrada y obtener el mismo resultado final.

Tecnicas habituales:

  • Usar claves naturales o ids de evento.
  • Escribir por particion y reemplazar solo esa particion.
  • Hacer merge en vez de append ciego.
  • Deduplicar antes de publicar.
  • Registrar lotes procesados.
  • Usar nombres de salida deterministas.

Ejemplo conceptual:

txt
entrada: ventas del 2026-06-24
salida: curated.ventas partition fecha=2026-06-24
reproceso: reemplaza solo esa particion

Reintentos

No todos los fallos son iguales:

  • Transitorios: timeout, red, API temporalmente caida.
  • De datos: campo obligatorio vacio, tipo inesperado.
  • De contrato: columna eliminada o semantica cambiada.
  • De capacidad: falta de memoria, disco o cuota.

Los fallos transitorios pueden reintentarse. Los fallos de datos deben aislarse o bloquear la publicacion segun criticidad.

Reprocesos

Un reproceso debe ser una operacion normal, no una aventura.

Define:

  • Que unidad se reprocesa: dia, hora, particion, lote, offset o id.
  • Donde esta la entrada original.
  • Como se borra o reemplaza la salida.
  • Como se evitan duplicados.
  • Que downstream debe recalcularse.
  • Como se informa al consumidor.

Publicacion atomica

Evita que los consumidores lean datos a medio escribir.

Estrategias:

  • Escribir en tabla temporal y renombrar.
  • Escribir particion completa y publicar marcador de exito.
  • Usar transacciones si el destino lo soporta.
  • Separar zona interna de zona publicada.

Checklist

  • Los errores de datos quedan guardados con causa.
  • La ejecucion registra version, ventana y parametros.
  • Repetir una ejecucion no duplica datos.
  • Existe un procedimiento claro de reproceso.
  • Los consumidores no ven resultados parciales.
  • Hay reglas para decidir si se publica con rechazos o se bloquea.