EXECUTE DBT PROJECT

Executa o objeto de projeto dbt especificado ou o projeto dbt em um espaço de trabalho do Snowflake usando o comando dbt e as opções de linha de comando especificadas.

Consulte também:

CREATE DBT PROJECT, ALTER DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS

Sintaxe

Executa o objeto de projeto dbt com o nome especificado.

EXECUTE DBT PROJECT [ IF EXISTS ] <name>
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Sintaxe da variante

Executa o projeto dbt que é salvo em um espaço de trabalho com o nome do espaço de trabalho especificado. O usuário proprietário do espaço de trabalho deve ser o usuário que executa esta variante de comando.

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Parâmetros obrigatórios

name

Ao executar um objeto de projeto dbt, especifica o nome do objeto de projeto dbt a ser executado.

Ao executar um projeto dbt usando a opção FROM WORKSPACE, especifica o nome do espaço de trabalho como dbt Projects on Snowflake. O nome do espaço de trabalho é sempre especificado em referência ao esquema public no banco de dados pessoal do usuário, que é indicado por user$.

Recomendamos colocar o nome do espaço de trabalho entre aspas duplas porque os nomes do espaço de trabalho diferenciam maiúsculas de minúsculas e podem conter caracteres especiais.

O exemplo a seguir mostra uma referência de nome de espaço de trabalho:

user$.public."My dbt Project Workspace"

Parâmetros opcionais

ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'

Especifica o comando dbt e opções de linha de comando compatíveis a serem executados quando o projeto dbt for executado. Essa é uma string literal que deve estar em conformidade com a sintaxe e os requisitos dos comandos da CLI do dbt.

Se nenhum valor for especificado, o projeto dbt será executado com o comando dbt e as opções de linha de comando especificados na definição do objeto de projeto dbt. Se você especificar as opções da CLI do dbt sem especificar um comando dbt, o comando run do dbt será executado por padrão.

Importante

Os argumentos que você especifica explicitamente em um comando EXECUTE DBT PROJECT substituem todos os DEFAULT_ARGS especificados na definição do PROJECT DBT.

Padrão: sem valor

PROJECT_ROOT = 'subdirectory_path'

Especifica o caminho do subdiretório para o arquivo dbt_project.yml dentro do objeto de projeto dbt ou espaço de trabalho.

Se nenhum valor for especificado, o projeto dbt será executado com o arquivo dbt_project.yml no diretório raiz do objeto de projeto dbt.

Se não existir um arquivo dbt_project.yml no diretório raiz ou no subdiretório PROJECT_ROOT, ocorrerá um erro.

Padrão: sem valor

Saída

Coluna

Descrição

0|1 Success

TRUE se o projeto dbt foi executado com sucesso. Caso contrário, será FALSE. Se o projeto dbt não for executado, uma mensagem de exceção será retornada.

EXCEPTION

Qualquer mensagem de exceção retornada pela execução do projeto dbt. Se o projeto dbt for executado com sucesso, a string None é retornada.

STDOUT

A saída padrão retornada pela execução do projeto dbt.

OUTPUT_ARCHIVE_URL

O URL do arquivo de saída que contém os arquivos de saída da execução do projeto dbt. Isso inclui arquivos de log e artefatos que o dbt grava no diretório /target. Para obter mais informações, consulte Sobre artefatos do dbt na documentação do dbt. Selecionar esse link resulta diretamente em um erro. No entanto, você pode usar esse URL para recuperar arquivos do projeto dbt e saída. Para obter mais informações, consulte Acesso programático a artefatos e logs do dbt.

Requisitos de controle de acesso

Uma função usada para executar esse comando SQL deve ter pelo menos um dos seguintes privilégios, no mínimo:

Privilégio

Objeto

USAGE

Projeto dbt

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Nota

O comando do dbt especificado em EXECUTE DBT PROJECT é executado com os privilégios da role especificada no bloco outputs do arquivo profiles.yml dos projetos. As operações são mais restritas apenas aos privilégios concedidos ao usuário Snowflake que chama EXECUTE DBT PROJECT. Tanto o usuário quanto a função especificados devem ter os privilégios necessários para usar o warehouse, realizar operações no database e no schema especificados no arquivo :file:`profiles.yml`do projeto e executar operações em qualquer outro objeto Snowflake especificado pelo modelo dbt.

Exemplos

Comando de execução padrão com destino e modelos especificados

Execução de um comando run do dbt visando o perfil dev no arquivo dbt_project.yml no diretório raiz do objeto de projeto dbt e selecionando três modelos do projeto DAG. Nenhum comando run está especificado explicitamente e é executado por padrão.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target dev';
Copy

Comando de teste explícito com destino e modelos especificados

Execução de um comando test do dbt direcionado ao perfil prod no arquivo dbt_project.yml no diretório raiz do objeto do projeto dbt e selecionando três modelos do projeto DAG.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target prod';
Copy

Comando de execução explícito com modelos downstream especificados

Execução de um comando run do dbt direcionado ao perfil dev no arquivo dbt_project.yml e selecionando todos os modelos downstream do modelo simple_customers usando a notação + do dbt.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = 'run --select simple_customers+ --target dev';
Copy

Comando de execução padrão especificando um projeto de subdiretório com execução padrão e DEFAULT ARGS da definição do objeto de projeto dbt

Para um objeto de projeto dbt contendo subdiretórios para três projetos dbt, execute um comando run do dbt para o projeto dbt no subdiretório project2. O comando de execução é assumido e o comando visa o perfil dev, que foi especificado usando DEFAULT ARGS na definição de DBT PROJECT.

EXECUTE DBT PROJECT my_database.my_schema.my_parent_dbt_project PROJECT_ROOT = 'project2';
Copy

Executar e testar projetos dbt usando tarefas de produção

Criação de uma tarefa para um destino de dbt de produção que executa um comando run do dbt em um intervalo de seis horas. Em seguida, crie uma tarefa que execute o comando test do dbt após cada tarefa run do dbt ser concluída. O comando EXECUTE DBT PROJECT para cada tarefa tem como alvo o perfil prod no arquivo dbt_project.yml no diretório raiz do objeto de projeto dbt.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';


CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';
Copy