Explicação do diagrama
-
Orquestração:
- Bancos de origem (Postgres, MySQL, Mongo) — rodando em Docker local
- Apache Airflow (orquestrador) — extrai dados, gera arquivos Parquet e envia para S3 (Raw)
-
Curadoria:
- IAM — permissões para Airflow, Glue, Lambda, Athena e S3
- AWS Glue (Job/Notebook) — transforma dados (Curated layer) e grava em S3 (Curated)
- AWS Glue Data Catalog registrando tabelas para Athena
- Athena executa consultas serverless sobre os dados no S3
- Lambda + API Gateway — encapsulam consultas/execução de Athena via API
-
Exibição:
- Power BI conecta ao Athena (via direct query) e gera relatórios e visualizações
- 📥 Extrai dados de PostgreSQL, MySQL e MongoDB
- 🧩 Orquestra usando Apache Airflow
- 📂 Salva dados RAW no Amazon S3
- 🔧 Processa camada Curated usando AWS Glue (Notebook)
- 🔍 Consulta via Athena
- 🛰️ Expõe API via API Gateway + AWS Lamda
- 📊 Visualiza no Power BI
├── config/
├── dags/ # DAG principal (get_data_from_db.py)
├── data/ # arquivos dos bancos (Postgrees, MySQL, Mongo DB)
├── datalake/ # arquivos .parquet (raw)
├── init/ # scripts de carga dos bancos
├── logs/ # logs do Airflow
├── plugins/ # operadores customizados
├── prints/ # prints da UI (Para validação)
├── scripts/ # connections, variables, lambda, glue, pbix
├── Dockerfile
├── docker-compose.yaml
├── requirements.txt
└── diagrama-solucao.png
- Apache Airflow:2.10.2 – Orquestração do pipeline.
- Python 3.8+ – Extração e manipulação de dados
- Docker + Docker Compose – Ambientes isolados
- AWS S3 / Glue / Athena / Lambda / API Gateway
- Power BI – Camada de visualização
- Raw → Arquivos Parquet gerados a partir dos bancos de dados
- Curated → Dados tratados e enriquecidos via Glue
- Delivery→ Consultas Athena servindo o Power BI
- Docker
- Docker Compose
- Python 3.8+
- Apache Airflow 2.10
git clone https://github.com/AlexandreVictor/data_extract_pipeline
cd data_extract_pipelineUse os seguintes comandos para fazer o build da imagem customizada do docker
docker compose up --buildCredenciais: (admin/admin)
http://localhost:8080
docker exec -it airflow \
airflow connections import /opt/airflow/scripts/connections.jsondocker exec -it airflow \
airflow variables import /opt/airflow/scripts/variables.jsonNa interface do airflow, localize a dag get_data_from_db.py.
Notebook do Glue: scripts/job-case-allu.ipynb. Ele cria a camada Curated no S3.
Função: scripts/lambda_function.py
- Recebe query
- Executa no Athena
- Retorna JSON
https://gdzgxrjsol.execute-api.us-east-2.amazonaws.com/clientes?nome=Rafael%20Ferraz
[
{
"cliente_id": "44",
"nome": "Rafael Ferraz",
"total_pedidos": "2",
"valor_total": "6290.99",
"qtde_chamados": "1",
"ultima_interacao": "2025-08-10 14:00:00.000"
}
]Arquivo PBIX, conectado ao Athena (DirectQuery).: scripts/pbi-case-allu.pbix.
docker compose down -v