Skip to content

Latest commit

 

History

History
148 lines (101 loc) · 4.97 KB

README-pt.md

File metadata and controls

148 lines (101 loc) · 4.97 KB

ELT com Airflow, Meltano, Streamlit e PostgreSQL

Don't speak Portuguese? Click here to view this page in English

pre-commit makefile docker postgresql

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.


Tabela de Conteúdos


Pré-requisitos

  • Docker
  • Docker Compose
  • Make (opcional, mas recomendado)

Arquitetura do Projeto

img

Por que o JSONL foi escolhido?

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:

  1. Estrutura simples: Você pode armazenar dados locais complexos, como cálculos e objetos, sem "corromper" os dados.
  2. 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.
  3. Compatibilidade: É bem suportado por ferramentas ETL e APIs modernas, facilitando a integração.
  4. 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

Configuração

  1. Clone o repositório:

    git@github.com:Robso-creator/elt_meltano_ind.git
    cd elt_meltano_ind
  2. Crie o arquivo .env na raiz do projeto com o seguinte conteúdo:

    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
  3. Verifique a versão do Docker para garantir que ele está instalado corretamente:

    docker --version
  4. Construa a imagem do Streamlit e inicie os contêineres:

    make build  # Construir a imagem do Streamlit
    make up     # Iniciar os contêineres

Acesso aos Serviços

  • Airflow: Acesse localhost:8080 para gerenciar e executar os DAGs que extraem dados das fontes e os carregam no banco de dados.

    • Em DAGS, ative o DAG dag_elt_meltano_pipeline e espere a execução.

    • Se desejar rodar para uma data específica, aperte o botão de play no canto direito da tela da DAG. img.png

    • Depois escolha a data que deseja rodar e aperte ´Trigger´. img.png

    • Se a algumas das tarefas de extração falhar, a de carregamento não executará. img.png

  • Streamlit: Acesse localhost:8501 para visualizar o aplicativo Streamlit com os resultados processados. img.png

Executando Meltano no Terminal

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

Encerrando os Serviços

Para encerrar os contêineres, utilize o comando abaixo:

make down   # Encerrar os contêineres
make rm     # Remover containers parados e volumes

Solução de Problemas

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:

  1. Pare os contêineres:

    make down
  2. Verifique se há algum processo usando a porta 8080:

    sudo lsof -i tcp:8080
  3. Se houver um processo, mate-o:

    sudo kill -9 PID
  4. Remova o arquivo de PID do Airflow:

    sudo rm -rf meltano/orchestrate/airflow-webserver.pid
  5. Reinicie os contêineres:

    make up

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.