CREATE DBT PROJECT

Cria um nov objeto de projeto dbt ou substitui um projeto dbt existente. Executar CREATE DBT PROJECT com a opção OR REPLACE redefine o identificador de versão como version$1 e remove todos os aliases de nomes de versões. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

Consulte também:

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

Sintaxe

CREATE [ OR REPLACE ] DBT PROJECT [ IF NOT EXISTS ] <name>
  [ FROM '<source_location>' ]
  [ DEFAULT_ARGS = '<string_literal>' ]
  [ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros obrigatórios

name

String que especifica o identificador (ou seja, o nome) do objeto de projeto dbt no Snowflake. Deve ser exclusivo do esquema no qual o projeto dbt é criado.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

Parâmetros opcionais

FROM 'source_location'

Uma string que especifica o local no Snowflake dos arquivos de origem para o objeto de projeto dbt. Este pode ser um diretório pai que contém vários projetos dbt, ou um subdiretório específico que contém um projeto dbt e arquivo dbt_project.yml.

Se o local especificado não contiver um arquivo dbt_project.yml, o comando EXECUTE DBT PROJECT deve usar o parâmetro PROJECT_ROOT para especificar o caminho do subdiretório para um arquivo dbt_project.yml.

Se nenhum valor for especificado, o Snowflake criará um projeto de dbt vazio.

Os arquivos de origem do projeto dbt podem estar em qualquer um dos seguintes locais:

  • Uma área de preparação de repositórios Git, por exemplo:

    '@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'

    Para obter mais informações sobre a criação de um objeto de repositório Git no Snowflake que conecta um repositório Git a um espaço de trabalho para dbt Projects on Snowflake, consulte Criação de espaço de trabalho conectado ao repositório Git. Para obter mais informações sobre como criar e gerenciar um objeto e uma área de preparação do repositório Git sem usar um espaço de trabalho, consulte Uso de um repositório Git no Snowflake e CREATE GIT REPOSITORY.

  • Uma área de preparação de projetos dbt existente, por exemplo:

    'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'

    O especificador de versão é obrigatório e pode ser last (como mostrado no exemplo anterior), first, ou o especificador de qualquer versão existente no formato version$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

  • Uma área de preparação interna nomeada, por exemplo:

    '@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'

    Não há suporte para áreas de preparação internas de usuários e áreas de preparação de tabelas.

  • Um espaço de trabalho para dbt no Snowflake, por exemplo:

    'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'

    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 especificador de versão é obrigatório e pode ser last, first, live ou o especificador para qualquer versão existente no formato version$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

Padrão: sem valor

DEFAULT_ARGS = 'string_literal'

Uma string que especifica o comando dbt padrão e as opções de linha de comando para usar se EXECUTE DBT PROJECT não especificar nenhum comando.

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

DEFAULT_VERSION = { FIRST | LAST | VERSION$num }

Especifica a versão padrão do objeto de projeto dbt que EXECUTE DBT PROJECT irá usar. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt. Se nenhum valor for especificado, EXECUTE DBT PROJECT usará LAST. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

Padrão: sem valor

COMMENT = 'string_literal'

Especifica um comentário para o objeto de projeto dbt.

Padrão: sem valor

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

CREATE DBT PROJECT

Esquema

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.

Notas de uso

  • As cláusulas OR REPLACE e IF NOT EXISTS são mutuamente exclusivas. Elas não podem ser usadas na mesma instrução.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Criação de um objeto de projeto dbt de uma área de preparação de repositório Git no Snowflake

Criação de um objeto de projeto dbt chamado sales_dbt_model de arquivos de projeto dbt em uma área de preparação de repositório Git. O comando especifica a ramificação main de uma área de preparação de repositório Git chamada sales_dbt_git_stage no Snowflake, onde o dbt_project.yml é salvo na raiz do repositório.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  COMMENT = 'generates sales data models';
Copy

Criação de um objeto de projeto dbt a partir de um subdiretório dentro de uma área de preparação de repositório Git no Snowflake

Criação de um objeto de projeto dbt chamado sw_region_dbt_project de uma área de preparação de repositório Git que contém vários projetos de dbt. O comando especifica a ramificação main de uma área de preparação de repositório Git chamado sales_dbt_git_stage no Snowflake, onde o dbt_project.yml é salvo no subdiretório sw_region_dbt_project do diretório sales_dbt_projects_parent.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sw_region_sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_projects_parent/sw_region_dbt_project'
  COMMENT = 'generates data models for sw sales region';
Copy

Criação de um objeto de projeto dbt a partir de uma versão específica de um objeto de projeto dbt existente

Crie um novo objeto de projeto dbt chamado sales_nw_dbt_model_combined_bookings da version$2 da área de preparação de objeto dbt sales_dbt_projects. O parâmetro DEFAULT_ARGS especifica a opção de linha de comando --select para que apenas modelos com a tag nw_region sejam executados com EXECUTE DBT PROJECT.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_nw_region
  FROM 'snow://dbt/sales_db.dbt_projects_schema.sales_model/versions/version$2'
  DEFAULT_ARGS = '--select "tag:nw_region"'
  COMMENT = 'generates data models for the NW sales region';
Copy

Criação de um objeto de projeto dbt de um espaço de trabalho que contém vários projetos de dbt

Crie um novo objeto de projeto dbt chamado sales_model_from_workspace da versão ativa de um espaço de trabalho para dbt Projects on Snowflake. Isso é útil principalmente para criar um objeto de projeto dbt a partir de um espaço de trabalho pai que contém vários subdiretórios do projeto dbt. 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.

-- Create a dbt project object from a workspace named "My dbt Project Workspace" in the user's personal database.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live'

-- Execute the dbt project, specifying a subdirectory path for a dbt project within the workspace

EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  PROJECT_ROOT = 'project2'
  ARGS = 'run --target prod';
Copy