Data Quality
LakehouseApresentação
🧪 BLOCO 5 — Data Quality
1️⃣ O que é Data Quality
Data Quality significa garantir que os dados são:
- correctos
- completos
- consistentes
- confiáveis
- utilizáveis
Dimensões clássicas da qualidade de dados:
| Dimensão | Significado | |----------|-------------| | Accuracy | dados representam a realidade | | Completeness | campos não estão vazios | | Consistency | dados não entram em conflito | | Validity | respeitam regras | | Timeliness | chegam a tempo | | Uniqueness | não há duplicados |
Exemplo simples:
Tabela orders
| order_id | user_id | price | |----------|---------|-------| | 1 | 10 | 20 | | 1 | 10 | 20 |
Problema: duplicate primary key
2️⃣ Tipos de testes de dados
Existem 4 categorias principais.
1 — Schema tests
Verificam se a estrutura dos dados mudou.
Exemplo: coluna removida, tipo mudou, coluna nova
Exemplo SQL:
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'orders'
Problema típico: API muda campo price → total_price. Pipeline quebra.
2 — Null checks
Campos obrigatórios não podem ser NULL.
Exemplo:
SELECT *
FROM users
WHERE user_id IS NULL
Problema comum: dados incompletos, erro de ingestion
3 — Uniqueness tests
Campos devem ser únicos.
Exemplo:
SELECT order_id, COUNT(*)
FROM orders
GROUP BY order_id
HAVING COUNT(*) > 1
4 — Range / validity checks
Verificam valores válidos.
Exemplo:
SELECT *
FROM payments
WHERE amount < 0
Outro exemplo: WHERE age > 120
3️⃣ Ferramentas usadas na indústria
dbt tests
Muito comum.
Exemplo:
models:
- name: orders
columns:
- name: order_id
tests:
- not_null
- unique
Tipos: not_null, unique, accepted_values, relationships
Great Expectations
Framework de validação de dados.
Exemplo: expect_column_values_to_not_be_null("user_id")
Outros: expect_column_values_to_be_between, expect_table_row_count_to_be_between, expect_column_values_to_match_regex
Deequ (Amazon)
Biblioteca Scala/Spark.
Exemplo: isComplete("user_id"), isUnique("order_id"), hasSize(_ >= 1000)
4️⃣ Data Observability
Data observability é monitorização contínua da saúde dos dados.
Parecido com monitoring de software.
Observa:
- freshness
- volume
- schema
- distribution
- lineage
Freshness
Dados chegaram a tempo?
Exemplo: SELECT MAX(created_at) FROM orders — se última linha for de ontem → pipeline falhou.
Volume anomalies
Volume mudou inesperadamente.
Exemplo: normal: 1M rows/day | hoje: 50k → provável problema.
Distribution anomalies
Mudança de distribuição.
Exemplo: normal: 30% mobile users | hoje: 90% → pode ser bug.
Lineage
Rastrear origem dos dados.
Exemplo: table_a → transformation → table_b → dashboard
Ferramentas: dbt docs, OpenLineage, DataHub, Monte Carlo
5️⃣ Boas práticas reais em produção
- Testes automáticos — Sempre após transformações
- Alerting — Slack, PagerDuty, email quando teste falha
- Data contracts — Define expectativas de dados
- Monitoring de métricas — row counts, freshness, duplicates, null rates
Pipeline típico:
ingestion → tests → transform → tests → publish
🚨 Exemplos de problemas reais
- Caso 1: API muda
price→price_total. Pipeline quebra. - Caso 2: Pipeline duplicado. Dashboard mostra vendas a duplicar.
- Caso 3: Falta partição. Dados de hoje não chegam.
⭐ O que impressiona entrevistadores
Se disseres: data observability, data contracts, lineage, freshness monitoring, anomaly detection — pareces muito sénior.
🎯 10 perguntas que podem sair na entrevista
- O que é Data Quality?
- Que tipos de testes aplicarias num pipeline?
- Como garantir qualidade num pipeline?
- O que é Data Observability?
- Como detectar anomalias em dados?
- O que é Data Lineage?
- Qual a diferença entre monitoring e observability?
- O que são Data Contracts?
- O que farias se um pipeline produzir dados errados?
- Como detectar duplicados numa tabela?
Perguntas
Sem perguntas. Clica em Editar para adicionar.