Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 5 de 5
Alertas, webhooks y ownership
Un backfill reutiliza el mismo Job parametrizado que producción para ejecutar intervalos históricos, con concurrencia y publicación controladas.
- Duración
- 17 min aprox.
- Objetivo
- Un backfill reutiliza el mismo Job parametrizado que producción para ejecutar intervalos históricos, con concurrencia y publicación controladas.
- Siguiente paso
- Continuar con el laboratorio
Ver detalles del módulo
Triggers, alertas, backfills y operación
Opera pipelines según disponibilidad real del dato y recupera ventanas históricas sin romper producción.
- Elegir trigger por evento o calendario
- Diseñar backfills seguros
- Crear alertas accionables y SLOs
05Decisión de diseñoAlertas, webhooks y ownership
Un backfill reutiliza el mismo Job parametrizado que producción para ejecutar intervalos históricos, con concurrencia y publicación controladas.
+
Alertas, webhooks y ownership
Un backfill reutiliza el mismo Job parametrizado que producción para ejecutar intervalos históricos, con concurrencia y publicación controladas.
Lakeflow Jobs puede generar múltiples runs para un rango e intervalo y pasar parámetros de backfill. El código usa `process_date` o límites temporales explícitos y escribe idempotentemente la partición correspondiente. Mantener una ruta de código distinta para históricos provoca divergencia justo cuando más se necesita fiabilidad.
Antes de lanzar noventa días se calcula número de runs, volumen, coste, capacidad de origen y colisión con producción. Puede reducirse concurrency, escribir en una tabla sombra y promover por lotes. La validación compara conteos y totales por día, y el rollback conoce exactamente qué particiones tocó.
Modelo mental
Un backfill es una ejecución histórica del mismo contrato de transformación, delimitada por parámetros reproducibles y aislada de la publicación corriente. No debería requerir copiar un notebook y cambiar fechas manualmente. El Job acepta `start`, `end`, versión de código y modo, lee una fuente durable y escribe staging o particiones deterministas. La granularidad equilibra paralelismo y overhead; For each por día puede servir para meses, mientras millones de claves pertenecen a Spark. El backfill coexiste con producción mediante rangos no solapados o un paso serial de reconciliación. Debe cubrir inserts, updates y deletes, no solo añadir filas faltantes. Una vez validado, un `MERGE`, replaceWhere controlado o cutover publica el resultado. El checkpoint streaming de producción no se rebobina, y los efectos externos permanecen deshabilitados o idempotentes durante historia.
Rango temporal que incluye su inicio y excluye su final, permitiendo concatenar particiones sin huecos ni doble conteo fronterizo.
Hace deterministas backfills por día u hora y evita duplicar eventos exactamente en medianoche.Identificador único de la campaña histórica que acompaña staging, métricas, logs, approvals y acciones de publicación asociadas.
Permite auditar, reparar y revertir una corrección sin mezclarla con runs normales o campañas anteriores.Versión u instante hasta el cual se reconstruye historia antes de reconciliar cambios nuevos que producción continúa generando.
Evita carreras y pérdida de updates durante una reconstrucción larga que convive con el flujo activo.MERGE INTO main.silver.orders_daily AS target
USING (
SELECT *
FROM main.bronze.orders
WHERE event_date = :process_date
) AS source
ON target.order_id = source.order_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;El parámetro del run delimita el rango, mientras `MERGE` permite reintentar el mismo día sin duplicar claves.
Puntos clave
- Backfill y ejecución ordinaria comparten artefacto y contrato.
- Parámetros temporales deben ser explícitos y usar límites no solapados.
- Coste, concurrencia y reconciliación se estiman antes de crear cientos de runs.
Evita
- Crear un notebook especial para backfill que ya no comparte validaciones ni lógica de producción.
- Lanzar todos los días con máxima concurrencia y degradar el workload diario o la fuente.
Recuerdo activo