Puedes leer sin crear un espacio. Créalo solo cuando quieras guardar.
Guardar progresoLección 1 de 5
Dimensiones y contratos de calidad
Las expectations convierten reglas de calidad en métricas y acciones declarativas: observar, descartar o fallar la actualización.
17 min aprox.
01Modelo mentalDimensiones y contratos de calidad
Las expectations convierten reglas de calidad en métricas y acciones declarativas: observar, descartar o fallar la actualización.
+
Dimensiones y contratos de calidad
Las expectations convierten reglas de calidad en métricas y acciones declarativas: observar, descartar o fallar la actualización.
`expect` conserva tanto filas válidas como inválidas y registra métricas; es útil durante adopción o para reglas informativas. `expect_or_drop` elimina las filas que incumplen y permite continuar. `expect_or_fail` detiene el flow y revierte atómicamente la actualización afectada cuando aceptar datos incorrectos sería peor que retrasar publicación.
La acción se elige por impacto y capacidad de remediación, no por severidad nominal. Un `order_id` nulo puede ir a cuarentena si el resto del pipeline debe continuar; una violación de unicidad en un saldo regulado puede justificar fallo. Toda regla necesita owner, definición y umbral operativo.
from pyspark import pipelines as dp
@dp.table(name="orders_silver")
@dp.expect("known_currency", "currency IN ('EUR', 'USD', 'GBP')")
@dp.expect_or_drop("valid_order_id", "order_id IS NOT NULL")
@dp.expect_or_fail("non_negative_amount", "amount >= 0")
def orders_silver():
return spark.readStream.table("orders_bronze")Aplicar tres acciones al mismo dataset solo es correcto si negocio ha decidido explícitamente el tratamiento de cada violación.
¿Qué acción conserva filas inválidas pero produce métricas?
Profundiza
Una expectation es una regla booleana aplicada a cada fila que combina observación con una política de respuesta. La misma expresión puede conservar filas y registrar métricas, descartar las inválidas o fallar la actualización. La elección no expresa severidad estética, sino el daño de publicar el dato y la capacidad de remediarlo. `warn` —comportamiento de retención— sirve para medir y explorar; `drop` evita contaminar el target cuando perder esas filas está aceptado y existe trazabilidad; `fail` protege invariantes cuya violación invalida todo el resultado. En una actualización fallida, la transacción del flow se revierte, pero el alcance sobre flows paralelos y dependientes varía según el modo del pipeline. Además, las métricas de `fail` tienen limitaciones porque el update no se confirma como una ejecución normal. La regla necesita nombre estable, owner, umbral y ruta de investigación.
Restricción nombrada basada en una expresión booleana que evalúa calidad durante el procesamiento y registra o aplica una acción configurada.
Integra controles de calidad con métricas y transacciones del pipeline en lugar de depender de comprobaciones posteriores aisladas.Tres políticas que respectivamente conservan y miden, excluyen filas inválidas, o abortan la actualización al detectar una violación.
Permiten alinear cada regla con impacto, remediación y disponibilidad, evitando usar una única respuesta para toda anomalía.Semántica SQL donde una expresión con null puede resultar unknown en vez de verdadero o falso explícito.
Obliga a formular constraints de nulabilidad cuidadosamente para no clasificar datos de forma distinta a la intención.Resumen
Puntos clave
- `expect` mide sin eliminar; `expect_or_drop` continúa sin la fila; `expect_or_fail` aborta el flow afectado.
- Los nombres de expectation deben ser estables y describir el contrato.
- Fallar una actualización protege el target, pero puede consumir el presupuesto de frescura.
Evita
- Usar `expect_or_fail` para toda anomalía y convertir una fila reparable en una caída completa del flow.
- Usar `expect` para una clave obligatoria y permitir que inválidos lleguen silenciosamente a consumidores.