ALTER STORAGE LIFECYCLE POLICY

修改现有 存储生命周期策略 的属性。

注意

存储生命周期策略的更改可能会对所有关联的表产生重大影响。使用 ACCOUNT_USAGE 中的 QUERY_HISTORY 视图来定期审核策略变更。有关更多信息,请参阅 QUERY_HISTORY 视图

另请参阅:

CREATE STORAGE LIFECYCLE POLICYDESCRIBE STORAGE LIFECYCLE POLICYDROP STORAGE LIFECYCLE POLICYSHOW 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> ... ]
Copy

参数

name

指定要更改的策略的标识符。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

RENAME TO new_name

指定策略的新标识符;对于架构来说必须唯一。

有关更多信息,请参阅 标识符要求

可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定 new_name 值,该值分别以 db_name.schema_name.object_nameschema_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 - 2147483647

  • ARCHIVE_TIER = COLD: 180 - 2147483647

默认值:未设置

COMMENT = 'string_literal'

为策略添加注释或覆盖现有注释。

默认:无值

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 Tag quotas

UNSET ...

指定要为策略取消设置的属性,这会将属性重置为其默认值:

  • ARCHIVE_FOR_DAYS

  • COMMENT

  • TAG 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).

对架构中的对象进行操作至少需要父数据库的一项权限和父架构的一项权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 如果您想要更新现有的策略,并需要查看该策略的当前定义,请调用 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
    );
Copy
语言: 中文