ALTER ICEBERG TABLE ...CONVERT TO MANAGED¶
将使用外部 Iceberg 目录的 Apache Iceberg 表 转换为使用 Snowflake 作为目录(Snowflake 管理的 Iceberg 表)的表。
转换后的表支持读取和写入操作,Snowflake 处理表的所有生命周期维护,例如压缩。有关更多信息,请参阅 表转换前后。
语法¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> CONVERT TO MANAGED
[ BASE_LOCATION = '<directory_for_table_files>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
参数¶
table_name
要转换的表的标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
[ BASE_LOCATION = 'directory_for_table_files' ]
Snowflake 可在其中写入表的数据和元数据文件所在目录的路径。指定从表
EXTERNAL_VOLUME
的位置开始的相对路径。有关更多信息,请参阅 数据和元数据目录。如果原始 CREATE ICEBERG TABLE 语句不允许或不包含
BASE_LOCATION
,则必须为此属性指定一个值。转换表后,此目录无法更改。
STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }
为表指定存储序列化策略。如果在转换期间未指定,表将继承在架构、数据库或账户级别设置的值。如果在任何级别均未指定该值,表将使用默认值。
转换表格后不能变更此参数的值。
COMPATIBLE
:Snowflake 执行编码和压缩,确保与第三方计算引擎的互操作性。OPTIMIZED
:Snowflake 执行编码和压缩,可确保 Snowflake 中的最佳表性能。
默认:
OPTIMIZED
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
OWNERSHIP |
Iceberg 表 |
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 |
外部卷 |
|
USAGE |
目录集成 |
请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
只有表所有者(即对表具有 OWNERSHIP 权限的角色)或更高级别才能执行此命令。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
以下示例使用 ALTER ICEBERG TABLE ...CONVERT TO MANAGED 语句,将 Snowflake 不管理的表转换为使用 Snowflake 作为 Iceberg 目录的表。
ALTER ICEBERG TABLE myTable CONVERT TO MANAGED
BASE_LOCATION = 'my/relative/path/from/external_volume';