CREATE DBT PROJECT

Creates a new dbt project object or replaces an existing dbt project object. Running CREATE DBT PROJECT with the OR REPLACE option resets the version identifier to version$1 and removes all version name aliases. For more information, see Versions for dbt project objects and files.

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>' ]
  [ COMMENT = '<string_literal>' ]
  [ DBT_VERSION = <version_number> ]
  [ DEFAULT_TARGET = <default_target> ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]

Parâmetros

name

String that specifies the name of the dbt project object. Must be unique within the schema in which the dbt project object is created.

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.

FROM 'source_location'

Required. A string that specifies the location of the dbt project source files.

The source location must point to a directory that contains a single dbt_project.yml file at its root. Although workspaces support working with repositories that contain multiple dbt projects, you must select a specific project directory when deploying a dbt project object.

The dbt project object source files can be in any one of the following locations:

  • 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'

    The version specifier is required and can be last (as shown in the previous example), first, or the specifier for any existing version in the form version$<num>. For more information, see Versions for dbt project objects and files.

  • 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.

    The version specifier is required and can be last, first, live, or the specifier for any existing version in the form version$<num>. For more information, see Versions for dbt project objects and files.

COMMENT = 'string_literal'

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

Padrão: sem valor

DBT_VERSION = version_number

Specifies a version for the dbt project object.

If no value is specified, the system defaults to the version set by the DEFAULT_DBT_VERSION account parameter. For more information, see Definir a versão padrão no nível da conta.

DEFAULT_TARGET = default_target

Specifies the profile used for compilation and subsequent executions (for example, prod) of the dbt project object. You can override this parameter by using the EXECUTE DBT PROJECT command with ARGS = '--target <other_target>'.

Padrão: sem valor

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

Especifica a integração de acesso externo utilizada para conceder permissões para obter dependências remotas do hub de pacotes dbt ou do GitHub. Quando declarado em um objeto, dbt deps será executado automaticamente durante a implantação. Para obter mais informações, consulte Compreensão das dependências de projetos dbt no Snowflake.

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

A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.

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. Os dois não podem ser usados 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. Este exemplo faz referência à ramificação main de uma área de preparação de repositório Git chamada sales_dbt_git_stage no Snowflake, em que o arquivo dbt_project.yml do projeto é salvo na raiz do repositório. O comando também define o destino padrão usado ao executar os comandos dbt e especifica as integrações de acesso externo exigidas pelo projeto.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
  COMMENT = 'Generates sales data models.';

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

Crie um objeto de projeto dbt chamado sw_region_sales_model de um subdiretório dentro de uma área de preparação de repositório Git que contém vários projetos dbt. O exemplo faz referência à ramificação main de uma área de preparação de repositório Git chamada sales_dbt_git_stage no Snowflake, em que o arquivo dbt_project.yml é salvo no subdiretório sw_region_dbt_project do diretório sales_dbt_projects_parent.

Este exemplo também define as seguintes propriedades:

  • Versão do dbt

  • Destino de execução padrão (por exemplo, prod ou dev) usado pelos comandos dbt executados no Snowflake.

  • External access integrations the dbt project object is permitted to use to pull remote dependencies from dbt package hub or Github.

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'
  DBT_VERSION = '1.10.15'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
  COMMENT = 'Generates data models for SW sales region.';

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

Create a new dbt project object named sales_model_nw_region from version$2 of the existing sales_model dbt project object.

Este exemplo também define um destino de execução padrão usando DEFAULT_TARGET e especifica as integrações de acesso externo permitidas usando EXTERNAL_ACCESS_INTEGRATIONS.

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_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = (my_ext_integration_1, my_ext_integration_2)
  COMMENT = 'Generates data models for the NW sales region.';

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 contendo vários diretórios de projetos dbt. «My dbt Project Workspace» no banco de dados pessoal do usuário. Isso é útil quando o espaço de trabalho tem vários subprojetos e você deseja criar um objeto de projeto dbt de um subdiretório específico. Os espaços de trabalho diferenciam maiúsculas de minúsculas e podem incluir caracteres especiais, portanto recomendamos colocar o nome do espaço de trabalho entre aspas duplas.

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

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