ALTER AGGREGATION POLICY¶
替换 聚合策略 的现有规则或注释。还可以重新命名聚合策略。
- 另请参阅:
语法¶
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER AGGREGATION POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER AGGREGATION POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> UNSET COMMENT
参数¶
name
指定要更改的聚合策略的标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
RENAME TO new_name
指定聚合策略的新标识符;对于架构而言必须是唯一的。如果新标识符已用于其他聚合策略,则不能使用该标识符。
有关更多详细信息,请参阅 标识符要求。
可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定
new_name
值,该值分别以db_name.schema_name.object_name
或schema_name.object_name
的形式包含新数据库和/或架构名称。备注
目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。
除非 对象所有者(即对对象拥有 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。
SET ...
指定要为聚合策略设置的一个(或多个)属性:
BODY -> expression
SQL 表达式,确定聚合策略的限制。
要定义聚合策略的约束条件,请使用 SQL 表达式调用以下一个或多个内部函数:
- NO_AGGREGATION_CONSTRAINT
当策略主体从此函数返回值时,查询可以不受限制地从聚合约束的表或视图中返回数据。例如,当管理员需要从聚合约束的表或视图中获取未聚合的结果时,策略主体可以调用此函数。
在无实参的情况下调用 NO_AGGREGATION_CONSTRAINT。
- AGGREGATION_CONSTRAINT
当策略主体从此函数返回值时,查询必须聚合数据才能返回结果。使用 MIN_GROUP_SIZE 实参指定每个聚合组中必须包含多少个记录。
AGGREGATION_CONSTRAINT 函数的语法是:
AGGREGATION_CONSTRAINT ( MIN_GROUP_SIZE => <integer_expression> )
其中
integer_expression
解析为 策略的最小组大小。将
1
和0
作为实参传递给函数是有区别的。两者都需要聚合结果。传递
1
还要求每个聚合组至少包含一个来自聚合约束表的记录。因此,对于外部联接,来自聚合约束表的至少一个记录必须匹配来自未受保护表的记录。传递
0
允许查询返回完全由另一个表中的记录组成的组。因此,对于聚合约束表和未受保护表之间的外部联接,组可以由未受保护表中不匹配聚合约束表中任何记录的记录组成。
策略的主体不能引用用户定义的函数、表或视图。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 对象和列的标签配额。
COMMENT = 'string_literal'
为聚合策略添加注释或覆盖现有注释。
默认:无值
UNSET ...
指定要取消设置的一个或多个属性和/或参数,方法是将其重置为聚合策略的默认值:
TAG tag_name [ , tag_name ... ]
COMMENT
重置属性/参数时,请仅指定名称;指定属性的值将返回错误。
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
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 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述。
有关聚合策略 DDL 和权限的其他详细信息,请参阅 权限和命令。
使用说明¶
如果您要更新现有聚合策略,并且需要查看该策略的当前主体,请运行 DESCRIBE AGGREGATION POLICY 命令。您还可以使用 GET_DDL 函数获取聚合策略的完整定义,包括其主体。
禁止将聚合策略移至 托管访问架构 (使用 ALTER AGGREGATION POLICY ...RENAME TO 语法), 除非 聚合策略所有者(即,对聚合策略具有 OWNERSHIP 权限的角色)还拥有目标架构。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
更改聚合策略的 SQL 表达式,要求在任何情况下最小组大小为 2 行:
ALTER AGGREGATION POLICY my_policy SET BODY -> AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE=>2);
重命名聚合策略:
ALTER AGGREGATION POLICY my_policy RENAME TO agg_policy_table1;