validar schema¶
fábrica
valida tipo, obrigatoriedade e limites de valor de cada campo, linha a linha — e decide o que fazer com registros que não passam: ignorar, descartar ou interromper o pipeline.
quando usar¶
- garantir que campos críticos (ex: cpf, e-mail, valores monetários) tenham o formato esperado antes de seguir no pipeline
- descartar silenciosamente registros malformados vindos de uma fonte pouco confiável, sem perder o restante do lote
- bloquear o pipeline inteiro quando a qualidade dos dados está abaixo do aceitável, antes de qualquer persistência
configuração¶
| campo | tipo | obrigatório | descrição |
|---|---|---|---|
rules |
lista de regras | sim | uma regra por campo a validar |
on_error |
enum | sim | o que fazer com linhas inválidas — ver abaixo · padrão: drop |
comportamento de on_error¶
| valor | efeito |
|---|---|
ignore |
valida e reporta no log, mas não remove nem bloqueia nada — passa todos os dados adiante |
drop |
remove silenciosamente as linhas que violam qualquer regra, mantendo o restante |
fail |
interrompe o pipeline se qualquer linha violar qualquer regra |
cada regra (rules[])¶
| campo | tipo | obrigatório | descrição |
|---|---|---|---|
field |
string | sim | coluna a validar |
type |
enum | sim | string, number, boolean, date, uuid |
required |
bool | não | se true, a coluna não pode ser nula |
max_length |
number | não | tamanho máximo (aplicado ao valor convertido para texto) |
min_value / max_value |
number | não | faixa numérica aceitável (aplicado com conversão numérica) |
exemplo¶
{
"on_error": "drop",
"rules": [
{ "field": "email", "type": "string", "required": true, "max_length": 255 },
{ "field": "idade", "type": "number", "min_value": 0, "max_value": 120 },
{ "field": "id_transacao", "type": "uuid", "required": true }
]
}
linhas com email nulo, idade fora da faixa 0-120 ou id_transacao que não seja um uuid válido são descartadas — as demais seguem no pipeline.
modo bloqueante¶
{
"on_error": "fail",
"rules": [
{ "field": "cpf", "type": "string", "required": true, "max_length": 11 }
]
}
se qualquer linha tiver cpf nulo ou com mais de 11 caracteres, o pipeline inteiro para — nenhuma linha é persistida.
validar schema vs. quality gate¶
| nó | atua sobre | granularidade |
|---|---|---|
| validar schema (este nó) | cada linha individualmente | pode descartar linhas específicas e deixar as demais passarem |
| quality gate | o dataset como um todo | decide passar ou bloquear o lote inteiro; não descarta linhas individualmente |
use validar schema para limpeza linha a linha, e um quality gate logo antes do lakehouse writer como última barreira de qualidade do lote inteiro.