Skip to main content

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:
Teste a conexão com o BigQuery:
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

  1. 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.
    Exemplo de _raw_seu_projeto__sources.yml:
    Exemplo de _raw_seu_projeto__schema.yml:
  2. Configure sua pasta no dbt_project.yml Após criar os arquivos de metadados, você precisa adicionar a configuração da sua pasta no arquivo dbt_project.yml do projeto. Isso permite que o DBT reconheça e processe seus modelos corretamente. Exemplo de configuração no dbt_project.yml:
    Explicação das configurações:
    • +tags: Define tags para organização e filtros (ex: daily, custos, sme).
      • As tags daily e weekly 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 tag daily, o Prefect irá agendá-lo para rodar todos os dias; se marcar com weekly, ele será executado semanalmente.
    • +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.
  3. Escreva ou edite seu modelo
    • Crie um novo arquivo .sql em models/ ou edite um modelo existente.
    • Exemplo: models/raw/secretaria/seu_projeto/seu_modelo.sql
    • Lembre-se de usar ref() para dependências internas e source() para dados externos.
  4. Ative o ambiente virtual
  5. Execute o modelo para testar
  6. 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

  1. Criar PR no GitHub
  2. Descrição: Explicar mudanças e impacto
  3. Review: Solicitar revisão da equipe IplanRio
  4. Testes: Garantir que todos os testes passem
  5. 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.
✅ CD (Continuous Deployment) - Executado após merge:
  • 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.
📊 Monitoramento do CI/CD:
  • 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

📚 Recursos Adicionais