Data Quality

Lakehouse

Apresentaçã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 pricetotal_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

  1. Testes automáticos — Sempre após transformações
  2. Alerting — Slack, PagerDuty, email quando teste falha
  3. Data contracts — Define expectativas de dados
  4. 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 priceprice_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

  1. O que é Data Quality?
  2. Que tipos de testes aplicarias num pipeline?
  3. Como garantir qualidade num pipeline?
  4. O que é Data Observability?
  5. Como detectar anomalias em dados?
  6. O que é Data Lineage?
  7. Qual a diferença entre monitoring e observability?
  8. O que são Data Contracts?
  9. O que farias se um pipeline produzir dados errados?
  10. Como detectar duplicados numa tabela?

Perguntas

Sem perguntas. Clica em Editar para adicionar.