Este repositório contém todos os modelos DBT (Data Build Tool) da IplanRio, responsáveis pela transformação e modelagem de dados em nosso Data Lake.
Se você deseja contribuir com o projeto, acesse nossa guia de contribuição.
O DBT (Data Build Tool) é uma ferramenta de transformação de dados que permite aos analistas e engenheiros de dados transformar dados em seus warehouses de forma eficiente e confiável. No contexto da IplanRio, utilizamos o DBT para:
- Transformação de dados: Limpeza, padronização e enriquecimento de dados brutos
- Modelagem dimensional: Criação de tabelas de fatos e dimensões para análise
- Testes: Validação de qualidade e integridade dos dados
- Versionamento: Controle de versão para todas as transformações de dados
O projeto segue as seguintes práticas de organização do DBT:
queries-rj-iplanrio/
├── 📁 models/ # Modelos DBT (transformações de dados)
│ ├── 📁 raw/ # Modelos de dados brutos (staging)
│ ├── 📁 core/ # Modelos centrais de negócio (dimensões e fatos)
│ └── 📁 mart/ # Data marts para análise específica
├── 📁 macros/ # Macros reutilizáveis
│ ├── 📁 dbt_internal/ # Macros internos do projeto
│ └── 📁 string/ # Macros para manipulação de strings
├── 📁 .github/ # Configurações do GitHub
│ ├── 📁 workflows/ # Workflows de CI/CD
│ │ ├── dbt-ci.yml # CI para Pull Requests
│ │ ├── dbt-cd.yml # CD para produção
│ │ ├── dbt-drop-dev-schemas.yml # Limpeza de schemas de desenvolvimento
│ │ └── sqlfmt.yml # Formatação automática de SQL
├── 📁 analyses/ # Análises ad-hoc (consultas exploratórias)
├── 📁 seeds/ # Dados .csv
├── 📁 snapshots/ # Modelos de snapshot
├── 📁 tests/ # Testes customizados de qualidade
├── 📁 .cursor/ # Configurações do Cursor IDE
├── dbt_project.yml # Configuração principal do projeto DBT
├── profiles.yml # Configurações de conexão com banco de dados
├── packages.yml # Dependências de pacotes DBT
├── package-lock.yml # Versões fixas dos pacotes
├── dbt-requirements.txt # Dependências Python para DBT
├── pyproject.toml # Configuração do projeto Python
├── uv.lock # Lock file do gerenciador de pacotes UV
├── .pre-commit-config.yaml # Hooks de pré-commit para qualidade de código
├── .dbtignore # Arquivos ignorados pelo DBT
├── .gitignore # Arquivos ignorados pelo Git
├── .python-version # Versão do Python para o projeto
├── recce.yml # Configuração da ferramenta Recce
└── README.md # Este arquivo de documentação
dbt_project.yml
: Configurações do projeto, modelos, testes e variáveisprofiles.yml
: Conexões com BigQuery e outros bancos de dadospackages.yml
: Dependências de pacotes DBT externosdbt-requirements.txt
: Dependências Python necessárias para execução
models/raw/
: Modelos que fazem staging dos dados brutosmodels/core/
: Modelos centrais com lógica de negóciomodels/mart/
: Data marts para análises específicas
dbt-ci.yml
: Executa testes e validações em Pull Requestsdbt-cd.yml
: Deploy automático para produção após mergedbt-drop-dev-schemas.yml
: Limpeza automática de schemas de desenvolvimentosqlfmt.yml
: Formatação automática de código SQL
- Recce: Ferramenta para comparação de resultados entre diferentes execuções
- Pre-commit: Hooks para validação automática de código antes do commit
# Instalar dependências
dbt deps
# Executar todos os modelos
dbt run
# Executar testes
dbt test
# Executar testes + modelos
dbt build
# Executar apenas alguns modelos
dbt run --select 'seu_modelo'
dbt build --select 'seu_modelo'
# Debug da configuração
dbt debug