CREATE TAG¶
创建新标签或替换系统中的现有标签。
该命令支持以下变体:
CREATE OR ALTER TAG:创建标签(若不存在)或更改现有标签。
语法¶
CREATE [ OR REPLACE ] TAG [ IF NOT EXISTS ] <name>
[ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
[ PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }
[ ON_CONFLICT = { '<string>' | ALLOWED_VALUES_SEQUENCE } ] ]
[ COMMENT = '<string_literal>' ]
变体语法¶
CREATE OR ALTER TAG¶
如果标签尚不存在,则创建一个新标签,或者将现有标签转换为语句中定义的标签。CREATE OR ALTER TAG 语句遵循 CREATE TAG 语句的语法规则,并具有与 ALTER TAG 语句相同的限制。
支持的更改包括 ALLOWED_VALUES 和 COMMENT 属性变更。
有关更多信息,请参阅 CREATE OR ALTER TAG 使用说明。
CREATE OR ALTER TAG <name>
[ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
[ COMMENT = '<string_literal>' ]
必填参数¶
name标签的标识符。使用 CREATE <object> 语句或 ALTER <object> 语句为 对象 分配标签字符串值。
标识符值必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如 "My object")。放在双引号内的标识符也区分大小写。
有关更多详细信息,请参阅 标识符要求。
可选参数¶
ALLOWED_VALUES 'val_1' [ , 'val_2' [ , ... ] ]指定使用对应的 CREATE <object> 或 ALTER <object> 命令在 对象 上设置标签时,可以分配给标签的可能字符串值的逗号分隔列表。
必须先于所有其他参数才能工作。
The maximum number of tag values in this list is 5,000.
如果将标签配置为自动传播到目标对象,则允许列表中值的顺序会影响冲突的解决方式。有关更多信息,请参阅 标签传播冲突。
默认值:NULL(允许所有字符串值,包括空字符串值,即
' ')。PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }-
指定标签将 自动 从源对象传播到目标对象。您可以将标签配置为在存在 对象依赖关系 和/或 数据移动 时进行传播。
ON_DEPENDENCY_AND_DATA_MOVEMENT存在对象依赖关系或数据移动时传播标签。
ON_DEPENDENCY存在对象依赖关系时传播标签,但存在数据移动时不传播。
ON_DATA_MOVEMENT存在数据移动时传播标签,但存在对象依赖关系时不传播。
ON_CONFLICT = { 'string' | ALLOWED_VALUES_SEQUENCE }-
指定 传播标签 的值之间存在冲突时会发生什么。
如果您未设置此参数且存在冲突,则标签的值将设置为字符串
CONFLICT。可能的值:
'string'存在冲突时,标签的值设置为指定的字符串。
ALLOWED_VALUES_SEQUENCE标签 ALLOWED_VALUES 属性中值的顺序决定了存在冲突时使用哪个值。例如,假设您使用以下语句创建了一个标签:
CREATE TAG my_tag ALLOWED_VALUES 'blue', 'red' PROPAGATE = ON_DEPENDENCY ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
如果存在冲突,则
my_tag的值将是blue,因为它在允许值列表中排在red前面。
默认值:将标签的值设置为
CONFLICT。 COMMENT = 'string_literal'指定标签的注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
CREATE TAG |
架构 |
|
OWNERSHIP |
标签 |
|
The USAGE privilege on the parent database and schema are required to perform operations on any object in a schema. Note that a role granted any privilege on a schema allows that role to resolve the schema. For example, a role granted CREATE privilege on a schema can create objects on that schema without also having USAGE granted on that schema.
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述。
有关标签 DDL 和权限的其他详细信息,请参阅 访问控制权限。
General usage notes¶
You must set the ALLOWED_VALUES parameter before all other parameters, such as COMMENT.
有关如何将标签与 Snowflake 对象关联的更多信息,请参阅 Object Tagging 简介。
有关标签 DDL 授权的更多信息,请参阅 所需权限。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
CREATE OR ALTER TAG 使用说明¶
When you use this command, all unspecified parameters are reset. For example, if you specify a new comment only, then the PROPAGATE parameter no longer enables tag propagation.
ALTER TAG 命令的所有限制均适用。
不支持设置或取消设置掩码策略。
示例¶
使用键 cost_center 创建标签。
CREATE TAG cost_center COMMENT = 'cost_center tag';
更新 cost_center 以包括新的允许值并取消设置注释:
CREATE OR ALTER TAG cost_center ALLOWED_VALUES 'finance', 'engineering', 'sales';
