Colaboração com Repositório de Queries
Este guia explica como colaborar com o repositório queries-rj-iplanrio da Prefeitura do Rio de Janeiro, seguindo as melhores práticas de dbt e garantindo que seus modelos sejam materializados corretamente.✅ Pré-requisitos
- Ambiente dbt configurado
- Acesso ao projeto BigQuery
rj-iplanrio-dev
- Permissões de colaborador no repositório GitHub
- Conhecimento básico de Git e GitHub
🔧 Configuração Inicial
1. Clonar o Repositório
2. Configurar Ambiente de Desenvolvimento
Se tiver um ambiente virtual, ative-o:IMPORTANTE: Seus modelos serão materializados no projeto BigQuery
rj-iplanrio-dev
.
Nunca use o ambiente de produção para desenvolvimento.🚀 Boas Práticas de Desenvolvimento
1. Estrutura de Branch
2. Nomenclatura de Modelos
Siga o padrão estabelecido:3. Uso Correto de source
e ref
🧪 Desenvolvimento e Testes
1. Executar Modelos Específicos
Use--select
para testar apenas seus modelos:
É recomendável que você faça seus testes com o comando
dbt build
, pois além de rodar os modelos, ele também executa seus testes.📝 Workflow de Desenvolvimento
1. Desenvolvimento Local
-
Crie os arquivos de metadados do seu projeto
- Para cada novo projeto, crie dois arquivos em
models/raw/secretaria/seu_projeto/
:_raw_seu_projeto__sources.yml
_raw_seu_projeto__schema.yml
- Esses arquivos são importantes para registrar as fontes de dados e a documentação dos modelos.
_raw_seu_projeto__sources.yml
:Exemplo de_raw_seu_projeto__schema.yml
: - Para cada novo projeto, crie dois arquivos em
-
Configure sua pasta no
dbt_project.yml
Após criar os arquivos de metadados, você precisa adicionar a configuração da sua pasta no arquivodbt_project.yml
do projeto. Isso permite que o DBT reconheça e processe seus modelos corretamente. Exemplo de configuração nodbt_project.yml
:Explicação das configurações:+tags
: Define tags para organização e filtros (ex: daily, custos, sme).- As tags
daily
eweekly
são especialmente importantes: elas determinam a frequência com que o Prefect irá executar seu modelo automaticamente. Se você marcar um modelo com a tagdaily
, o Prefect irá agendá-lo para rodar todos os dias; se marcar comweekly
, ele será executado semanalmente.
- As tags
+materialized
: Define como o modelo será materializado (table, view, incremental).+schema
: Define o dataset específico onde o modelo será criado.+project
: Define o projeto específico do BigQuery em que o modelo será criado.
-
Escreva ou edite seu modelo
- Crie um novo arquivo
.sql
emmodels/
ou edite um modelo existente. - Exemplo:
models/raw/secretaria/seu_projeto/seu_modelo.sql
- Lembre-se de usar
ref()
para dependências internas esource()
para dados externos.
- Crie um novo arquivo
-
Ative o ambiente virtual
-
Execute o modelo para testar
-
Verifique o resultado no BigQuery
- Acesse o console do BigQuery.
- Navegue até o projeto
rj-iplanrio-dev
e verifique se o dataset correspondente foi criado. - Confirme se a tabela ou view do seu modelo foi criada e os dados estão corretos.
2. Commit e Push
3. Pull Request
- Criar PR no GitHub
- Descrição: Explicar mudanças e impacto
- Review: Solicitar revisão da equipe IplanRio
- Testes: Garantir que todos os testes passem
- Merge: Após aprovação, merge para
main
Workflow de CI/CD Automático
Quando você cria um Pull Request, o sistema de CI/CD é executado automaticamente para validar e testar seus modelos: 🔍 CI (Continuous Integration) - Executado em cada PR:- Validação: Executa
dbt debug
para verificar configurações - Dependências: Instala dependências com
dbt deps
- Build Incremental: Executa apenas os modelos modificados usando
dbt build -s 'state:modified+'
- Ambiente Isolado: Cria um dataset único no BigQuery
rj-iplanrio-dev
para cada execução do workflow - Testes Automáticos: Executa todos os testes definidos nos seus modelos
O workflow de CI cria um ambiente isolado para cada PR, garantindo que seus testes não interfiram com outros desenvolvedores e que os modelos sejam validados em um ambiente limpo.
- Deploy Completo: Executa todos os modelos com
dbt build
- Ambiente de Produção: Utiliza o target
pr_prod
(Produção) - Manifest Atualizado: Atualiza o
manifest.json
no Google Cloud Storage para futuras execuções incrementais
IMPORTANTE: O workflow de CI testa seus modelos em um dataset temporário no
rj-iplanrio-dev
.
Apenas após o merge na branch master é que os modelos são executados em produção.- Acompanhe o progresso dos testes na aba “Actions” do seu PR
- Verifique os logs para identificar possíveis erros
- Aguarde a aprovação automática antes de solicitar review da equipe
- Se houver falhas, corrija os problemas e faça novo commit - o CI será executado novamente