CREATE STORAGE LIFECYCLE POLICY¶
Cria uma nova política de ciclo de vida de armazenamento no esquema atual ou especificado, ou substitui uma política existente. A política executa uma expressão com base em argumentos que você especifica para determinar quais linhas expiram na tabela à qual a política está anexada. Os argumentos na política fazem referência às colunas em suas tabelas.
Depois que você criar uma política, use o comando ALTER TABLE para adicionar a política a uma tabela.
- Consulte também:
ALTER STORAGE LIFECYCLE POLICY, DESCRIBE STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY, SHOW STORAGE LIFECYCLE POLICIES
Sintaxe¶
CREATE [ OR REPLACE ] STORAGE LIFECYCLE POLICY [ IF NOT EXISTS ] <name>
AS ( <arg_name> <arg_type> [ , ... ] )
RETURNS BOOLEAN -> <body>
[ ARCHIVE_TIER = { COOL | COLD } ]
[ ARCHIVE_FOR_DAYS = <number_of_days> ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Parâmetros obrigatórios¶
nameCadeia de caracteres que especifica o identificador da política de ciclo de vida de armazenamento. Esse identificador deve ser exclusivo para o esquema.
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.
AS ( arg_name arg_type [ , ... ] )A assinatura da política. Você deve incluir pelo menos um argumento na assinatura.
Uma assinatura especifica um conjunto de atributos que devem ser considerados para determinar se a linha está pronta para expiração. Os valores dos atributos são provenientes do objeto de banco de dados (tabela).
RETURNS BOOLEAN -> bodyUma política de ciclo de vida de armazenamento deve ser avaliada como verdadeira ou falsa. Um usuário que consulta uma tabela protegida por uma política de ciclo de vida de armazenamento vê as linhas na saída com base em como
bodyfoi escrito.bodyA expressão SQL que o Snowflake usa para determinar quais linhas expirar.
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.
Parâmetros opcionais¶
ARCHIVE_TIER = { COOL | COLD }Especifica o tipo de camada de armazenamento a ser usado para arquivar linhas. Depois de definir o ARCHIVE_TIER para uma política, você não poderá modificá-lo. Para obter mais informações, consulte Camadas de armazenamento de arquivo.
Se você não especificar esse parâmetro, a política será de expiração, que exclui as linhas sem arquivá-las.
COOLexige que você defina um período de arquivamento (ARCHIVE_FOR_DAYS) de, no mínimo, 90 dias para permitir o arquivamento.COLDexige que você defina um período de arquivamento (ARCHIVE_FOR_DAYS) de, no mínimo, 180 dias para permitir o arquivamento.
Padrão: sem valor
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'Especifica um comentário para a política de ciclo de vida de armazenamento.
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.
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 |
|---|---|---|
Esquema |
Nenhum |
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¶
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.
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.
Se você especificar OR REPLACE e a política for anexada a objetos, o comando falhará.
Não é possível usar
OR REPLACEeIF NOT EXISTSjuntos nesse comando.Se você quiser substituir uma política de ciclo de vida de armazenamento 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.
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.
Não é possível alterar a assinatura da política se a política está anexada a uma tabela. Se você precisar mudar a assinatura, use o comando DROP STORAGE LIFECYCLE POLICY e crie uma nova política.
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¶
A política de ciclo de vida a seguir move os dados das linhas que correspondem a contas fechadas e que têm mais de 60 dias no armazenamento de arquivos (camada COOL).
CREATE STORAGE LIFECYCLE POLICY example_policy
AS (event_ts TIMESTAMP, account_id NUMBER)
RETURNS BOOLEAN ->
event_ts < DATEADD(DAY, -60, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
)
ARCHIVE_TIER = COOL
ARCHIVE_FOR_DAYS = 180;