不断变化的 Iceberg 表架构
Iceberg 架构更新是仅对元数据进行更改。执行架构更新时,不会更改任何数据文件。
Iceberg 格式支持以下架构发展更改:
-
添加 – 将新列添加到表或嵌套
struct。 -
删除 – 删除表或嵌套
struct中的现有列。 -
重命名 – 重命名嵌套
struct中的现有列或字段。 -
重新排序 – 更改列的顺序。
-
类提升 – 扩大列、
struct字段、map键、map值或list元素的类型。目前,Iceberg 表支持以下案例:-
整数到大整数
-
浮点到双精度
-
提高十进制类型的精度
-
ALTER TABLE ADD COLUMNS
向现有 Iceberg 表添加一列或多列。
摘要
ALTER TABLE [db_name.]table_nameADD COLUMNS (col_namedata_type[,...])
示例
以下示例将 string 类型的 comment 列添加到 Iceberg 表中。
ALTER TABLE iceberg_table ADD COLUMNS (comment string)
以下示例将 struct 类型的 point 列添加到 Iceberg 表中。
ALTER TABLE iceberg_table ADD COLUMNS (point struct<x: double, y: double>)
以下示例将作为结构数组的 points 列添加到 Iceberg 表中。
ALTER TABLE iceberg_table ADD COLUMNS (points array<struct<x: double, y: double>>)
ALTER TABLE DROP COLUMN
从现有 Iceberg 表中删除列。
摘要
ALTER TABLE [db_name.]table_nameDROP COLUMNcol_name
示例
ALTER TABLE iceberg_table DROP COLUMN userid
ALTER TABLE CHANGE COLUMN
更改列的名称、类型、顺序或注释。
不支持 ALTER TABLE REPLACE COLUMNS。由于 REPLACE COLUMNS 删除所有列并添加新列,因此 Iceberg 不支持该语句。CHANGE COLUMN 是架构发展的首选语法。
摘要
ALTER TABLE [db_name.]table_nameCHANGE [COLUMN]col_old_namecol_new_namecolumn_type[COMMENTcol_comment] [FIRST|AFTERcolumn_name]
示例
ALTER TABLE iceberg_table CHANGE comment blog_comment string AFTER id
SHOW COLUMNS
显示表中的列。
摘要
SHOW COLUMNS (FROM|IN) [db_name.]table_name
示例
SHOW COLUMNS FROM iceberg_table