to run dbt, set environment variables (in dbt file): set -o allexport; source ../dw_zero/.env; set +o allexport
Este projeto utiliza DBT (Data Build Tool) para gerenciar e transformar dados de um Data Warehouse (DW) de commodities. O objetivo é criar um pipeline de dados robusto e eficiente que trata e organiza os dados de commodities e suas movimentações para análise.
Os seeds são dados estáticos que são carregados no Data Warehouse a partir de arquivos CSV. Neste projeto, usamos seeds para carregar dados de movimentações de commodities.
Os models definem as transformações de dados usando SQL. Eles são divididos em duas camadas principais: staging e datamart.
A camada de staging é responsável por preparar e limpar os dados antes que eles sejam carregados nas tabelas finais de análise.
- stg__commodities.sql: Trata e formata os dados das commodities extraídos da API.
- stg__movimentacao.sql: Trata e formata os dados de movimentações das commodities.
A camada de datamart é onde os dados finais de análise são armazenados. Eles são baseados nos dados preparados pela camada de staging.
- dm_commodities.sql: Integra os dados tratados das commodities e das movimentações, criando um modelo de dados final para análise.
Os sources são as tabelas ou arquivos de origem dos dados que o DBT utiliza para realizar as transformações.
Os snapshots são utilizados para manter um histórico de como os dados mudam ao longo do tempo.
├── models
│ ├── staging
│ │ ├── stg__commodities.sql
│ │ └── stg__movimentacao.sql
│ └── datamart
│ └── dm_commodities.sql
├── seeds
│ └── movimentacao.csv
├── dbt_project.yml
└── README.md
- Python 3.7+
- DBT
-
Clonar o Repositório:
git clone <URL-do-Repositório> cd <Nome-do-Repositório>
-
Instalar o DBT:
pip install dbt-core dbt-postgres
Com Poetry
poetry install poetry shell
-
Configurar o DBT:
- Configure o arquivo
profiles.yml
para se conectar ao seu Data Warehouse. O arquivo deve estar no diretório~/.dbt/
ou no diretório especificado pela variável de ambienteDBT_PROFILES_DIR
.
Exemplo de
profiles.yml
:databasesales: target: dev outputs: dev: type: postgres host: <DB_HOST_PROD> user: <DB_USER_PROD> password: <DB_PASS_PROD> port: <DB_PORT_PROD> dbname: <DB_NAME_PROD> schema: <DB_SCHEMA_PROD> threads: 1
- Configure o arquivo
-
Executar os Seeds do DBT:
dbt seed
-
Executar as Transformações do DBT:
dbt run
-
Verificar o Estado do Projeto:
dbt test
Para contribuir com o projeto, por favor, faça um fork do repositório e envie um pull request com suas alterações.
Este model é responsável por tratar e formatar os dados das commodities extraídos da API. Ele faz a limpeza e transformação necessárias para preparar os dados para o datamart.
Este model é responsável por tratar e formatar os dados de movimentações das commodities. Ele faz a limpeza e transformação necessárias para preparar os dados para o datamart.
Este model integra os dados tratados das commodities e das movimentações, criando um modelo de dados final para análise. Ele calcula métricas e agrega os dados para facilitar a análise no dashboard.