ALTER STORAGE LIFECYCLE POLICY¶
Modifica as propriedades de uma política de ciclo de vida de armazenamento existente.
Atenção
Alterações em uma política de ciclo de vida de armazenamento podem ter um impacto significativo em todas as tabelas associadas. Use a exibição QUERY_HISTORY no esquema ACCOUNT_USAGE para auditar as alterações de políticas regularmente. Para obter mais informações, consulte Exibição QUERY_HISTORY.
- Consulte também:
CREATE STORAGE LIFECYCLE POLICY, DESCRIBE STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY, SHOW STORAGE LIFECYCLE POLICIES
Sintaxe¶
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> SET
BODY -> <expression_on_arg_name>
| ARCHIVE_TIER = { COOL | COLD }
| ARCHIVE_FOR_DAYS = <number_of_days>
| COMMENT = '<string_literal>'
| TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> UNSET
ARCHIVE_FOR_DAYS
| COMMENT
| TAG <tag_name> [ , <tag_name> ... ]
Parâmetros¶
nameEspecifica o identificador da política a ser alterada.
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_nameEspecifica o novo identificador da política; deve ser exclusivo para o seu esquema.
Para obter mais informações, 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_nameque inclua o novo banco de dados e/ou nome do esquema no formuláriodb_name.schema_name.object_nameouschema_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.
SET ...Especifica uma ou mais propriedades a serem definidas para a política:
BODY -> expression_on_arg_nameExpressão SQL que determina as linhas que expirarão.
Para transformar os dados, você pode usar funções internas, como Funções de expressão condicional, ou funções definidas pelo usuário (UDFs).
Nota
Atualmente, apenas UDFs em SQL e JavaScript são permitidas no corpo de uma política de ciclo de vida de armazenamento.
ARCHIVE_TIER = { COOL | COLD }Especifica uma camada de armazenamento para converter uma política de expiração em que ARCHIVE_FOR_DAYS não está definida em uma política de arquivamento.
COOLexige que você defina um período de arquivamento (ARCHIVE_FOR_DAYS) de 90 dias ou mais.COLDexige que você defina um período de arquivamento (ARCHIVE_FOR_DAYS) de 180 dias ou mais.
ARCHIVE_FOR_DAYS = number_of_daysEspecifica por quantos dias as linhas que correspondem à expressão da política devem ser mantidas no armazenamento de arquivos. Se definido, o Snowflake moverá os dados para o armazenamento de arquivos de acordo com o valor selecionado para ARCHIVE_TIER. Se não for definido, o Snowflake vai expirar as linhas da tabela sem arquivar os dados.
Valores:
ARCHIVE_TIER = COOL:
90-2147483647ARCHIVE_TIER = COLD:
180-2147483647
Padrão: não definido
COMMENT = 'string_literal'Adiciona um comentário ou sobrescreve o comentário existente da política.
Padrão: sem valor
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]Especifica o nome da tag e o valor da cadeia de caracteres dela.
O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.
Para obter informações sobre como especificar tags em uma instrução, consulte Tag quotas.
UNSET ...Especifica as propriedades a serem removidas para a política, o que redefine as propriedades para os valores padrão:
ARCHIVE_FOR_DAYSCOMMENTTAG tag_name [ , tag_name ... ]
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¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
|---|---|---|
OWNERSHIP |
Política do ciclo de vida do armazenamento |
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. Observe que uma função com privilégio concedido em um esquema permite que essa função resolva o esquema. Por exemplo, uma função com privilégio CREATE concedido em um esquema pode criar objetos nesse esquema sem também ter USAGE concedido nesse 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¶
Se você quiser atualizar uma política existente e precisar ver a definição atual da política, chame a função GET_DDL ou execute o comando DESCRIBE STORAGE LIFECYCLE POLICY.
Você não pode alterar a assinatura da política com este comando. Para alterar a assinatura, use o comando DROP STORAGE LIFECYCLE POLICY e crie uma nova política.
Depois de definir o ARCHIVE_TIER para uma política, você não poderá alterá-lo. Por exemplo, você não pode usar este comando para alterar a ARCHIVE_TIER de uma política de COOL para COLD.
Se você remover ARCHIVE_FOR_DAYS de uma política, a camada de armazenamento não será alterada. Se você reativar posteriormente o armazenamento de arquivos da política, não poderá modificar a camada de armazenamento.
Incluir uma ou mais subconsultas no corpo da política pode causar erros. Quando possível, limite o número de subconsultas, limite o número de operações JOIN e simplifique as condições da cláusula WHERE.
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 a política do ciclo de vida do armazenamento para expirar contas encerradas após 30 dias.
ALTER STORAGE LIFECYCLE POLICY expire_storage_for_closed_accounts
SET BODY ->
event_ts < DATEADD(DAY, -30, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
);