{"id":45496458,"url":"https://github.com/userdanixdev/project_ampev","last_synced_at":"2026-02-22T17:37:00.898Z","repository":{"id":339093616,"uuid":"1160434405","full_name":"userdanixdev/project_ampev","owner":"userdanixdev","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-18T02:09:57.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T06:09:25.740Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/userdanixdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-17T23:45:35.000Z","updated_at":"2026-02-18T01:20:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/userdanixdev/project_ampev","commit_stats":null,"previous_names":["userdanixdev/project_ampev"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/userdanixdev/project_ampev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdanixdev%2Fproject_ampev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdanixdev%2Fproject_ampev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdanixdev%2Fproject_ampev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdanixdev%2Fproject_ampev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/userdanixdev","download_url":"https://codeload.github.com/userdanixdev/project_ampev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdanixdev%2Fproject_ampev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29720569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-22T17:37:00.787Z","updated_at":"2026-02-22T17:37:00.870Z","avatar_url":"https://github.com/userdanixdev.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# project_ampev\n\n## 📊 Projeto AMPEV – Pipeline de Ingestão com Azure Databricks\n\n### 🧭 Executive Summary:\n\nEste projeto implementa um pipeline de ingestão incremental utilizando Azure Databricks, Unity Catalog e Delta Lake, seguindo a arquitetura Medallion (Bronze → Silver → Gold).\n\nA camada Bronze já está totalmente operacional, com:\n\n- Ingestão incremental via Auto Loader (cloudFiles)\n- Governança com Unity Catalog\n- Controle de schema explícito\n- Metadados de ingestão\n- Execução automatizada via Jobs\n- Versionamento com GitHub (Databricks Repos)\n\n### 🏗️ Arquitetura:\n```\nVolumes (Landing Zone)\n        ↓\nAuto Loader (cloudFiles)\n        ↓\nDelta Tables (Bronze Layer - Unity Catalog)\n        ↓\n(Silver Layer - futura etapa)\n```\n\n### 📁 Estrutura do Volume:\n\nVolume utilizado:\n\n\u003e /Volumes/ampev/bronze/landings\n\n**Estrutura organizada:**\n\n```\nlandings/\n│\n├── estabelecimentos/\n├── pedidos/\n│\n├── samples/\n│   ├── estabelecimentos/\n│   └── pedidos/\n│\n├── _schemas/\n│   ├── estabelecimentos/\n│   └── pedidos/\n│\n└── _checkpoints/\n    ├── estabelecimentos/\n    └── pedidos/\n```\n\n## 📦 Dados Ingeridos\n ### 📄 estabelecimentos.csv\n\n| Campo             | Tipo   |\n| ----------------- | ------ |\n| Local             | String |\n| Email             | String |\n| EstabelecimentoID | Long   |\n| Telefone          | String |\n\n\n### 📄 pedidos.csv:\n\n| Campo              | Tipo                                |\n| ------------------ | ----------------------------------- |\n| PedidoID           | Long                                |\n| EstabelecimentoID  | Long                                |\n| Produto            | String                              |\n| quantidade_vendida | Long                                |\n| Preco_Unitario     | Double                              |\n| data_venda         | String (futura conversão para Date) |\n\n\n\n## ⚙️ Tecnologias Utilizadas:\n\n- Azure Databricks\n- Unity Catalog\n- Delta Lake\n- Auto Loader (cloudFiles)\n- GitHub (via Databricks Repos)\n- Jobs (Workflows)\n\n## 🔄 Estratégia de Ingestão:\n\n\u003e Auto Loader separado por entidade:\n\n- Cada entidade possui: \n        - Pasta exclusiva\n        - SchemaLocation exclusivo\n        - Checkpoint exclusivo\n        - Tabela Delta exclusiva\n\n```Isso evita mistura de dados e garante isolamento.```\n\n\u003e Schema congelado (bootstrap controlado):\n\nOs schemas foram inferidos a partir de arquivos sample e posteriormente congelados usando StructType(...), garantindo:\n\n- Controle de tipos\n- Estabilidade do pipeline\n- Evitar inferência automática incorreta\n- Permitir validação futura de mudanças de layout\n\n## Metadados de ingestão explícito:\n\nDurante o writeStream são adicionadas colunas técnicas:\n\n- ```_ingest_ts``` → timestamp da ingestão\n- ```_source_file``` → caminho do arquivo original (via _metadata.file_path)\n\n### 🚀 Execução do Pipeline:\n\n\u003e Pipeline executado via Databricks Job agendado.\n\n```\nConfiguração recomendada:\nTrigger: Scheduled\nFrequência: a cada 10 minutos\nTrigger type: availableNow=True\n```\n\n\u003e Fluxo:\n\n- Arquivo é colocado na pasta landing\n- Job executa\n- Auto Loader processa apenas novos arquivos\n- Dados são gravados na Bronze\n- Job encerra\n\n## 🔐 Governança (Unity Catalog)\n\nAs tabelas são criadas em:\n\n - ampev.bronze.estabelecimentos\n - ampev.bronze.pedidos\n\n## 🔍 Auditoria do Pipeline:\n\nFoi implementado script de auditoria automática para validação de:\n\n- Existência da tabela\n- Quantidade de registros\n- Presença de metadados\n- Histórico Delta\n- Existência de checkpoint\n\n\n## 🧪 Controle de Execução:\n\nO pipeline não inicia se a pasta estiver vazia:\n\n\u003e has_files(path)\n\nIsso evita:\n\n- Erros de inferência\n- Criação de checkpoint vazio\n- Execuções desnecessárias\n\n## 🔄 Controle de Versionamento:\n\nIntegração via Databricks Repos:\n\n\u003e Repos/\u003cusuario\u003e/\u003crepositorio\u003e\n\n\nFluxo:\n\n- Clone do repositório GitHub\n- Commit \u0026 Push via UI do Databricks\n\n\n## 📌 Boas Práticas Aplicadas:\n\n- Separação por entidade\n- Schema explícito\n- Uso de checkpoints dedicados\n- Uso de _metadata.file_path\n- Execução via Job\n- Estrutura padronizada de diretórios\n- Auditoria automatizada\n\n## 📈 Próximos Passos (Roadmap):\n\n- Implementar camada Silver (join pedidos ↔ estabelecimentos)\n- Normalização de tipos (converter data_venda para DateType)\n- Adicionar monitoramento via alertas\n- Criar branch strategy (dev/main)\n\n## 🎯 Status Atual:\n\n- ✅ Volume criado\n- ✅ Estrutura organizada\n- ✅ Auto Loader configurado\n- ✅ Schema congelado\n- ✅ WriteStream configurado\n- ✅ Job configurado\n- ✅ Integração com Git funcionando\n\nPipeline Bronze operacional.\n\n📈 Roadmap Estratégico\n🔹 Próxima Fase – Silver Layer\n\nConversão data_venda para DateType\n\nJoin entre pedidos e estabelecimentos\n\nTratamento de dados inválidos\n\nDeduplicação\n\n🔹 Fase Gold\n\nKPIs\n\nMétricas agregadas\n\nCamada para BI / Power BI\n\n🔹 Melhorias Futuras\n\nAlertas automáticos\n\nTestes de qualidade de dados\n\nCI/CD com branches dev/main\n\nMonitoramento de SLA","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserdanixdev%2Fproject_ampev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuserdanixdev%2Fproject_ampev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserdanixdev%2Fproject_ampev/lists"}