创建和管理存储生命周期策略¶
以下章节介绍如何在表上创建、重新创建和管理存储生命周期策略。
创建存储生命周期策略¶
要创建存储生命周期策略,请使用 CREATE STORAGE LIFECYCLE POLICY 命令。
创建存储生命周期策略时,可以选择 归档层,并可选择设置归档期(以天为单位)。如果设置归档期,Snowflake 会将与策略表达式匹配的表行移动到成本较低的存储层,并在行过期之前保留指定的天数。Snowflake 还对您附加策略的任何表启用变更跟踪。
例如:
备注
有关使用具有归档存储策略的表时的注意事项,请参阅 归档存储策略。
最佳实践:对基于时间的表达式使用日期转换¶
为了提高性能并确保一致的策略执行,请在比较时间值时将时间戳转换为策略表达式中的日期。
例如,考虑以下策略表达式:
此比较包括时间戳的时间部分,这可能会导致不一致的行为。当数据按 event_time 的时间顺序插入时,策略的执行时间会影响从每个文件中删除的行数。
要避免这种不一致的行为,请将时间戳转换为表达式中的日期:
无论一天中的什么时间,这种方法都可以提供一致的策略执行。
重新创建存储生命周期策略¶
此功能扩展了用于重新创建指定存储生命周期策略的 GET_DDL 命令。如果要更改策略的归档层,可以执行此操作。
要重新创建名为 my_slp 的存储生命周期策略,请返回 DDL,如以下示例所示:
输出:
管理表的存储生命周期策略¶
使用以下选项管理存储生命周期策略附件。
将策略附加到表中¶
您可以使用一个存储生命周期策略管理多个表。创建或更改表时附加策略。
要创建表并使用指定的列将策略附加到新表中,请使用 CREATE TABLE,如以下示例所示。
备注
您必须具有应用该策略所需的权限。有关所需权限的信息,请参阅 Storage lifecycle policy privileges。
一个表只能附加一个存储生命周期策略。
列数必须与策略函数签名中的实参数匹配,并且列数据必须与实参类型兼容。
如果重命名表列,则关联的策略不受影响。Snowflake 使用列 IDs 将策略与表关联。
为了评估和应用存储生命周期策略表达式,Snowflake 会在内部暂时绕过表上的任何治理策略。
要使用指定列将策略附加到现有表,请使用 ALTER TABLE,如以下示例所示:
将策略作为一次性操作应用¶
如果您只需要使历史数据过期或归档(一次性操作),我们建议采用以下操作过程:
创建存储生命周期策略,然后将其附加到表中。
等待策略完成执行,然后归档或使数据过期。
监控 INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY 表函数,以确认该过程是否完成。
为防止重复收费,从表中 移除存储生命周期策略。
存储生命周期策略 每次执行 都会产生成本。
这种方法可确保您只需为一次执行付费,而不必为已经处理完所有符合条件数据的策略承担每日持续费用。有关成本的更多信息,请参阅 存储生命周期策略计费。
从表中移除策略¶
要从表中移除存储生命周期策略,请使用 ALTER TABLE,如以下示例所示:
此命令将移除此表的所有未来策略执行。
运行策略执行可能会在从表中删除之前完成。
要删除存储生命周期策略,您必须对策略附加到的表具有 OWNERSHIP 权限。