Skip to content

Repository files navigation

🌤️ Pipeline ETL - Clima de Fortaleza

Status

Este repositório contém um pipeline completo de Extração, Transformação e Carga (ETL) de dados meteorológicos da cidade de Fortaleza (CE). O projeto foi construído para capturar dados climáticos em tempo real, tratá-los e armazená-los em um Data Warehouse, criando uma base histórica pronta para análises e dashboards de Business Intelligence.

💡 Nota: Este material foi desenvolvido como parte de um projeto prático (hands-on) promovido pela @VBLUUIZA.


🛠️ Stacks

Orquestração, Infraestrutura & Versionamento:
Apache Airflow Docker Ubuntu Git

ETL, Análise & Visualização:
Python Pandas NumPy Matplotlib Seaborn Jupyter

Banco de Dados:
PostgreSQL


🏗️ Arquitetura do Projeto

Fluxo da Arquitetura de Dados

O pipeline funciona de forma automatizada (agendado de hora em hora) seguindo os passos descritos no fluxo acima:

  1. Extract (extract_data.py): Consome a API do OpenWeatherMap para buscar os dados atuais de temperatura, umidade, pressão, etc., salvando o resultado bruto em um arquivo .json na camada de data/.
  2. Transform (transform_data.py): Lê o .json, normaliza as estruturas aninhadas, filtra colunas desnecessárias, renomeia chaves, converte os campos de timestamp (UNIX) para o fuso horário correto e salva os dados limpos em formato colunar .parquet para alta performance.
  3. Load (load_data.py): Carrega o arquivo .parquet transformado e faz o append no banco de dados PostgreSQL utilizando SQLAlchemy.

🚧 Desafios Resolvidos

Durante o desenvolvimento deste pipeline, lidamos com desafios reais de arquitetura de dados e infraestrutura:

  • Conflito de Portas de Banco de Dados: Inicialmente, houve um conflito entre a instância nativa do PostgreSQL rodando no Windows (na porta 5432) e o banco do contêiner Docker. Para garantir a portabilidade do projeto, a arquitetura foi refatorada isolando o Data Warehouse 100% no Docker, expondo-o de forma segura na porta 5433.
  • Gerenciamento de Dependências no Airflow: Como o Airflow roda em contêineres limpos, lidar com erros de ModuleNotFoundError exigiu a injeção automatizada de dependências pesadas (pandas, pyarrow, psycopg2, sqlalchemy) via _PIP_ADDITIONAL_REQUIREMENTS no momento de subida (build) da imagem.
  • Isolamento de Volumes no Docker: Para implementar o padrão de File-Based Handoff (passagem de arquivos entre tarefas), foi necessário configurar bind mounts customizados no docker-compose.yaml, permitindo que os workers do Airflow escrevessem e lessem nas pastas /src e /data de forma consistente.
  • Pathing de Módulos Python: Manipulação do sys.path dinamicamente dentro da DAG para que o motor de orquestração localizasse os módulos modulares de ETL extraídos em arquivos separados (extract_data.py, etc.).

🚀 Próximos Passos

  • Incremento de informações, criação de painéis / relatórios para a visualização da análise

📽️ Esse projeto foi possível graças a educadores que estão democratizando o conhecimento da área tech

About

Pipeline completo de Extração, Transformação e Carga (ETL) de dados meteorológicos da cidade de Fortaleza (CE). O projeto foi construído para capturar dados climáticos em tempo real, tratá-los e armazená-los em um Data Warehouse, criando uma base histórica pronta para análises e dashboards de Business Intelligence.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages