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 ]
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áriodb_name.schema_name.object_name
ouschema_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
paraversion$3
.O
version name alias
é um identificador personalizado opcional que corresponde ao identificador de versão recém-criado. Oversion 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 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
,live
ou 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.
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';
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';