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>' , ... ] ) ]
Copy

Parâmetros obrigatórios

name

Cadeia 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 -> body

Uma 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 body foi escrito.

body

A 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.

  • COOL exige que você defina um período de arquivamento (ARCHIVE_FOR_DAYS) de, no mínimo, 90 dias para permitir o arquivamento.

  • COLD exige 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_days

Especifica 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 - 2147483647

  • ARCHIVE_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

CREATE STORAGE LIFECYCLE POLICY

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 REPLACE e IF NOT EXISTS juntos 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;
Copy