Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Professional
Proyecto de pipeline declarativo
Construye una cadena declarativa con calidad, CDC, orquestación y operación documentada.
- Entregar datasets incrementales fiables
- Probar dependencias y reglas
- Operar fallos y backfills
01Modelo mentalArquitectura del pipeline
El proyecto de producción parte de contratos y NFR: fuentes, claves, latencia, calidad, seguridad, recuperación y consumidores antes de elegir objetos del pipeline.
+
Arquitectura del pipeline
El proyecto de producción parte de contratos y NFR: fuentes, claves, latencia, calidad, seguridad, recuperación y consumidores antes de elegir objetos del pipeline.
- Objetivo
- El proyecto de producción parte de contratos y NFR: fuentes, claves, latencia, calidad, seguridad, recuperación y consumidores antes de elegir objetos del pipeline.
- Duración estimada
- 30 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m21
Pedidos append y clientes CDC tienen naturalezas distintas: los primeros encajan en streaming tables; los segundos en AUTO CDC. Gold necesita métricas consistentes con updates de ambas fuentes y puede ser una materialized view. El diseño identifica owners y fronteras bronze/silver/gold con nombres gobernados.
Los NFR se convierten en decisiones comprobables: p95 de frescura, umbral de errores, RTO, retención y presupuesto. Un diagrama sin criterios de aceptación no permite saber si el pipeline está terminado ni qué hacer ante un fallo.
Modelo mental
Un pipeline de producción comienza con contratos y requisitos no funcionales, no con decoradores. Para cada fuente se documentan owner, formato, claves, secuencia, frecuencia, volumen, retención, evolución y semántica de delete. Para cada consumidor se definen grain, frescura, completitud, historia, permisos y tolerancia a cambios. Los NFR convierten esas relaciones en decisiones: RPO/RTO determinan checkpoints y bronze; SLA determina trigger y capacidad; privacidad determina catálogo y columnas; coste limita refresh y retención. Solo entonces se eligen streaming tables, materialized views, AUTO CDC, expectations y Jobs. El diagrama incluye fronteras de commit y recuperación, no solo flechas. Una matriz de riesgos cubre datos tardíos, snapshots parciales, schema drift, dependencia caída y backfill. El proyecto final demuestra por qué cada objeto existe y qué ocurriría si se reemplazara por una alternativa.
Comportamiento que el producto debe ofrecer, como aplicar deletes, conservar historia o publicar una métrica con grain definido.
Determina la semántica correcta del modelo y permite probar si los datos responden preguntas esperadas.Propiedad operativa cuantificada, como latencia, disponibilidad, recuperación, seguridad, escalabilidad o coste bajo condiciones específicas.
Convierte arquitectura en compromisos medibles y evita considerar suficiente que una consulta produzca filas.Punto durable y atómico después del cual una etapa considera su resultado publicado y permite avanzar a dependientes.
Hace explícita la recuperación y evita exponer resultados parciales durante fallos o reintentos.domain: commerce
sources:
orders:
semantics: append
key: order_id
freshness_p95_minutes: 10
customers:
semantics: cdc
key: customer_id
sequence: source_lsn
targets:
silver_orders: main.silver.orders
current_customers: main.silver.customers_current
daily_sales: main.gold.daily_customer_sales
rto_minutes: 60
owner: commerce-dataAñade consumidores, clasificación, reconciliaciones y consultas de evidencia concretas en la entrega final.
Puntos clave
- Cada fuente declara semántica append, CDC o snapshot.
- Cada target declara clave, consumidor, SLO y estrategia de rebuild.
- Dependencias externas, clasificación de datos y PII se identifican antes de desplegar.
Evita
- Elegir todos los targets como streaming tables sin considerar updates y resultado completo.
- Diseñar la capa gold antes de acordar claves y semántica de las fuentes.
Recuerdo activo
¿Qué dato del feed de clientes es imprescindible además de `customer_id`?
Borrador privado · solo en este navegador02ImplementaciónImplementación declarativa
La implementación combina append de pedidos y AUTO CDC de clientes sin mezclar estados ni presentar el nombre anterior APPLY CHANGES como API nueva.
+
Implementación declarativa
La implementación combina append de pedidos y AUTO CDC de clientes sin mezclar estados ni presentar el nombre anterior APPLY CHANGES como API nueva.
- Objetivo
- La implementación combina append de pedidos y AUTO CDC de clientes sin mezclar estados ni presentar el nombre anterior APPLY CHANGES como API nueva.
- Duración estimada
- 30 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m21
Pedidos se ingieren en bronze y se validan en silver con lectura streaming. Clientes llegan como operaciones con `source_lsn`; AUTO CDC materializa el estado actual SCD 1 o el historial SCD 2. La streaming table target se declara antes del flow y las columnas operativas se excluyen.
Gold une pedidos con clientes según la necesidad temporal. Si se necesita el cliente actual, SCD 1 basta; si la segmentación al momento del pedido importa, se usa SCD 2 y un join por intervalo. Esa decisión cambia corrección, coste y complejidad.
Modelo mental
Combinar append y CDC exige mantener semánticas separadas hasta una frontera común. Los pedidos append-only representan hechos nuevos y entran mediante un flow incremental; los clientes representan estado mutable y llegan como cambios que AUTO CDC ordena y aplica a una streaming table. `AUTO CDC` es la opción vigente recomendada por Databricks; `APPLY CHANGES` mantiene la misma sintaxis, sigue disponible y puede aparecer en preguntas Professional o código legado. Reconocer la equivalencia nominal no autoriza a mezclar los estados: cada flow conserva progreso, keys y secuencia propios. El enriquecimiento puede usar una materialized view que combine hechos y dimensión vigente o una estrategia temporal para SCD2. El proyecto evita un join stream-stream innecesario si solo requiere snapshot de dimensión y documenta qué versión del cliente se asigna a un pedido.
Modelo en el que cada registro aceptado representa un hecho adicional y no reemplaza implícitamente otra fila con la misma clave.
Es apropiado para eventos inmutables y evita introducir estado de upsert innecesario.Modelo en el que registros codifican transiciones de entidades y deben aplicarse por clave, secuencia, operación y política de historia.
Evita tratar updates y deletes como hechos independientes que duplicarían o dejarían obsoleto el estado.Término anterior aún visible y soportado, como APPLY CHANGES, cuyo reemplazo recomendado actual es AUTO CDC con sintaxis equivalente.
Permite responder exámenes y mantener código existente sin enseñar una API antigua como primera opción.CREATE OR REFRESH STREAMING TABLE main.silver.customers_current;
CREATE FLOW customers_current_cdc AS AUTO CDC INTO
main.silver.customers_current
FROM STREAM(main.bronze.customers_cdc)
KEYS (customer_id)
APPLY AS DELETE WHEN operation = 'DELETE'
SEQUENCE BY source_lsn
COLUMNS * EXCEPT (operation)
STORED AS SCD TYPE 1;Valida que `source_lsn` sea monotónico por clave y que su tipo tenga un orden total estable.
Puntos clave
- AUTO CDC es la API actual; APPLY CHANGES es la denominación anterior.
- Append y CDC usan flows/targets diferentes y convergen en consumo.
- El join dimensional se alinea con SCD 1 actual o SCD 2 point-in-time según requisito.
Evita
- Hacer append de updates CDC y dejar múltiples estados vigentes por cliente.
- Elegir SCD 1 cuando reporting necesita la dimensión histórica al momento del pedido.
Recuerdo activo
¿Qué resuelve AUTO CDC frente a un append simple del feed?
Borrador privado · solo en este navegador03OperaciónExpectations y cuarentena
Calidad se diseña como rutas: observación para señales, cuarentena para filas reparables y fallo para invariantes que invalidan el target.
+
Expectations y cuarentena
Calidad se diseña como rutas: observación para señales, cuarentena para filas reparables y fallo para invariantes que invalidan el target.
- Objetivo
- Calidad se diseña como rutas: observación para señales, cuarentena para filas reparables y fallo para invariantes que invalidan el target.
- Duración estimada
- 30 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m21
Pedidos sin ID van a cuarentena con archivo y motivo. Monedas desconocidas pueden observarse mientras negocio decide. Un importe negativo en una tabla financiera puede fallar la actualización. La clasificación compartida evita que una fila desaparezca entre filtros inconsistentes.
El event log alimenta un dashboard por update y flow. La aceptación incluye casos para cada acción, una tasa máxima y un procedimiento de reentrada. Proteger la cuarentena con permisos más estrictos evita convertir observabilidad en fuga de PII.
Modelo mental
La calidad productiva se diseña como rutas y umbrales, no como una colección de constraints idénticas. Observación conserva y mide anomalías tolerables; cuarentena aísla filas reparables con procedencia; fail protege invariantes que harían inválido todo el target. Una misma regla puede evolucionar entre rutas después de medir impacto, pero el cambio se versiona. La arquitectura evalúa reglas comunes una vez y deriva flows coherentes, evitando que válido y cuarentena discrepen. Un umbral agregado puede escalar de drop a fallo cuando la tasa sugiere problema sistémico. El event log aporta métricas por expectation y una tabla operacional conserva tendencias y ownership. Para eventos con PII, muestras y cuarentena se enmascaran y gobiernan. Reingreso usa el mismo contrato y clave, y la salida final no se declara correcta hasta reconciliar filas válidas, descartadas y pendientes.
Tratamiento que conserva filas y publica métricas de una regla para calibrar riesgo sin alterar inmediatamente la salida procesada.
Permite introducir controles nuevos y estimar falsos positivos antes de decidir una acción destructiva o bloqueante.Tratamiento que aparta registros reparables del target canónico conservando payload mínimo, procedencia, reglas, owner y estado de remediación.
Protege consumidores sin perder capacidad de investigación, corrección y reingreso idempotente.Propiedad cuya violación impide interpretar o reconciliar el conjunto completo y obliga a abortar la actualización afectada.
Justifica fail por impacto estructural y evita usarlo indiscriminadamente para cualquier anomalía opcional.@dp.table(name="orders_silver")
@dp.expect("known_currency", "currency IN ('EUR', 'USD', 'GBP')")
@dp.expect_or_fail("non_negative_amount", "amount >= 0")
def orders_silver():
return (
spark.readStream.table("orders_classified")
.where("size(failure_reasons) = 0")
.drop("failure_reasons")
)La rama `orders_quarantine` materializa las filas donde `failure_reasons` no está vacía.
Puntos clave
- Regla, acción y remediación se prueban conjuntamente.
- Cuarentena es un producto operado con retención y acceso, no un vertedero permanente.
- Event log ofrece métricas; reconciliación externa valida completitud y exactitud.
Evita
- Aplicar `expect_or_drop` y afirmar que existe cuarentena aunque no se conserve la fila.
- Fallar por una regla reparable de baja severidad y consumir innecesariamente el SLO de frescura.
Recuerdo activo
¿Qué evidencia demuestra que una regla de cuarentena funciona?
Borrador privado · solo en este navegador04DiagnósticoJob envolvente y despliegue
Lakeflow Jobs envuelve el pipeline para parametrizar entorno, ejecutar validaciones, condicionar publicación y manejar alertas o backfills.
+
Job envolvente y despliegue
Lakeflow Jobs envuelve el pipeline para parametrizar entorno, ejecutar validaciones, condicionar publicación y manejar alertas o backfills.
- Objetivo
- Lakeflow Jobs envuelve el pipeline para parametrizar entorno, ejecutar validaciones, condicionar publicación y manejar alertas o backfills.
- Duración estimada
- 30 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m21
Una pipeline task actualiza datasets declarativos. Una tarea posterior consulta event log y reconciliación; una If/else bloquea publicación si se supera el umbral. Cleanup y notificación usan Run if. El mismo bundle define recursos para dev, test y prod con identidades y catálogos diferentes.
La promoción no consiste en copiar notebooks. Se valida el bundle, se despliega el mismo artefacto, se ejecuta un smoke test y se compara lineage/esquema. Producción se activa con trigger pausado inicialmente y rollback conocido.
Modelo mental
Lakeflow pipelines administra el grafo de datos; Lakeflow Jobs administra el proceso operativo que lo rodea. Un task de pipeline ejecuta la actualización, pero un flujo de producción suele necesitar parámetros de entorno, prechecks, validación agregada, decisión de publicación, notificaciones y backfills. Jobs no debe duplicar las dependencias internas del pipeline ni llamar cada dataset por separado: trata la actualización como una unidad y coordina fronteras externas. Un run recibe business window y versión de configuración inmutables. Después del pipeline, tareas leen event log y targets staging, calculan controles y una rama publica o contiene. Los retries se aplican a fallos transitorios; repair reejecuta el subgrafo necesario con el contexto original. Backfills usan el mismo artefacto y contrato con modo y rango explícitos, no copias de notebooks.
Tipo de tarea de Lakeflow Jobs que inicia y espera una actualización de un pipeline gestionado como una unidad operativa.
Integra procesamiento declarativo con control flow, parámetros, reparaciones y notificaciones sin recrear el DAG de datasets.Tarea previa que valida parámetros, permisos, disponibilidad o manifests antes de consumir compute y modificar datasets del pipeline.
Falla pronto ante condiciones deterministas y evita updates costosos o parciales que nunca podrían publicarse.Decisión posterior a procesamiento y validación que hace visible el resultado al consumidor únicamente cuando cumple controles acordados.
Separa éxito técnico de corrección del producto y proporciona una frontera idempotente para repair y rollback.tasks:
- task_key: update_pipeline
pipeline_task:
pipeline_id: orders_pipeline
- task_key: validate_update
depends_on:
- task_key: update_pipeline
notebook_task:
notebook_path: /Workspace/commerce/validate_update
- task_key: quality_gate
depends_on:
- task_key: validate_update
condition_task:
left: "{{tasks.validate_update.values.failure_rate}}"
op: LESS_THAN_OR_EQUAL
right: "0.01"En un bundle real `pipeline_id` referencia el recurso desplegado; evita IDs fijos entre entornos.
Puntos clave
- Pipelines transforma; Jobs coordina control flow y efectos operativos.
- El mismo artefacto se parametriza por target y se ejecuta con service principal.
- Quality gate usa métricas persistidas y bloquea solo publicación downstream.
Evita
- Meter notificaciones y llamadas externas dentro de una función declarativa del pipeline.
- Desplegar prod con identidad personal y rutas hardcoded de dev.
Recuerdo activo
¿Por qué separar `validate_update` del pipeline task?
Borrador privado · solo en este navegador05Decisión de diseñoPruebas operativas
La preparación productiva se demuestra con replay, backfill, fallo de calidad, métricas, coste y un runbook ejecutado, no solo con un update exitoso.
+
Pruebas operativas
La preparación productiva se demuestra con replay, backfill, fallo de calidad, métricas, coste y un runbook ejecutado, no solo con un update exitoso.
- Objetivo
- La preparación productiva se demuestra con replay, backfill, fallo de calidad, métricas, coste y un runbook ejecutado, no solo con un update exitoso.
- Duración estimada
- 30 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m21
El equipo prueba una segunda ejecución sin datos, un update CDC fuera de orden, una fila en cuarentena y una caída recuperable. Un backfill de una fecha usa el mismo pipeline/Job y se reconcilia. El event log debe explicar qué flows procesaron filas y qué expectations fallaron.
El runbook identifica owner, SLO, paneles, decisiones de retry, repair o full refresh y rutas de rollback. La entrega incluye consultas de evidencia y límites conocidos. Una demo feliz sin incidente ni recuperación no valida producción.
Modelo mental
Preparación productiva se demuestra con evidencia sobre corrección, recuperación, capacidad, seguridad y operación. Un run exitoso con datos felices solo prueba la ruta más sencilla. La checklist incluye replay determinista, backfill concurrente, schema evolution compatible e incompatible, expectation que falla, sink lento, checkpoint restore, límites de coste y permisos mínimos. Se mide SLA al volumen pico y RTO con un game day. El event log y system tables alimentan dashboards, alertas y atribución de coste. Un runbook describe síntomas, consultas, decisiones seguras, rollback y owners, y otra persona debe poder ejecutarlo sin conocimiento tribal. La promoción usa artefacto versionado, configuración revisada y criterios de aceptación; el rollback conserva tablas y checkpoints anteriores. La preparación también exige reconocer límites: ningún curso garantiza aprobar ni reemplaza práctica, pero el producto debe cubrir mecanismos y decisiones examinables con profundidad autosuficiente.
Condición medible que una versión debe satisfacer en corrección, rendimiento, recuperación, seguridad y coste antes de promoverse.
Evita decisiones go-live basadas únicamente en un run verde o una revisión informal del código.Experimento controlado que introduce fallos representativos y mide alertas, diagnóstico, recuperación, reconciliación y cumplimiento de RTO/RPO.
Transforma supuestos de resiliencia en evidencia y descubre dependencias de conocimiento o permisos antes de un incidente.Procedimiento versionado con síntomas, consultas, decisiones, comandos seguros, criterios de escalado, rollback y responsables de la recuperación.
Reduce tiempo de diagnóstico y permite que la operación no dependa exclusivamente del autor original.acceptance:
- second_run_adds_zero_duplicates
- out_of_order_cdc_keeps_highest_sequence
- invalid_order_is_quarantined_with_reason
- expectation_metrics_visible_in_event_log
- one_day_backfill_reconciles_to_manifest
- repair_run_preserves_successful_outputs
- rto_under_60_minutes
- service_principal_has_least_privilegeCada elemento enlaza a una consulta, run o captura reproducible, no a una marca manual sin evidencia.
Puntos clave
- Idempotencia se prueba ejecutando dos veces el mismo input.
- Recuperación se prueba con fallo y checkpoint/estado realista.
- Aceptación incluye calidad, observabilidad, seguridad y coste además del resultado funcional.
Evita
- Aceptar el proyecto porque las tablas existen aunque no haya pruebas de reintento o recuperación.
- Realizar full refresh por defecto sin estimar coste, disponibilidad ni efecto en consumers.
Recuerdo activo