Este projeto demonstra uma pipeline completa de engenharia de dados end-to-end, construída no Databricks, utilizando Amazon S3 como Data Lake e Unity Catalog com tabelas Delta como camada curada para consumo analítico.
A solução foi desenhada para suportar dois modos de carga:
- Full Load (carga inicial)
- Incremental Load (carga recorrente e orquestrada)
Essa separação reflete práticas reais de ambientes produtivos, garantindo escalabilidade, controle operacional e facilidade de manutenção.
A arquitetura segue um fluxo claro de dados, desde a origem até o consumo analítico.
Fluxo geral:
Data Sources → Amazon S3 (Raw Zone) → Databricks Processing → Unity Catalog (Delta) → Databricks Dashboard → Consumers
O diagrama completo da arquitetura pode ser encontrado em:
architecture/pipeline_architecture.png
Os dados de origem representam entidades do domínio FMCG:
- Customers
- Products
- Gross Prices
- Orders
O Amazon S3 é utilizado como Data Lake, armazenando os dados brutos que alimentam tanto a carga inicial quanto as cargas incrementais.
Essa camada mantém os dados em formato raw, sem transformações, servindo como ponto único de entrada para a pipeline.
A carga full é responsável pelo bootstrap inicial do ambiente analítico.
Características:
- Executada sob demanda
- Utiliza notebooks do Databricks Workspace
- Cria e popula tabelas Delta no Unity Catalog
- Estabelece a base histórica dos dados
Essa etapa normalmente é executada apenas uma vez ou em cenários de reprocessamento completo.
A carga incremental é responsável pela atualização recorrente dos dados.
Características:
- Orquestrada via Databricks Jobs
- Executada de forma agendada (diária)
- Processa apenas novos ou alterados registros
- Respeita dependências entre dimensões e fato
O Job incremental segue a seguinte ordem lógica:
- Processamento das dimensões (customers → products → prices)
- Processamento incremental da tabela fato (orders)
A definição detalhada do Job pode ser encontrada em:
orchestration/databricks_job.md
O processamento de dados ocorre no Databricks Workspace, organizado em camadas claras:
- Setup Layer: configuração de catálogo, schemas e utilidades
- Dimension Processing: tratamento e atualização das tabelas dimensionais
- Fact Processing: carga full e incremental da tabela fato
Essa organização facilita manutenção, leitura do código e evolução da pipeline.
Os dados transformados e limpos são persistidos no Unity Catalog, utilizando tabelas Delta.
Tabelas principais:
- dim_customers
- dim_products
- dim_prices
- fact_orders
Essa camada representa a fonte única de verdade para consumo analítico.
Os dados curados podem ser consumidos por:
- Ferramentas de BI
- Consultas SQL analíticas
- Usuários downstream
Essa separação garante que consumidores não acessem dados brutos ou intermediários. O projeto também inclui um dashboard nativo do Databricks construído sobre Delta tables selecionadas para consumo analítico. Uma exportação em PDF está disponível na pasta dashboards/ para referência.
- Arquitetura de dados end-to-end
- Separação entre full load e incremental load
- Orquestração com Databricks Jobs
- Processamento baseado em dependências
- Uso de Delta Lake e Unity Catalog
- Boas práticas de organização de pipelines
Este projeto foi desenvolvido com foco em boas práticas de engenharia de dados, simulando um cenário real de produção, desde a ingestão até o consumo analítico.
Ele faz parte de um portfólio voltado para posições de Data Engineer.