Engenharia de Dados · 2025

Pipeline ETL com
Airflow e Docker

Pipeline de orquestração que automatiza extração, validação e carga de registros entre dois bancos PostgreSQL — agendado diariamente, monitorado e 100% reproduzível em qualquer máquina.

Apache Airflow Docker PostgreSQL Python ETL DAG Pandas CSV

Contexto e Problema

Em um cenário de estudo prático de orquestração de dados, precisava construir um pipeline ETL que extraísse a tabela customers de um banco PostgreSQL (source_db), armazenasse localmente em CSV e carregasse os dados em outro banco PostgreSQL (target_db).

O desafio era garantir que o processo fosse automatizado, agendado e monitorado, utilizando Apache Airflow e Docker. Além disso, era necessário tratar problemas reais de rede entre containers, compatibilidade de versões e persistência de arquivos temporários.

Objetivos do Pipeline

O objetivo era desenvolver uma DAG no Apache Airflow com quatro tarefas encadeadas:

  • 1
    Extrair os dados do source_db e salvá-los em CSV.
  • 2
    Validar a existência e integridade do arquivo CSV gerado.
  • 3
    Carregar o conteúdo do CSV no target_db.
  • 4
    Validar a carga comparando contagem de registros entre CSV e tabela de destino.

Requisitos Técnicos

O pipeline roda dentro de containers Docker com os bancos em redes isoladas. O código foi versionado, documentado e é completamente reproduzível por qualquer pessoa que clone o repositório.

O uso de Connections do Airflow para gestão segura de credenciais foi implementado como boa prática de segurança — sem senhas hardcoded no código.

Resultado

Pipeline ETL funcional e agendado diariamente, sem intervenção manual. Migração bem-sucedida de 91 registros da tabela customers do source_db para o target_db, com validação automática garantindo 100% de correspondência entre CSV e destino.

Aprendizados e Competências

Orquestração com DAGs, operadores e sensores do Airflow. Comunicação entre containers Docker em redes personalizadas. Tratamento de problemas reais de ambiente: credenciais, caminhos de arquivo e compatibilidade de versões. Documentação seguindo o método STAR.

Quer ver o código completo?

Repositório público com README detalhado, documentação dos erros e soluções.

Ver no GitHub → ← Outros projetos