ALTER DBT PROJECT

Modifica as propriedades de um existente objeto de projeto dbt.

Consulte também:

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

Sintaxe

ALTER DBT PROJECT [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER DBT PROJECT [ IF EXISTS ] ADD VERSION [ <version_name_alias> ]
  FROM '<source_location>'

ALTER DBT PROJECT [ IF EXISTS ] <name> SET
  [ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
  [ DEFAULT_ARGS = '<string_literal>' ]
  [ COMMENT = '<string_literal>' ]

ALTER DBT PROJECT [ IF EXISTS ] <name> UNSET
  [ DEFAULT_ARGS ]
  [ COMMENT ]
Copy

Parâmetros

name

Especifica o identificador do objeto de projeto dbt a ser alterado.

Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

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

RENAME TO new_name

Altera o nome do objeto de projeto dbt para new_name. O novo identificador deve ser único para o esquema.

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

Você pode mover o objeto para um banco de dados e/ou esquema diferente enquanto opcionalmente renomeia o objeto. Para isso, especifique um valor qualificado new_name que inclua o novo banco de dados e/ou nome do esquema no formulário db_name.schema_name.object_name ou schema_name.object_name, respectivamente.

Nota

  • O banco de dados e/ou esquema de destino já deve existir. Além disso, um objeto com o mesmo nome não pode já existir no banco de dados de destino; caso contrário, a instrução retorna um erro.

  • É proibido mover um objeto para um esquema de acesso gerenciado a menos que o proprietário do objeto (ou seja, a função que tem o privilégio OWNERSHIP sobre o objeto) também possua o esquema de destino.

Quando um objeto é renomeado, outros objetos que fazem referência a ele devem ser atualizados com o novo nome.

ADD VERSION [ version_name_alias ]

Cria uma nova versão aumentando incrementalmente o identificador da versão atual em um. Por exemplo, de version$2 para version$3.

O version name alias é um identificador personalizado opcional que corresponde ao identificador de versão recém-criado. O version name alias deve seguir Requisitos para identificadores.

FROM 'source_location'

Uma cadeia de caracteres que especifica o local dos arquivos de origem e a versão do projeto dbt a partir da qual a versão será criada.

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.

SET ...

Define uma ou mais propriedades ou parâmetros especificados para o objeto de projeto do dbt:

DEFAULT_VERSION = { FIRST | LAST | VERSION$num }

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

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.

COMMENT = 'string_literal'

Adiciona um comentário ou substitui um comentário existente para o objeto de projeto dbt.

UNSET ...

Desativa uma ou mais propriedades ou parâmetros especificados do objeto de projeto dbt para NULL ou nenhum valor:

  • DEFAULT_VERSION

  • DEFAULT_ARGS

  • COMMENT

Para desmarcar várias propriedades ou parâmetros com uma única instrução ALTER, separe cada propriedade ou parâmetro com uma vírgula.

Ao desmarcar uma propriedade ou parâmetro, especifique apenas o nome da propriedade ou parâmetro (a menos que a sintaxe acima indique que você deve especificar o valor). Especificar o valor retorna um erro.

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

Notas

OWNERSHIP

Projeto dbt

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

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

Notas de uso

  • 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

O exemplo a seguir atualiza um objeto de repositório Git no Snowflake para buscar o código mais recente do repositório Git e, em seguida, atualiza o conteúdo do objeto de projeto dbt adicionando uma nova versão:

-- Update the Git repository object to fetch the latest code

ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;

-- Add a new version to the dbt project object based on the updated Git repository object

ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
  ADD VERSION
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
Copy

O exemplo a seguir define os argumentos padrão de um objeto de projeto dbt a serem executados no destino prod, que substitui quaisquer argumentos padrão definidos anteriormente na definição do projeto:

ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
  SET DEFAULT_ARGS = 'run --target prod';
Copy