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>' ]
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>' ]
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 poruser$
.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 |
---|---|
|
|
|
Qualquer mensagem de exceção retornada pela execução do projeto dbt. Se o projeto dbt for executado com sucesso, a string |
|
A saída padrão retornada pela execução do projeto dbt. |
|
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 |
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
Comando de teste explícito com destino e modelos especificados
Comando de execução explícito com modelos downstream especificados
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';
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';
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';
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';
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';