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>' ]
[ COMMENT = '<string_literal>' ]
[ DEFAULT_TARGET = <default_target> ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
Parameters¶
nameString 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.
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 arquivodbt_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'For more information about creating a Git repository object in Snowflake that connects a Git repository to a workspace for dbt Projects on Snowflake, see Criação de espaço de trabalho conectado ao repositório Git. For more information about creating and managing a Git repository object and stage without using a workspace, see Uso de um repositório Git no Snowflake and 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 formatoversion$<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,liveou o especificador para qualquer versão existente no formatoversion$<num>. 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
DEFAULT_TARGET = default_targetEspecifica o perfil utilizado para compilação e execuções subsequentes (por exemplo,
prod) do objeto de projeto dbt. Você pode substituir este parâmetro usando o comando EXECUTE DBT PROJECT comARGS = --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 depsserá 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 de um espaço de trabalho que contém vários projetos de dbt
Criação de um objeto de projeto dbt de uma área de preparação de repositório Git no Snowflake¶
Create a dbt project object named sales_dbt_model from dbt project files in a Git repository stage. This example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project’s dbt_project.yml file is saved in the repository root. The command also sets the default target used when executing dbt commands and specifies the external access integrations required by the project.
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¶
Create a dbt project object named sw_region_sales_model from a subdirectory inside a Git repository stage that contains multiple dbt projects. The example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project’s dbt_project.yml file is saved in the sw_region_dbt_project subdirectory of the sales_dbt_projects_parent directory.
Este exemplo também define as seguintes propriedades:
Destino de execução padrão (por exemplo,
prodoudev) usado pelos comandos dbt executados no Snowflake.Integrações de acesso externo que o projeto dbt tem permissão para usar para extrair dependências remotas do hub de pacotes dbt ou do 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'
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.
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';