Pular para conteúdo

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

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.