Create and manage storage lifecycle policies¶
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.
When you create a storage lifecycle policy, you can choose an archive tier and optionally set an archival period in days. If you set an archival period, Snowflake moves table rows that match the policy expression into a lower-cost storage tier for the specified number of days before expiring the rows. Snowflake also enables change tracking on any tables that you attach the policy to.
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
For considerations when you work with tables that have archival storage policies, see 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.
To avoid this inconsistent behavior, convert timestamps to dates in your expression:
TO_DATE(event_time) < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
This method provides consistent policy execution regardless of the time of day.
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.
To recreate a storage lifecycle policy named my_slp, return the DDL, as shown in the following example:
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.
To create a table and attach the policy to a new table by using the specified columns, use CREATE TABLE, as shown in the following example.
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);
To attach the policy to an existing table by using the specified columns, use ALTER TABLE, as shown in the following example:
ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
ON (col1);
Aplicar uma política como uma operação única¶
If you only need to expire or archive historical data once, as a one-time operation, we recommend the following procedure:
Create, and then attach a storage lifecycle policy to your table.
Wait for the policy to execute, and then archive or expire the data.
Monitor the INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY table function to confirm the process is complete.
To prevent recurring charges, remove the storage lifecycle policy from the table.
Storage lifecycle policies incur cost per execution.
This method ensures that you only pay for a single execution instead of ongoing daily charges for a policy that has already processed all eligible data. For more information about cost, see Cobrança para políticas de ciclo de vida de armazenamento.
Remover uma política de uma tabela¶
To remove a storage lifecycle policy from a table, use ALTER TABLE, as shown in the following example:
ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
This command removes all future policy executions for this table.
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.