Don't speak Portuguese? Click here to view this page in English
Este projeto é uma solução para extração, transformação e carregamento de dados (ELT) utilizando Airflow, Meltano, Streamlit e PostgreSQL. Ele permite extrair dados de diferentes fontes, carregá-los em um banco de dados PostgreSQL e visualizar os resultados em um aplicativo Streamlit.
Conta com framework Pre-Commit para gerenciar e manter hooks de pre-commit, garantindo códigos que seguem padrões estabelecidos pela comunidade Python.
- Pré-requisitos
- Arquitetura do Projeto
- Configuração
- Acesso aos Serviços
- Executando Meltano no Terminal
- Encerrando os Serviços
- Solução de Problemas
- Contribuição
- Docker
- Docker Compose
- Make (opcional, mas recomendado)
JSONL (JSON String) como formato de armazenamento de dados para este projeto porque é mais flexível e funciona bem em pipelines modernos. Aqui estão os principais motivos:
- Estrutura simples: Você pode armazenar dados locais complexos, como cálculos e objetos, sem "corromper" os dados.
- Processamento em FLuxo: Cada linha é um objeto JSON estático, adequado para processar grandes conjuntos de dados sem carregar o objeto inteiro na memória.
- Compatibilidade: É bem suportado por ferramentas ETL e APIs modernas, facilitando a integração.
- Depuração fácil*: Um erro de linha única não afeta todos os dados, facilitando a identificação e a correção de problemas
-
Clone o repositório:
git@github.com:Robso-creator/elt_meltano_ind.git cd elt_meltano_ind
-
Crie o arquivo
.env
na raiz do projeto com o seguinte conteúdo:POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres
-
Verifique a versão do Docker para garantir que ele está instalado corretamente:
docker --version
-
Construa a imagem do Streamlit e inicie os contêineres:
make build # Construir a imagem do Streamlit make up # Iniciar os contêineres
-
Airflow: Acesse localhost:8080 para gerenciar e executar os DAGs que extraem dados das fontes e os carregam no banco de dados.
-
Streamlit: Acesse localhost:8501 para visualizar o aplicativo Streamlit com os resultados processados.
Para executar o Meltano diretamente no terminal, utilize os seguintes comandos:
make enter-local
SOURCE=postgres YEAR=2025 MONTH=01 DAY=03 meltano run extract-postgres-to-jsonl
SOURCE=csv YEAR=2025 MONTH=01 DAY=03 meltano run extract-csv-to-jsonl
YEAR=2025 MONTH=01 DAY=03 meltano run load-jsonl-to-postgres
Para encerrar os contêineres, utilize o comando abaixo:
make down # Encerrar os contêineres
make rm # Remover containers parados e volumes
Caso não consiga acessar a página do Airflow e no make logs-webserver
encontre o erro Already running on PID <PID>
, siga os passos abaixo:
-
Pare os contêineres:
make down
-
Verifique se há algum processo usando a porta 8080:
sudo lsof -i tcp:8080
-
Se houver um processo, mate-o:
sudo kill -9 PID
-
Remova o arquivo de PID do Airflow:
sudo rm -rf meltano/orchestrate/airflow-webserver.pid
-
Reinicie os contêineres:
make up
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.