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 |
| …