Understand dbt project objects

A DBT PROJECT is a schema-level object that contains versioned source files for your dbt project in Snowflake. You can connect a dbt project object to a workspace, or you can create and manage the object independently of a workspace.

Normalmente, um objeto de projeto dbt é baseado em um diretório de projeto dbt que contém um arquivo dbt-project.yml. Esse é o padrão que o Snowflake usa quando você implanta (cria) um objeto de projeto dbt de um espaço de trabalho.

Os objetos de projeto dbt oferecem suporte ao controle de acesso baseado em função (RBAC). Você pode CREATE, ALTER e DROP objetos de projeto dbt da mesma forma que os outros objetos no nível do esquema do Snowflake. Você pode usar o comando EXECUTE DBT PROJECT de um warehouse Snowflake para executar comandos do dbt como test e run. Você também pode usar as tarefas para agendar a execução desses comandos.

Como os objetos de projeto dbt são atualizados

Os objetos de projeto dbt não são atualizados automaticamente conforme você edita o espaço de trabalho. É necessário implantar (ou seja, adicionar uma nova versão) sempre que quiser que o objeto capture as alterações de código.

Para gerar um pipeline de produção, recomendamos criar um objeto de projeto dbt e agendar a execução dele com uma tarefa. Como cada versão de objeto de projeto dbt é imutável, esse procedimento garante que nada mude entre as execuções, a menos que alguém adicione claramente uma nova versão.

Para atualizar os arquivos do projeto dbt, você deve adicionar uma nova versão em um espaço de trabalho, por exemplo:

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

Se o projeto dbt usa a tecnologia Git e você quer automatizar os testes e a implantação, execute o comando snow dbt deploy da Snow CLI com a opção --force, como mostrado no seguinte exemplo:

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

--force permite adicionar uma versão. Sem essa opção, equivale a executar CREATE DBT PROJECT em um objeto já criado, o que causa uma falha.

For more information about versioning, see Versões de objetos e arquivos de projeto dbt.