Pular para conteúdo

quality gate

controle

valida um conjunto de regras de qualidade sobre o dataset completo e decide se o pipeline continua ou é bloqueado. não persiste nenhum dado — é uma barreira, não um destino. a persistência acontece depois, no lakehouse writer.

este é o nó canônico de qualidade da plataforma — substitui o antigo nó "staging" (veja staging para a nota de compatibilidade).


quando usar

  • bloquear a gravação no lakehouse quando o dataset não atende a critérios mínimos de qualidade (ex: nenhuma linha, coluna obrigatória com nulos, duplicatas em uma chave)
  • validar uma regra de negócio arbitrária via sql customizado antes de considerar os dados prontos para persistir
  • como última barreira do pipeline, logo antes do lakehouse writer

configuração

campo tipo obrigatório descrição
rules lista de regras sim uma ou mais regras de qualidade avaliadas sobre o dataset
fail_on_error bool sim se true, qualquer regra que falhe interrompe o pipeline · padrão: true
description string não nota livre exibida na interface, para documentar o propósito do gate

tipos de regra (rules[])

tipo campos usados o que valida
not_null column a coluna não pode ter nenhum valor nulo no dataset
unique column a coluna não pode ter valores duplicados
min_rows value o dataset deve ter pelo menos value linhas
max_rows value o dataset deve ter no máximo value linhas
custom_sql sql sql arbitrário — se a consulta retornar linhas, é considerado uma violação

todas as regras aceitam um campo opcional label, usado para identificar a regra no relatório de execução.


exemplo

{
  "fail_on_error": true,
  "rules": [
    { "type": "not_null", "column": "cliente_id", "label": "cliente_id obrigatório" },
    { "type": "unique", "column": "pedido_id", "label": "pedido_id único" },
    { "type": "min_rows", "value": 1, "label": "dataset não pode ser vazio" },
    {
      "type": "custom_sql",
      "sql": "SELECT * FROM {{upstream}} WHERE valor < 0",
      "label": "nenhum valor negativo"
    }
  ]
}

se qualquer regra falhar, o pipeline é interrompido com uma mensagem detalhando qual regra e quantas linhas violaram.

modo não bloqueante

{
  "fail_on_error": false,
  "rules": [
    { "type": "not_null", "column": "telefone", "label": "telefone preenchido" }
  ]
}

com fail_on_error: false, o resultado da validação aparece no log de execução, mas o pipeline segue adiante mesmo que a regra falhe — útil para monitorar qualidade sem bloquear operação enquanto uma fonte ainda está instável.


quality gate vs. validar schema

atua sobre granularidade
validar schema cada linha individualmente pode descartar linhas específicas e deixar as demais passarem
quality gate (este nó) o dataset como um todo decide passar ou bloquear o lote inteiro; não descarta linhas

um padrão comum é usar validar schema para limpar linha a linha logo após a fonte, e um quality gate como última barreira, logo antes do lakehouse writer.