https://github.com/userdanixdev/project_ampev
https://github.com/userdanixdev/project_ampev
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/userdanixdev/project_ampev
- Owner: userdanixdev
- License: gpl-3.0
- Created: 2026-02-17T23:45:35.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-18T02:09:57.000Z (4 months ago)
- Last Synced: 2026-02-18T06:09:25.740Z (4 months ago)
- Language: Jupyter Notebook
- Size: 26.4 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# project_ampev
## 📊 Projeto AMPEV – Pipeline de Ingestão com Azure Databricks
### 🧭 Executive Summary:
Este projeto implementa um pipeline de ingestão incremental utilizando Azure Databricks, Unity Catalog e Delta Lake, seguindo a arquitetura Medallion (Bronze → Silver → Gold).
A camada Bronze já está totalmente operacional, com:
- Ingestão incremental via Auto Loader (cloudFiles)
- Governança com Unity Catalog
- Controle de schema explícito
- Metadados de ingestão
- Execução automatizada via Jobs
- Versionamento com GitHub (Databricks Repos)
### 🏗️ Arquitetura:
```
Volumes (Landing Zone)
↓
Auto Loader (cloudFiles)
↓
Delta Tables (Bronze Layer - Unity Catalog)
↓
(Silver Layer - futura etapa)
```
### 📁 Estrutura do Volume:
Volume utilizado:
> /Volumes/ampev/bronze/landings
**Estrutura organizada:**
```
landings/
│
├── estabelecimentos/
├── pedidos/
│
├── samples/
│ ├── estabelecimentos/
│ └── pedidos/
│
├── _schemas/
│ ├── estabelecimentos/
│ └── pedidos/
│
└── _checkpoints/
├── estabelecimentos/
└── pedidos/
```
## 📦 Dados Ingeridos
### 📄 estabelecimentos.csv
| Campo | Tipo |
| ----------------- | ------ |
| Local | String |
| Email | String |
| EstabelecimentoID | Long |
| Telefone | String |
### 📄 pedidos.csv:
| Campo | Tipo |
| ------------------ | ----------------------------------- |
| PedidoID | Long |
| EstabelecimentoID | Long |
| Produto | String |
| quantidade_vendida | Long |
| Preco_Unitario | Double |
| data_venda | String (futura conversão para Date) |
## ⚙️ Tecnologias Utilizadas:
- Azure Databricks
- Unity Catalog
- Delta Lake
- Auto Loader (cloudFiles)
- GitHub (via Databricks Repos)
- Jobs (Workflows)
## 🔄 Estratégia de Ingestão:
> Auto Loader separado por entidade:
- Cada entidade possui:
- Pasta exclusiva
- SchemaLocation exclusivo
- Checkpoint exclusivo
- Tabela Delta exclusiva
```Isso evita mistura de dados e garante isolamento.```
> Schema congelado (bootstrap controlado):
Os schemas foram inferidos a partir de arquivos sample e posteriormente congelados usando StructType(...), garantindo:
- Controle de tipos
- Estabilidade do pipeline
- Evitar inferência automática incorreta
- Permitir validação futura de mudanças de layout
## Metadados de ingestão explícito:
Durante o writeStream são adicionadas colunas técnicas:
- ```_ingest_ts``` → timestamp da ingestão
- ```_source_file``` → caminho do arquivo original (via _metadata.file_path)
### 🚀 Execução do Pipeline:
> Pipeline executado via Databricks Job agendado.
```
Configuração recomendada:
Trigger: Scheduled
Frequência: a cada 10 minutos
Trigger type: availableNow=True
```
> Fluxo:
- Arquivo é colocado na pasta landing
- Job executa
- Auto Loader processa apenas novos arquivos
- Dados são gravados na Bronze
- Job encerra
## 🔐 Governança (Unity Catalog)
As tabelas são criadas em:
- ampev.bronze.estabelecimentos
- ampev.bronze.pedidos
## 🔍 Auditoria do Pipeline:
Foi implementado script de auditoria automática para validação de:
- Existência da tabela
- Quantidade de registros
- Presença de metadados
- Histórico Delta
- Existência de checkpoint
## 🧪 Controle de Execução:
O pipeline não inicia se a pasta estiver vazia:
> has_files(path)
Isso evita:
- Erros de inferência
- Criação de checkpoint vazio
- Execuções desnecessárias
## 🔄 Controle de Versionamento:
Integração via Databricks Repos:
> Repos//
Fluxo:
- Clone do repositório GitHub
- Commit & Push via UI do Databricks
## 📌 Boas Práticas Aplicadas:
- Separação por entidade
- Schema explícito
- Uso de checkpoints dedicados
- Uso de _metadata.file_path
- Execução via Job
- Estrutura padronizada de diretórios
- Auditoria automatizada
## 📈 Próximos Passos (Roadmap):
- Implementar camada Silver (join pedidos ↔ estabelecimentos)
- Normalização de tipos (converter data_venda para DateType)
- Adicionar monitoramento via alertas
- Criar branch strategy (dev/main)
## 🎯 Status Atual:
- ✅ Volume criado
- ✅ Estrutura organizada
- ✅ Auto Loader configurado
- ✅ Schema congelado
- ✅ WriteStream configurado
- ✅ Job configurado
- ✅ Integração com Git funcionando
Pipeline Bronze operacional.
📈 Roadmap Estratégico
🔹 Próxima Fase – Silver Layer
Conversão data_venda para DateType
Join entre pedidos e estabelecimentos
Tratamento de dados inválidos
Deduplicação
🔹 Fase Gold
KPIs
Métricas agregadas
Camada para BI / Power BI
🔹 Melhorias Futuras
Alertas automáticos
Testes de qualidade de dados
CI/CD com branches dev/main
Monitoramento de SLA