Blog · 28 de agosto de 2026
Quarentena, não crash: o que um pipeline deve fazer com linhas inválidas
Um carregamento que falha por causa de um registo malformado não é rigoroso, é frágil. Um carregamento que o aceita em silêncio é pior. A resposta útil é uma terceira.
3 min de leitura
Há dois modos de falha que aparecem constantemente no carregamento de dados, e são opostos.
O primeiro é o pipeline que para de vez na primeira linha inválida. Um registo tem uma data malformada, o processo dá erro, e 400 000 registos bons não chegam ao destino. Alguém é chamado, corrige uma célula e volta a correr tudo.
O segundo é o pipeline que aceita tudo. Nunca nada falha, o que parece ótimo até alguém reparar que o valor da faturação está errado e ninguém saber dizer desde quando.
A terceira opção
As linhas inválidas devem ser encaminhadas, não fatais. Valide cada registo com as regras que realmente importam, deixe passar os bons e escreva as falhas numa tabela de quarentena, com o motivo da falha e o lote de onde vieram.
Isto muda a forma do problema. O carregamento termina. Os dados bons ficam disponíveis. Os dados inválidos não são descartados em silêncio nem aceites em silêncio: estão num sítio concreto, com uma explicação, à espera de serem analisados. E, sobretudo, o número de linhas em quarentena passa a ser um valor que se pode acompanhar.
Uma tabela de quarentena sempre vazia diz que as regras são demasiado permissivas. Uma que se está a encher diz exatamente onde procurar.
Que regras vale a pena impor
Nem todas as verificações merecem desviar uma linha. As que geralmente merecem:
- Campos obrigatórios de que dependem os joins seguintes. Um id de cliente em falta não é um problema cosmético.
- Tipos que têm de ser interpretáveis. Uma data que não é uma data vai falhar mais tarde, mais longe e de forma mais confusa.
- Verificações referenciais contra dimensões que controla. Uma encomenda de um produto que não existe é um sinal real.
- Intervalos fisicamente impossíveis. Quantidades negativas, datas no futuro, percentagens acima de cem.
Verificações que funcionam melhor como avisos do que como desvios: valores invulgares mas válidos, campos opcionais, tudo aquilo em que o negócio tem casos genuinamente confusos mas válidos. Desviá-los ensina as pessoas a ignorar a quarentena, o que anula o objetivo.
A deriva de esquema é outra categoria
Uma coluna que desaparece, muda de tipo ou chega com um nome novo não é uma linha inválida. É um contrato quebrado, e deve parar o carregamento em vez de pôr 100% dos registos em quarentena, um a um.
A distinção importa na operação. As falhas ao nível da linha são um problema de dados e muitas vezes corrigem-se sozinhas. A deriva de esquema é uma mudança na origem de que alguém precisa de saber hoje, porque todos os pressupostos a jusante acabaram de ficar em dúvida.
Como é quando está bem feito
Percebe-se se um pipeline trata isto bem com uma pergunta: quando algo corre mal, o sistema diz-lhe o quê, quanto e desde quando? Se a resposta é um stack trace, o desenho não está terminado. Se a resposta é um número de linhas, um motivo e um id de lote, está.
- Qualidade de dados
- Pipelines
- Fiabilidade
Quer isto para o seu negócio?
Diga-nos o que demora demasiado tempo ou o que quer melhorar.