(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como validar qualidade de dados em Lakehouse: passo a passo

João Barros 02 de November de 2026 4 min de leitura

Este tutorial mostra como implementar validações de qualidade de dados em Lakehouse para detectar esquemas inconsistentes, valores nulos ou regras de negócio violadas. Garantir qualidade no Lakehouse evita análises enganadoras e falhas em pipelines downstream.

Pré-requisitos

  • Conta com acesso ao Lakehouse no Microsoft Fabric ou ambiente compatível com Delta Lake.
  • Ficheiro de origem (CSV/Parquet) carregado no armazenamento associado ao Lakehouse.
  • Permissões para criar tabelas Delta e executar PySpark/SQL no workspace.
  • Conhecimentos básicos de SQL e PySpark.

Passo 1: Definir regras de qualidade (Data Quality Rules)

Antes do código, lista as regras que queres validar: esquema obrigatório, colunas não-nulas, valores dentro de intervalo, unicidade, e verificações de formato (por ex., email). Estas regras serão aplicadas à tabela Delta do Lakehouse.

Passo 2: Criar tabela Delta de exemplo

Cria uma tabela Delta simples com dados de exemplo para testar as validações. Isto ajuda a reproduzir erros comuns como tipos incorretos ou valores nulos.

-- SQL no endpoint do Lakehouse
CREATE TABLE IF NOT EXISTS vendas_delta (
  id STRING,
  data DATE,
  cliente_email STRING,
  valor DOUBLE
)
USING delta;

-- Inserir alguns registos de teste
INSERT INTO vendas_delta VALUES
('1','2026-10-01','cliente1@example.com',100.0),
('2',NULL,'cliente2@example',NULL),
('3','2026-10-03','',50.0);

Passo 3: Validar esquema e tipos com PySpark

Carrega a tabela Delta como DataFrame e valida tipos e colunas obrigatórias. Se houver divergências, regista-as para revisão.

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when

spark = SparkSession.builder.getOrCreate()
df = spark.read.format('delta').table('vendas_delta')

# Verificar colunas esperadas
expected_cols = {'id','data','cliente_email','valor'}
missing = expected_cols - set(df.columns)
if missing:
    print('Colunas em falta:', missing)

# Validar tipos básicos (exemplo simples)
# Aqui assumimos que valor deve ser double e data deve ser date
# Converter e contar falhas
bad_valor = df.filter(col('valor').isNull())
print('Registos com valor nulo:', bad_valor.count())

bad_data = df.filter(col('data').isNull())
print('Registos com data nula:', bad_data.count())

Passo 4: Validar regras de negócio (unicidade, formato)

Aplica verificações específicas: unicidade do id e formato do email. Usa funções SQL ou PySpark para encontrar violações e gerar um relatório.

# Unicidade de id
dups = df.groupBy('id').count().filter('count > 1')
print('IDs duplicados:', dups.count())

# Validação simples de email (contém @ e .)
from pyspark.sql.functions import length
bad_email = df.filter(~(col('cliente_email').rlike('^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')))
print('Emails inválidos:', bad_email.count())

Passo 5: Registar resultados de validação em tabela de auditoria

Criar uma tabela Delta de auditoria permite rastrear falhas ao longo do tempo e automatizar alertas. Insere uma linha por falha com timestamp e tipo de erro.

-- Criar tabela de auditoria
CREATE TABLE IF NOT EXISTS dq_audit (
  ts TIMESTAMP,
  tabela STRING,
  tipo_erro STRING,
  detalhe STRING
)
USING delta;

-- Exemplo de inserção manual de um erro detectado
INSERT INTO dq_audit VALUES (current_timestamp(),'vendas_delta','EMAIL_INVALIDO','linha id 2: cliente2@example');

Passo 6: Automatizar validações com job agendado

Coloca o script de validação num pipeline agendado (ex.: Notebook agendado no Fabric) para correr após cargas ETL. Se forem encontradas falhas, podes notificar por email ou registar uma tarefa de correção.

# Pseudo-exemplo: no final do notebook
if bad_email.count() > 0 or bad_data.count() > 0:
    # regista resumo na tabela dq_audit
    spark.sql("INSERT INTO dq_audit VALUES (current_timestamp(),'vendas_delta','QUEBRAS_QUALIDADE','Verificar registos nulos ou emails')")
    # aqui podes adicionar integração com notificações externas

Verificar o resultado

Consulta a tabela dq_audit e a tabela original para confirmar que as falhas foram detetadas e registadas. Valida também que o job agendado corre sem erros e que as métricas (contagens de falhas) correspondem aos dados de teste.

SELECT * FROM dq_audit ORDER BY ts DESC LIMIT 10;

SELECT id, data, cliente_email, valor FROM vendas_delta LIMIT 20;

Conclusão

Com estas etapas implementaste validações básicas de qualidade de dados no Lakehouse, desde verificações de esquema até regras de negócio e auditoria. Próximos passos: expandir regras (ex.: referências a outras tabelas), criar alertas automáticos e integrar com pipelines ETL. Dica: começa simples e acrescenta regras conforme encontras problemas reais — qual foi a validação mais útil para a tua equipa?