Criação e gerenciamento de políticas de ciclo de vida de armazenamento¶
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 uma camada de arquivamento e 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;
Nota
Para considerações ao trabalhar com tabelas que têm políticas de armazenamento para arquivamentos, 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())
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 comportamento inconsistente, converta os carimbos de data/hora em datas na expressão:
event_time < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
Esse método garante a execução consistente da política, seja qual for a 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.
Para recriar uma política de ciclo de vida de armazenamento chamada my_slp, retorne o DDL, conforme mostrado no exemplo a seguir:
SELECT GET_DDL('policy','my_slp');
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.
Para criar uma tabela e anexar a política a uma nova tabela usando as colunas especificadas, use CREATE TABLE conforme mostrado no exemplo a seguir.
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 Privilégios da política de ciclo de vida de armazenamento.
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);
Para anexar a política a uma tabela existente usando as colunas especificadas, use ALTER TABLE conforme mostrado no exemplo a seguir:
ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
ON (col1);
Aplicar uma política como uma operação única¶
Se você precisar expirar ou arquivar dados históricos apenas uma vez, como uma operação única, recomendamos o seguinte procedimento:
Crie e anexe uma política de ciclo de vida de armazenamento à sua tabela.
Aguarde a execução da política e depois 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.
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.
Esse método garante que você pague apenas por uma única execução, em vez das 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¶
Para remover uma política de ciclo de vida de armazenamento de uma tabela, use ALTER TABLE conforme mostrado no seguinte seguir:
ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Esse comando remove todas as execuções futuras da política para essa 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.