← voltar aos projetos

Pipeline de dados · Medallion Architecture

Pipeline de Dados de Vendas

Ingestão de múltiplas fontes (CSV + API), tratamento de qualidade em camadas e modelagem dimensional em Star Schema para analytics.

Status
Concluído
Stack
Python · Airflow · Docker · dbt · PostgreSQL · MinIO
Código

Contexto

Construção de um pipeline de dados de vendas ponta a ponta, simulando um cenário real de ingestão heterogênea: parte dos dados chega via arquivos CSV, parte via API. O objetivo era demonstrar domínio de arquitetura em camadas, qualidade de dados e modelagem dimensional — não só "fazer o dado chegar", mas garantir que ele chegue confiável.

Fluxo da arquitetura

Separação clara de responsabilidades entre as camadas Bronze (dado bruto), Silver (validado e padronizado) e Gold (modelado para consumo), com o dbt rodando isolado via DockerOperator dentro da orquestração do Airflow.

Ambiente Docker CSV Open-Meteo API Airflow orchestrator DockerOperator MinIO (Object Storage) Bronze raw CSV Silver parquet validado Pandas/S3FS docker.sock /var/run/docker.sock dbt-core container efêmero executa PostgreSQL DWH load_stage staging gold star schema carga inicial lê dados transforma Streamlit Analytics API Layer Altair / Plotly Dashboard interativo consulta SQL 👤 Usuário Final visualização

Modelagem dimensional (Star Schema)

A camada Gold materializa, via dbt, um esquema estrela no PostgreSQL: uma tabela fato de vendas conectada a quatro dimensões (cliente, produto, tempo e representante), com chaves substitutas (sk_*) e métricas de receita, custo e margem já calculadas.

fato_vendas sk_venda PK id_venda sk_cliente FK sk_produto FK sk_representante FK sk_tempo FK qtd_caixas preco_unitario desconto_pct receita_bruta receita_liquida custo_total margem_bruta tipo_lancamento status_financeiro dim_cliente sk_cliente PK id_cliente nome_cliente canal regiao cidade uf ativo dim_produto sk_produto PK id_produto nome_produto familia marca embalagem volume_ml preco_tabela custo_unitario dim_tempo sk_tempo PK data_referencia ano mes dia dia_semana clima_temp_max clima_precipitacao dim_representante sk_representante PK id_representante nome_representante canal_venda

Qualidade de dados

  • Validação referencial por regex nos scripts de limpeza (clean_clientes.py, clean_produtos.py, clean_vendas.py)
  • Registros com IDs inválidos ou nulos são isolados em quarentena, em vez de descartados silenciosamente
  • Testes dbt na camada Gold (relationships, not_null, unique, accepted_values), com FKs órfãs marcadas como warn sem interromper o run
  • Logs do Airflow registram volume de linhas rejeitadas e caminho da quarentena para auditoria

Diferenciais técnicos

  • Arquitetura Bronze, Silver e Gold com separação clara de responsabilidades
  • Validação de dados com regex e isolamento de registros inválidos em quarentena, em vez de descartá-los silenciosamente
  • Testes de integridade e tolerância a falhas configurados no dbt
  • Modelagem dimensional (Star Schema) otimizada para consumo em ferramentas de BI
  • Execução isolada do dbt via DockerOperator, desacoplando a transformação da orquestração