Skip to content

AlexandreVictor/data_extract_pipeline

Repository files navigation

Data Extract Pipeline

Explicação do diagrama

  1. 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)
  2. 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
  3. Exibição:

    • Power BI conecta ao Athena (via direct query) e gera relatórios e visualizações

📚 Sobre o projeto

  • 📥 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

🧱 Estrutura do projeto

├── 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

🛠️ Ferramentas utilizadas:

  • 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

🧠 Design da soluçã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

🚀 Instruções para execução

Requirements

  • Docker
  • Docker Compose
  • Python 3.8+
  • Apache Airflow 2.10

1. Clone o repositório

git clone https://github.com/AlexandreVictor/data_extract_pipeline
cd data_extract_pipeline

2. Build e Start dos serviços

Use os seguintes comandos para fazer o build da imagem customizada do docker

docker compose up --build

3. Acessar Airflow Web UI

Credenciais: (admin/admin)

http://localhost:8080

Importar Connections e Variables

Connections

docker exec -it airflow \
    airflow connections import /opt/airflow/scripts/connections.json

Variables

docker exec -it airflow \
    airflow variables import /opt/airflow/scripts/variables.json

Executando a DAG:

Na interface do airflow, localize a dag get_data_from_db.py.

☁️ 4. Processamento no Glue

Notebook do Glue: scripts/job-case-allu.ipynb. Ele cria a camada Curated no S3.

🔍 5. Consulta via Athena (Lambda + API Gateway)

Função: scripts/lambda_function.py

Exemplo real:

  • 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"
        }
      ]

📊 6. Visualização no Power BI

Arquivo PBIX, conectado ao Athena (DirectQuery).: scripts/pbi-case-allu.pbix.

🧹 7. Limpeza

docker compose down -v

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published