ALTER STORAGE LIFECYCLE POLICY¶
修改现有 存储生命周期策略 的属性。
注意
存储生命周期策略的更改可能会对所有关联的表产生重大影响。使用 ACCOUNT_USAGE 中的 QUERY_HISTORY 视图来定期审核策略变更。有关更多信息,请参阅 QUERY_HISTORY 视图。
- 另请参阅:
CREATE STORAGE LIFECYCLE POLICY、DESCRIBE STORAGE LIFECYCLE POLICY、DROP STORAGE LIFECYCLE POLICY、SHOW STORAGE LIFECYCLE POLICIES
语法¶
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> SET
BODY -> <expression_on_arg_name>
| ARCHIVE_TIER = { COOL | COLD }
| ARCHIVE_FOR_DAYS = <number_of_days>
| COMMENT = '<string_literal>'
| TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> UNSET
ARCHIVE_FOR_DAYS
| COMMENT
| TAG <tag_name> [ , <tag_name> ... ]
参数¶
name指定要更改的策略的标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
RENAME TO new_name指定策略的新标识符;对于架构来说必须唯一。
有关更多信息,请参阅 标识符要求。
可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定
new_name值,该值分别以db_name.schema_name.object_name或schema_name.object_name的形式包含新数据库和/或架构名称。备注
目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。
除非 对象所有者(即拥有对象 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。
重命名对象时,引用该对象的其他对象必须使用新名称进行更新。
SET ...指定要为策略设置的一个或多个属性:
BODY -> expression_on_arg_name确定要过期的行的 SQL 表达式。
要转换数据,您可以使用内置函数,例如 条件表达式函数 或 用户定义的函数 (UDFs)。
备注
目前,存储生命周期策略主体中仅支持 SQL 和 JavaScript UDFs。
ARCHIVE_TIER = { COOL | COLD }指定要转换过期策略的存储层,其中 ARCHIVE_FOR_DAYS 未设置到归档策略中。
COOL要求您设置 90 天或更长时间的归档期 (ARCHIVE_FOR_DAYS)。COLD要求您设置 180 天或更长时间的归档期 (ARCHIVE_FOR_DAYS)。
ARCHIVE_FOR_DAYS = number_of_days指定在归档存储中保留符合策略表达式的行的天数。如果已设置,Snowflake 会根据您为 ARCHIVE_TIER 选择的值将数据移动到归档存储中。如果未设置,Snowflake 会使表中的行过期,而不会将数据归档。
值:
ARCHIVE_TIER = COOL:
90-2147483647ARCHIVE_TIER = COLD:
180-2147483647
默认值:未设置
COMMENT = 'string_literal'为策略添加注释或覆盖现有注释。
默认:无值
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 Tag quotas。
UNSET ...指定要为策略取消设置的属性,这会将属性重置为其默认值:
ARCHIVE_FOR_DAYSCOMMENTTAG tag_name [ , tag_name ... ]
要使用单个 ALTER 语句取消设置多个属性或参数,请使用逗号分隔每个属性或参数。
取消设置属性或参数时,只指定属性或参数名称(除非上述语法表明您应该指定值)。指定值会返回错误。
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
OWNERSHIP |
存储生命周期策略 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
如果您想要更新现有的策略,并需要查看该策略的当前定义,请调用 GET_DDL 函数或运行 DESCRIBE STORAGE LIFECYCLE POLICY 命令。
您不能使用此命令更改策略签名。要更改签名,请使用 DROP STORAGE LIFECYCLE POLICY 命令,然后创建新策略。
为策略设置 ARCHIVE_TIER 后,您无法对其进行更改。例如,您不能使用此命令将策略的 ARCHIVE_TIER 从 COOL 更改为 COLD。
如果为策略取消设置 ARCHIVE_FOR_DAYS,存储层不会更改。如果稍后为策略重新启用归档存储,则无法修改存储层。
在策略主体中包含一个或多个 子查询 可能会导致错误。如果可能,限制子查询的数量,限制 JOIN 操作的数量,并简化 WHERE 子句条件。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
以下示例将存储生命周期策略更新为在 30 天后使已关闭的账户过期。
ALTER STORAGE LIFECYCLE POLICY expire_storage_for_closed_accounts
SET BODY ->
event_ts < DATEADD(DAY, -30, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
);