Criação e gerenciamento de políticas de ciclo de vida de armazenamento

Nota

As políticas de ciclo de vida de armazenamento não estão disponíveis atualmente em regiões governamentais.

As seções a seguir explicam como criar, recriar e gerenciar políticas de ciclo de vida de armazenamento em suas tabelas.

Criar uma política de ciclo de vida de armazenamento

Para criar uma política de ciclo de vida de armazenamento, use o comando CREATE STORAGE LIFECYCLE POLICY.

Ao criar uma política de ciclo de vida de armazenamento, você pode escolher um nível de arquivamento e, opcionalmente, definir um período de arquivamento (em dias). Se você definir um período de arquivamento, o Snowflake moverá as linhas da tabela que correspondem à expressão da política para um nível de armazenamento de custo inferior pelo número de dias especificado antes de expirar as linhas. O Snowflake também permite o rastreamento de alterações em todas as tabelas às quais você anexar a política.

Por exemplo:

CREATE STORAGE LIFECYCLE POLICY my_slp
  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 = 90;
Copy

Nota

Para considerações ao trabalhar com tabelas que têm políticas de armazenamento de arquivamento, consulte Políticas de armazenamento de arquivos.

Prática recomendada: use conversões de data para expressões baseadas em tempo

Para melhorar o desempenho e garantir a execução consistente da política, converta os carimbos de data/hora em datas em suas expressões de política ao comparar valores de tempo.

Por exemplo, considere esta expressão de política:

event_time < DATEADD(DAY, -400, CURRENT_TIMESTAMP())
Copy

Esta comparação inclui o componente de tempo do carimbo de data/hora, o que pode causar comportamento inconsistente. Quando os dados são inseridos em ordem cronológica por event_time, o tempo de execução da política afeta quantas linhas são excluídas de cada arquivo.

Para evitar esse problema, converta os carimbos de data/hora em datas na sua expressão:

TO_DATE(event_time) < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
Copy

Essa abordagem garante a execução consistente da política, independentemente da hora do dia.

Recriar uma política de ciclo de vida de armazenamento

Este recurso estende o comando GET_DDL para recriar uma política de ciclo de vida de armazenamento específica. Você pode fazer isso se quiser alterar o nível de arquivamento de uma política.

Retorne o DDL para recriar uma política de ciclo de vida de armazenamento chamada my_slp.

SELECT GET_DDL('policy','my_slp');
Copy

Saída:

---------------------------------------------------------------------+
                      GET_DDL('POLICY','SLP')                        |
---------------------------------------------------------------------+
create or replace storage lifecycle policy SLP 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_FOR_DAYS = 365                                             |
;                                                                    |
---------------------------------------------------------------------+

Gerenciar políticas de ciclo de vida de armazenamento em tabelas

Use as seguintes opções para gerenciar os anexos de políticas de ciclo de vida de armazenamento.

Anexar uma política a uma tabela

Você pode gerenciar várias tabelas com uma única política de ciclo de vida de armazenamento. Anexe a política ao criar ou alterar a tabela.

Use CREATE TABLE para criar uma tabela e anexar a política a uma nova tabela usando as colunas especificadas.

Nota

  • Você deve ter os privilégios necessários para aplicar a política. Para obter mais informações sobre os privilégios necessários, consulte Storage lifecycle policy privileges.

  • Uma tabela pode ter apenas uma política de ciclo de vida de armazenamento anexada.

  • O número de colunas deve corresponder à contagem de argumentos na assinatura da função de política, e os dados da coluna devem ser compatíveis com os tipos de argumentos.

  • As políticas associadas não serão afetadas se você renomear as colunas da tabela. O Snowflake associa políticas às tabelas usando os IDs de coluna.

  • Para avaliar e aplicar expressões da política de ciclo de vida de armazenamento, o Snowflake ignora as políticas de governança em uma tabela de maneira interna e temporária.

CREATE TABLE my_table
  ...
  WITH STORAGE LIFECYCLE POLICY my_slp ON (col1);
Copy

Use ALTER TABLE para anexar a política a uma tabela existente usando as colunas especificadas.

ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
  ON (col1);
Copy

Aplicar uma política como uma operação única

Se você precisar expirar ou arquivar dados históricos apenas uma vez (uma operação única), recomendamos a seguinte abordagem:

  1. Crie e anexe uma política de ciclo de vida de armazenamento à sua tabela.

  2. Aguarde a execução da política e arquive ou expire os dados. Monitore a função de tabela INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY para confirmar se o processo foi concluído.

  3. Para evitar cobranças recorrentes, remova a política de ciclo de vida de armazenamento da tabela. As políticas de ciclo de vida de armazenamento incorrem em custos por execução.

Essa abordagem garante que você pague apenas por uma única execução, em vez de cobranças diárias contínuas por uma política que já processou todos os dados elegíveis. Para obter mais informações sobre custos, consulte Cobrança para políticas de ciclo de vida de armazenamento.

Remover uma política de uma tabela

Use ALTER TABLE para remover uma política de ciclo de vida de armazenamento de uma tabela.

ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Copy
  • Isso remove todas as execuções futuras da política para esta tabela.

  • As execuções de política em andamento podem ser concluídas antes de serem descartadas da tabela.

  • Para descartar uma política de ciclo de vida de armazenamento, você deve ter o privilégio OWNERSHIP na tabela à qual a política está anexada.