Pipeline ETL com Python
Construir pipeline de extração, transformação e carga de dados entre fontes distintas.
- em 1 a 2 semanas
- 8 a 16 h em 1 a 2 semanas
- o que você entrega
- Repositório o que você entrega
- com checkpoint
- 5 etapas com checkpoint
- de aceite
- 9 requisitos de aceite
Por que este projeto
Os dados nunca chegam prontos: vêm de um CSV exportado do sistema de vendas, de uma API pública, de uma planilha de alguém. O trabalho de engenharia de dados começa em pegar isso, limpar, padronizar e colocar num banco onde outras pessoas conseguem consultar. Este projeto é esse caminho de ponta a ponta, em Python, com log de cada etapa e a possibilidade de rodar de novo sem duplicar nada.
Você vai sair sabendo
O que precisa estar lá no fim
É o contrato do projeto. Quando os 9 estiverem verdade, você terminou.
- Extração de pelo menos uma fonte (CSV ou API pública), em uma função separada
- Pelo menos 3 regras de transformação (conversão de tipo, tratamento de nulo, padronização de nome de coluna), listadas no README
- Validação que impede a carga se faltar coluna obrigatória ou se o resultado vier vazio
- Carga em PostgreSQL ou SQLite via SQLAlchemy, com a tabela criada pelo próprio pipeline
- Log (arquivo ou stdout) com início, fim, quantidade de linhas por etapa e erros
- Rodar duas vezes não duplica dados (upsert, truncate antes da carga, ou chave única), e o README explica a estratégia
- O pipeline roda inteiro com um comando (por exemplo, python pipeline.py)
- requirements.txt com as dependências
- Pelo menos 5 commits com mensagens que dizem o que mudou
Etapas
Extrair
1 a 2 h- Escolha a fonte e escreva extract.py: lê o CSV ou chama a API e devolve um DataFrame.
- Imprima shape e as primeiras linhas.
Pronto quando: python extract.py mostra os dados brutos.
Transformar
2 a 4 h- Em transform.py, padronize nomes de coluna, converta datas e números, trate nulos.
- Anote cada regra que aplicar: elas vão para o README.
Pronto quando: O DataFrame sai com tipos certos e sem as sujeiras que você listou.
Validar
1 h- Antes de carregar, confira colunas obrigatórias e se há linhas.
- Falha de validação para o pipeline com mensagem clara.
Pronto quando: Remover uma coluna do CSV faz o pipeline parar antes de gravar.
Carregar
2 a 3 h- Em load.py, conecte com SQLAlchemy, crie a tabela e grave.
- Decida como rodar de novo sem duplicar.
Pronto quando: Consultar o banco mostra os dados e rodar de novo não dobra a contagem.
Logar e documentar
1 a 2 h- Adicione logging com contagem por etapa.
- Escreva o README com o desenho E, T, L, o comando, as regras e um print do log.
Pronto quando: Outra pessoa roda o pipeline só com o README.
Entrega
Terminou? Marque a conclusão e o projeto vira parte do seu perfil.
Depois
Dados nunca chegam prontos. Eu fiz o caminho todo. Um pipeline ETL em Python: extrai de [CSV ou API], transforma com Pandas, valida antes de gravar, carrega num banco com SQLAlchemy, e loga cada etapa. Roda com um comando e pode rodar de novo sem duplicar. O que ficou: • Separar extração, transformação e carga em funções • Validar antes de carregar (aprendi na dor) • Log que conta linhas por etapa A regra de transformação mais chata foi [conta aqui]. Repositório nos comentários. #engenhariadedados #python #etl #pandas #boranatech
Orquestração com Airflow