Logo Lanfrica

c-matias/petroleum-etl-pipeline

Domaine:

environment and energy

Type de record:

software
Créateur:
C.
Hôte:
End-to-end data pipeline ingesting, validating and transforming petroleum production data from Angolan oil blocks (Sonangol, TotalEnergies, BP Angola) # Pipeline ETL — Sector Petrolífero Angola Pipeline automatizado de ingestão, limpeza e transformação de dados operacionais do sector petrolífero angolano. Reduz **70%** no tempo de preparação de relatórios mensais, com validação automática de qualidade (6 checks) e alertas por e-mail em caso de anomalias. **Stack:** Python · Pandas · Apache Airflow 2.8 · PostgreSQL 15 · Docker --- ## Arranque rápido (3 comandos) ```bash # 1. clonar / descompactar e entrar na pasta cd petroleum_pipeline # 2. preparar e iniciar tudo make up # 3. acionar o pipeline manualmente make trigger ``` Airflow UI → **http://localhost:8080** · login: `admin` / `admin` PostgreSQL → `localhost:5433` · user: `pipeline_user` · pass: `pipeline_pass` --- ## Estrutura ``` petroleum_pipeline/ ├── docker-compose.yml # orquestração de todos os serviços ├── Makefile # comandos de operação ├── .env # variáveis de ambiente (editar SMTP) ├── dags/ │ └── petroleum_etl_dag.py # DAG principal Airflow (9 tasks) ├── src/ │ ├── extractors/ # CSV / Excel / API REST │ ├── transformers/ # KPIs, water cut, estimativas financeiras │ ├── validators/ # 6 checks de qualidade automáticos │ ├── loaders/ # upsert PostgreSQL idempotente │ └── notifiers/ # alertas e relatório mensal por e-mail ├── config/ │ └── validation_rules.yaml # regras de negócio configuráveis ├── sql/ │ └── schema.sql # DDL + views analíticas ├── tests/ # pytest — cobertura > 80% └── data/raw/input/ # colocar ficheiros CSV aqui ``` --- ## Comandos Make | Comando | Descrição | |---|---| | `make up` | iniciar todos os serviços | | `make down` | parar e remover containers | | `make restart` | reiniciar webserver + scheduler | | `make logs` | ver logs em tempo real | | `make status` | ver estado dos containers | | `make trigger` | acionar o pipeline manualmente | | …