Portões de qualidade.
As regras de qualidade decidem se um lote pode ser gravado. Eles são portas de segurança para pipelines, e não um substituto para uma plataforma completa de qualidade de dados.
Regras integradas
| Regra | Escopo | Quarentena |
|---|---|---|
required_columns | Verificação de presença em nível de esquema. | Não, apenas aborto. |
not_null | Verificação nula em nível de linha. | Sim. |
unique_key | Verificação de exclusividade no nível do conjunto de dados. | Não, apenas aborto. |
accepted_values | Verificação de domínio em nível de linha. | Sim. |
min_rows | Verificação do volume mínimo no nível do conjunto de dados. | Não, apenas aborto. |
max_null_ratio | Verificação agregada em nível de coluna. | Não, apenas aborto. |
expressions | Regra de expressão SQL. | Depende da gravidade. |
custom | Regra personalizada registrada. | Definido por regras. |
Exemplo
- YAML
- Python
quality_rules:
required_columns: [order_id, customer_id, updated_at]
not_null: [order_id, updated_at]
unique_key: [order_id]
min_rows: 1
accepted_values:
status: [open, closed, cancelled]
max_null_ratio:
discount_amount: 0.20
expressions:
- name: non_negative_total
expression: "order_total >= 0"
severity: quarantine
message: "Order total must not be negative."
on_quality_fail: quarantine
result = ingest(
...,
quality_rules={
"required_columns": ["order_id", "customer_id", "updated_at"],
"not_null": ["order_id", "updated_at"],
"unique_key": ["order_id"],
"min_rows": 1,
"accepted_values": {"status": ["open", "closed", "cancelled"]},
"max_null_ratio": {"discount_amount": 0.20},
"expressions": [
{
"name": "non_negative_total",
"expression": "order_total >= 0",
"severity": "quarantine",
"message": "Order total must not be negative.",
}
],
},
on_quality_fail="quarantine",
)
Ações de falha
fail
Abortar a execução quando uma regra falhar. Use para tabelas selecionadas e contratos rígidos.
warn
Registre a falha, mas continue escrevendo. Use somente quando a empresa aceitar portas fracas.
quarantine
Grave linhas inválidas na quarentena e continue com linhas válidas quando as regras puderem isolar linhas.
Escalação apenas para abortar
Falhas no nível do conjunto de dados, como colunas ausentes, chaves duplicadas ou poucas linhas, falham mesmo quando a quarentena é solicitada.
Modelo de desempenho
ContractForge consolida agregados de qualidade para evitar uma ação Spark por regra. A extração de linhas em quarentena ainda requer uma ação porque as linhas rejeitadas devem ser materializadas.
Regras personalizadas
Use o registro de qualidade customizado quando uma regra for reutilizável em projetos. Mantenha as regras personalizadas determinísticas e retorne metadados explícitos; evite gravações ocultas ou efeitos colaterais externos.