Explicação dos objetos de projeto dbt

Um PROJECT DBT é um objeto no nível do esquema que contém arquivos de origem com controle de versão para o projeto dbt no Snowflake. Você pode conectar um objeto de projeto dbt a um espaço de trabalho, ou criar e gerenciar o objeto sem depender de um espaço de trabalho.

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.

Para mais informações sobre controle de versão, consulte Controle de versão para objetos e arquivos de projeto dbt.

Controle de versão para objetos e arquivos de projeto dbt

O Snowflake mantém as versões dos objetos de projeto dbt e seus arquivos de projeto correspondentes. Você pode usar esse controle de versão para rastrear e gerenciar alterações durante todo o ciclo de vida de desenvolvimento e implantação de dados. O Snowflake identifica as versões do objeto de projeto dbt na área de preparação do projeto dbt, conforme mostrado no exemplo a seguir.

snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id

version_id pode ser qualquer um dos seguintes identificadores:

  • VERSION$<num>: especifica um identificador de versão no formato VERSION$<num>, em que <num> is a positive integer, for example, VERSION$1.

    O número da versão começa em 1, quando você cria um objeto de projeto dbt, e é incrementado por um a cada nova versão do objeto de projeto dbt.

    O Snowflake incrementa o identificador de versão quando você executa as seguintes tarefas:

    • Redeploy dbt project de um espaço de trabalho (executa o comando ALTER com a opção ADD VERSION).

    • Atualize o projeto usando o comando ALTER DBT PROJECT.

    • Executar o comando snow dbt deploy da Snow CLI com a opção --force.

    O Snowflake redefine o identificador de versão para 1 e remove todos os aliases de versão quando você executa os seguintes comandos:

    • O comando CREATE DBT PROJECT em SQL com a opção OR REPLACE.

  • LAST: indica a versão mais recente do objeto de projeto dbt.

  • FIRST: indica a versão mais antiga do objeto de projeto dbt.

  • version_name_alias: indica um alias de nome de versão personalizado que você criou para uma versão específica do objeto de projeto dbt usando o comando ALTER DBT PROJECT com a opção ADD VERSION. Um alias de nome de versão sempre mapeia para um identificador de versão específico, como VERSION$3.

Os arquivos do projeto armazenados na área de preparação do projeto dbt são organizados por versão, sendo que cada versão tem o próprio subdiretório. Por exemplo, um objeto de projeto dbt chamado my_dbt_project_object com o identificador de versão VERSION$3 e o arquivo do projeto dbt chamado dbt_project.yml pode ser referenciado conforme mostrado no seguinte exemplo:

snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml