Welcome to your new dbt project!
Try running the following commands:
- dbt run
- dbt test
- Learn more about dbt in the docs
- Check out Discourse for commonly asked questions and answers
- Join the dbt community to learn from other analytics engineers
- Find dbt events near you
- Check out the blog for the latest news on dbt's development and best practices
Tema: dbt Created by: Renato Cruz
O dbt (Data Build Tool) é uma ferramenta open-source que permite que você transforme, modele e orquestre seus dados de forma eficiente e escalável. Neste guia, vamos explorar um projeto dbt simples passo a passo, perfeito para iniciantes que desejam começar a trabalhar com dados.
- Python instalado;
- Command Line Tools (bash ou powershell)
- Conhecimento básico em Git, Github ou GitLab
- Crie projetos na Google Cloud. Neste exemplo vamos chamá-los de
xebia-data-preprodexebia-data-prod.
O console do BigQuery deve ser parecido com isto, para ambos os projetos, onde platform é o conjunto de dados com os dados que queremos transformar.
- Crie uma conta de serviço na GCP
Para conectar o dbt Cloud a ambos os projetos, precisamos fornecer uma conta de serviço que tenha acesso a eles.
Primeiro, criaremos a conta de serviço em nosso projeto xebia-data-preprod :
A seguir, geraremos uma chave JSON para ser usada no dbt Cloud. Para isso, devemos clicar na conta de serviço criada, navegar até a aba Chaves e criar a chave JSON. Um arquivo será gerado e baixado para o seu computador.
Por fim, copiaremos o e-mail da conta de serviço criada e forneceremos acesso ao outro projeto ( xebia-data-prod ).
- Crie o projeto dbt Cloud
Do lado do dbt Cloud, vamos começar criando nosso novo projeto. Vamos chamá-lo de xebia-data-platform .
A princípio não definiremos a conexão com o BigQuery, pois teríamos que atualizá-lo posteriormente para utilizar uma Variável de Ambiente , gerando retrabalho. Basta clicar no botão ' Pular' por enquanto.
Depois de fazer isso, a próxima etapa (Configurar seu ambiente) será automaticamente ignorada.
Finalmente, configure seu repositório com sua plataforma git preferida.
- Configure os ambientes no dbt Cloud
A seguir, criaremos três ambientes: dev , preprod e prod . Dev é um ambiente de desenvolvimento, enquanto preprod e prod são ambientes de implantação.
O resultado final deverá ficar assim:
- Configure as variáveis de ambiente no dbt Cloud
A próxima etapa é criar uma variável de ambiente para cada ambiente. Isso nos permitirá usar o projeto xebia-data-preprod GCP no ambiente preprod dbt Cloud e o projeto xebia-data-prod GCP no ambiente prod dbt Cloud.
Para criar uma variável de ambiente é bastante simples: na página Ambientes , selecione Variáveis de ambiente e clique em ' Adicionar variável' .
Chamaremos nossa variável DBT_GCP_PROJECT e definiremos os valores da seguinte forma:
Como temos apenas dois projetos GCP, usaremos o mesmo projeto para preprod e dev , porém é possível implementar a mesma lógica com três ou mais projetos.
Uma vez definida a variável, podemos configurar a conexão com o BigQuery, usando a variável recém-criada para alternar entre projetos dependendo do ambiente em uso.
- Configure os detalhes da conexão no DBT cloud
Para definir a conexão com o BigQuery, primeiro devemos navegar até as Configurações da conta. Lá podemos encontrar todos os nossos projetos. Clicaremos no projeto que acabamos de criar e depois em ' Configurar Conexão' .
A próxima etapa é definir o tipo de conexão como BigQuery e importar o arquivo JSON que geramos da conta de serviço. Feito isso, todas as demais informações deverão ser preenchidas.
Por fim, substituiremos o ID do projeto que foi preenchido automaticamente pela variável que criamos:
{{ env_var("DBT_GCP_PROJECT") }}Como etapa adicional, configuraremos as Credenciais de Desenvolvimento . Para fazer isso, navegue até a página ' Credenciais' , selecione o projeto e escolha um nome de ' Conjunto de dados' exclusivo para você - dbt_NAME (nome do usuário).
A partir de agora, seu projeto dbt já deverá estar funcionando com dois projetos diferentes do GCP. Tudo o que resta fazer é definir o pipeline de implantação para cada ambiente individual.
- Configure seu pipeline de implementação para cada ambiente
Editar: você pode seguir as etapas sobre como configurar seu pipeline de implantação neste novo artigo (CI/CD em dbt Cloud com GitHub Actions: Automatizando a implantação de vários ambientes)
Como o objetivo deste artigo não é sobre as melhores práticas de configuração da implantação, não nos aprofundaremos nisso. Algumas dicas gerais:
- Defina um Job para executar o ambiente de
preprod**quando uma solicitação pull for criada, no dbt Cloud. - Siga este link de
prod**para configurar o ambiente para ser executado assim que o PR for mesclado. - Defina um Job para executar o ambiente de
prod**diariamente, no dbt Cloud.
Após construir os modelos para cada ambiente, e também no IDE Develop, você deverá ter dois projetos parecidos com as imagens abaixo:
- Conclusão
1.Crie um Job para construir o ambiente diariamente
A primeira etapa na configuração de nosso pipeline de CI/CD no dbt Cloud é criar um Job que seja executado diariamente. Dessa forma, garantimos que estamos nos desenvolvendo com as transformações mais atualizadas, sem comprometer muitos recursos.
Para criar o Job, navegaremos até a guia Jobs, no item Deploy da barra superior, e clicaremos no botão Create Job .
Nomearemos o trabalho como Build preprod e selecionaremos o ambiente de preprod .
Manteremos as configurações de execução como padrão, apenas com o comando dbt build. Você pode editar isso dependendo de seus requisitos.
Para os Triggers , definiremos o Schedule para ser executado diariamente pela manhã.
O primeiro passo da nossa configuração está feito, basta Salvar o Job e ele começará a rodar diariamente.
- Crie um
Jobpara construir os modelos modificados no ambiente depreprodem cada PR
A seguir, criaremos um Job que é acionado sempre que um Pull Request é aberto. Este Job deve executar os testes e validações necessários para garantir que as alterações no código estejam prontas para serem mescladas no branch principal. A tarefa criará apenas os modelos modificados e seus modelos downstream dependentes.
Chamaremos o trabalho de “ CI preprod” e selecionaremos o ambiente de preprod .
Nas configurações de execução, definimos o seguinte:
- Defina “Adiar para o estado de execução anterior?” para o
preprod build. Isso garante que nosso trabalho de CI não será acionado caso haja problemas com o ambiente. - Defina os comandos para
dbt build --select state:modified+
Executamos este comando para construir apenas os modelos modificados e seus modelos downstream dependentes, que são identificados pelo símbolo '+' no final do comando.
Você pode estar se perguntando por que seguimos esse processo de construção de CI/CD, em vez de construir o projeto inteiro. Existem alguns motivos principais:
✅ Construir os modelos modificados e modelos downstream relacionados é o ideal. Apenas os modelos necessários são executados para detectar quaisquer problemas causados pelas modificações.
❌ Construir os modelos modificados com modelos upstream e downstream relacionados executando “dbt build --select +state:modified+” (observe o '+' extra antes de state ) pode ser uma opção, mas preferimos atualizar o ambiente de preprod diariamente para que possamos não exigem dados novos em cada execução de CI.
❌ Construir todo o projeto é muito pesado, um desperdício de recursos e provavelmente demorado.
❌ Construir apenas modelos alterados é insuficiente, pois não identifica problemas nos modelos posteriores.
Por fim, para definir o gatilho de Integração Contínua (CI) , tudo o que precisamos fazer é selecionar a opção Executar em Pull Request? caixa de seleção.
Observação: para habilitar o gatilho de CI, você deve conectar seu projeto dbt Cloud ao GitHub, GitLab ou Azure DevOps.
Depois que o gatilho for definido, salve o trabalho e crie uma solicitação pull para verificar se o trabalho de CI está funcionando. Cada Pull Request novo ou atualizado deve acionar uma execução de Job no ambiente dbt Cloud.
- Crie um
Jobpara construir o ambiente deprod
A seguir, definiremos o Job para executar o ambiente de **prod . O objetivo é ter um Job que execute o ambiente de produção por um Schedule e que seja executado assim que um Pull Request for mesclado.
Por último, não há opções nativas do dbt, então teremos que definir uma ação do GitHub para executar o trabalho usando a API do dbt Cloud. O mesmo pode ser feito usando Azure DevOps ou GitLab, mas vamos nos concentrar no GitHub neste artigo.
Primeiramente, criaremos um novo Job, nomeá-lo Build prod e selecionaremos prod como ambiente.
Manteremos as configurações de execução como padrão, apenas com o comando dbt build .
Para o gatilho agendamento, também configuraremos o Schedule para ser executado diariamente pela manhã.
A configuração do trabalho do lado do dbt está concluída, agora a configuração começa a se tornar mais desafiadora. Definiremos um GitHub Actions para chamar a API dbt Cloud assim que o PR for mesclado.
- Configure um
Gihub Actions
Para configurar o GitHub Action, primeiro precisaremos de algumas informações do dbt: Account Id, Job Id, Project Id e API Key .
Para os dois primeiros, navegaremos até a guia API na configuração do trabalho. Lá, podemos encontrar o ID da conta e o ID do trabalho . Devemos salvar esses valores para serem usados posteriormente.
Na mesma página, procuraremos o URL. Lá podemos encontrar o ID do projeto .
Por fim, navegaremos até a página de acesso à API na opção Configurações da conta . Lá podemos encontrar o valor da chave API .
Com todos os quatro parâmetros em mãos, podemos acessar nosso repositório GitHub para configurar a ação.
Assim que o repositório estiver aberto, navegaremos para Configurações > Segredos e variáveis > Ações. Criaremos um New repository secret , nomeando-o DBT_API_KEY e definindo-o como o valor da chave API que copiamos do dbt.
Depois de definido, navegaremos até a guia Variáveis e definiremos os outros três valores como Variáveis. Como esses valores não são confidenciais, não há necessidade de defini-los como segredos.
DBT_ACCOUNT_IDDBT_JOB_IDDBT_PROJECT_IDAgora, faltam apenas duas etapas para finalizar nossa configuração: Adicionar um script python que chamará a API e definir a ação GitHub que executará o script. Faremos ambos no IDE de desenvolvimento do dbt .
Depois de aberto, primeiro criaremos uma nova pasta chamada python . Lá podemos centralizar todos os nossos scripts python. Dentro desta pasta, criaremos um arquivo chamado run_and_monitor_dbt_job.py . Copie o conteúdo desta gist para o novo arquivo. Este script tem tudo que você precisa para chamar a API dbt Cloud, as entradas necessárias são alimentadas na próxima etapa, como variáveis de ambiente.
O resultado final deve ficar assim.
A próxima etapa é finalmente definir a ação do GitHub.
Primeiro criaremos uma pasta chamada .github , com uma subpasta chamada workflows e um arquivo chamado dbt_run_on_merge.yml . Copie o código a seguir e cole-o no novo arquivo. Como está conectado com segredos e variáveis , você não precisa editá-lo.
name: run dbt Cloud job on push
# This filter says only run this job when there is a push to the main branch
# This works off the assumption that you've restricted this branch to only all PRs to push to the default branch
# Update the name to match the name of your default branch
on:
push:
branches:
- 'main'
jobs:
# the job calls the dbt Cloud API to run a job
run_dbt_cloud_job:
name: Run dbt Cloud Job
runs-on: ubuntu-latest
# Set the environment variables needed for the run
env:
DBT_ACCOUNT_ID: ${{ vars.DBT_ACCOUNT_ID }}
DBT_PROJECT_ID: ${{ vars.DBT_PROJECT_ID }}
DBT_PR_JOB_ID: ${{ vars.DBT_JOB_ID }}
DBT_API_KEY: ${{ secrets.DBT_API_KEY }}
DBT_JOB_CAUSE: 'GitHub Pipeline CI Job'
DBT_JOB_BRANCH: ${{ github.ref_name }}
steps:
- uses: "actions/checkout@v3"
- uses: "actions/setup-python@v4"
with:
python-version: "3.9"
- name: Run dbt Cloud job
run: "python python/run_and_monitor_dbt_job.py"Por fim, é assim que seu projeto deve ficar, com as novas pastas e arquivos.
Agora só falta criar um Pull Request com nossas alterações recém-feitas, mesclar e esperar a mágica acontecer!
Você pode verificar se a execução foi bem-sucedida no GitHub, na guia Actions , ou no dbt, na guia Jobs
GitHub Actions
Job de DBT
[textos]
Managing Multiple BigQuery Projects With One dbt Cloud Project
Loading and transforming data into BigQuery using dbt
[vídeos]
Getting Started With dbt | Set Up dbt Cloud for Google BigQuery
- Python instalado;
- Command Line Tools (bash ou powershell)
- Conhecimento básico em Git, Github ou GitLab
- Crie uma pasta dedicada ao ambiente de projeto;
- Crie o ambiente virtual
python -m venv venvvirtualenv venv- Ative o ambiente virtual
source scripts/activatesource venv/bin/activate- Instale o dbt
pip install dbt-core dbt-bigquery- Verifique se a instalação foi bem sucedida
dbt –version- Inicie o dbt
dbt init NOME_DA_PASTAO projeto é construído logo após executar o comando acima e se parece com a imagem abaixo.
O arquivo [README.md](http://README.md) descreverá o propósito e o escopo geral do projeto. Já o arquivo dbt_project.yml irá gerenciar e operar as pastas e arquivos do projeto. A pasta Models conterá os exemplos de códigos e nossos novos códigos. Observe que cada arquivo SQL dentro de Models é um modelo dentro do projeto.
Obs. : Todo projeto dbt precisa de um arquivo dbt_project.yml - é assim que o dbt sabe que um diretório é um projeto dbt. Ele também contém informações importantes que informam ao dbt como operar em seu projeto.
- Crie um novo repositório
- No bash, inicialize o repositório do projeto
git init
git branch -M main
git add .
git commit -m "DESCREVA o COMMIT"
git remote add origin <https://PROJECT_GIT_REPO>
git push -u origin main
git checkout -b developmentAlém disso, deverá ser criado o arquivo profiles.yml na raiz do dbt instalado. O caminho deste local pode ser parecido com Windows (C:) > Users > SeuNome > .dbt.
Este arquivo irá receber as seguintes informações:
dbt_etl_v1: # this needs to match the profile in your dbt_project.yml file
target: test
outputs:
test:
type: bigquery # database type
method: service-account # authentication method
keyfile: # C:\Users\YourName\YourFolder\project_bigquery_service_account.json # project_bigquery_service_account.json
project: sonic-aria-366017 # project id
dataset: Staging # Replace this with dbt_you_name, e. g. dbt_bilbo
thereds: 1
timeout_seconds: 300
location: US
priority: interactive
dev:
type: bigquery # database type
method: service-account # authentication method
keyfile: C:\Users\YourName\YourFolder\project_bigquery_service_account.json # project_bigquery_service_account.json
project: # project id
dataset: Staging # Replace this with dbt_you_name, e. g. dbt_bilbo
thereds: 1
timeout_seconds: 300
location: US
priority: interactive
prod:
type: bigquery # database type
method: service-account # authentication method
keyfile: C:\Users\YourName\YourFolder\project_bigquery_service_account.json # project_bigquery_service_account.json
project: # project id
dataset: Staging # Replace this with dbt_you_name, e. g. dbt_bilbo
thereds: 1
timeout_seconds: 300
location: US
priority: interactivePara maiores informações sobre profiles.yml consultar links abaixos:
- Teste a conexão com o banco
dbt debug --connectionPara mais informações sobre conexão, consultar o link abaixo: About dbt debug command
- Modelos dbt devem ser do tipo
SQLe ficar dentro da pastaModels.
[textos]
Quickstart for dbt Cloud and BigQuery
[vídeos]
dbt (data build tool) Crash Course For Beginners (dbt Core) | Full Tutorial
Getting Started With dbt | Set Up dbt Cloud for Google BigQuery


































