Data Warehouse (DW) para armazenar e analisar dados de commodities, utilizando uma arquitetura moderna de ELT (Extract, Load and Transform).
Este projeto tem como objetivo criar um Data Warehouse (DW) para armazenar e analisar dados de commodities. Esses dados são extraídos da API do Yahoo Finance, carregados diretamente no banco de dados PostgreSQL e posteriormente são tratados pelo DBT Core. O dashboard é implementado em Streamlit e permite visualizar os dados das commodities armazenados no Data Warehouse, criando tabelas e gráficos interativos para análise dos dados.
A plataforma Render foi utilizada para subir um PostgreSQL Server na nuvem.
Task 01: Extrair os dados da API e carregar no banco de dados
O script extrair_carregar
é responsável por extrair os dados de commodities da API do Yahoo Finance e carregar diretamente no banco de dados PostgreSQL, criando uma tabela commodities
no banco de dados.
Task 02: Transformar os dados
O DBT Core é responsável pela limpeza e transformação dos dados. Após instalar o dbt-postgres
e configurar o arquivo profiles.yml
, o DBT se conecta ao banco de dados PostgreSQL para ter acesso as tabelas.
A pasta models
define as transformações dos dados usando SQL. As transformações foram divididas em três camadas: bronze, silver e gold.
A pasta seeds
é utilizada para carregar dados de movimentações das commodities a partir de arquivos CSV.
Para mais informações, acesse as pastas dbt_commodities/docs
onde contém toda a documentação do projeto DBT.
Task 03: Criar o dashboard
O script dashboard
é responsável por se conectar ao banco de dados PostgreSQL e criar o dashboard através da biblioteca Streamlit.
.
├── LICENSE
├── README.md
├── dbt_commodities
│ ├── docs
│ │ └── homepage.md
│ ├── models
│ │ ├── bronze
│ │ │ ├── bronze_commodities.sql
│ │ │ ├── bronze_movimentacao_commodities.sql
│ │ │ └── schema.yml
│ │ ├── gold
│ │ │ ├── gold_datamart_commodities.sql
│ │ │ └── schema.yml
│ │ ├── silver
│ │ │ ├── schema.yml
│ │ │ ├── silver_commodities.sql
│ │ │ └── silver_movimentacao_commodities.sql
│ │ └── sources.yml
│ ├── seeds
│ │ ├── movimentacao_commodities.csv
│ │ └── schema.yml
│ └── dbt_project.yml
├── exemplo.env
├── imagens
│ ├── fluxograma-dbt.jpeg
│ └── fluxograma-elt.jpeg
├── profiles.yml
├── pyproject.toml
├── requirements.txt
└── src
├── dashboard.py
├── database.py
└── extrair_carregar.py
Todas as etapas foram executadas no terminal bash
.
-
Clone o repositório localmente:
git clone https://github.com/ianlucasch/dw-de-commodities.git
-
Acesse a pasta do projeto:
cd dw-de-commodities
-
Instale o python versão 3.12.3:
pyenv install 3.12.3
-
Defina a versão local do python para 3.12.3:
pyenv local 3.12.3
-
Crie um ambiente virtual e ative-o:
python -m venv .venv source .venv/Scripts/activate
-
Instale todas as dependências do projeto:
pip install -r requirements.txt
-
Execute o script
extrair_carregar
:python src/extrair_carregar.py
-
Crie um novo projeto DBT:
dbt init dbt_commodities cd dbt_commodities
-
Configure a conexão com PostgreSQL:
Configure o arquivo
profiles.yml
com suas variáveis de ambiente para conectar o DBT ao PostgreSQL. O arquivo deve estar no diretório~/.dbt/
ou no diretório especificado pela variável de ambienteDBT_PROFILES_DIR
.Exemplo de
profiles.yml
:dbt_commodities: outputs: dev: dbname: <DB_NAME> host: <DB_HOST> pass: <DB_PASS> port: <DB_PORT> schema: public threads: 1 type: postgres user: <DB_USER> target: dev
-
Verifique o estado do projeto:
dbt debug
-
Execute os seeds do DBT:
dbt seed
-
Execute as transformações do DBT:
dbt run
-
Execute o script
dashboard
:streamlit run src/dashboard.py
Este README apresenta o passo a passo e as principais ferramentas utilizadas para a criação de um Data Warehouse de Commodities e transformação dos seus dados.