不断变化的 Iceberg 表架构
Iceberg 架构更新是仅对元数据进行更改。执行架构更新时,不会更改任何数据文件。
Iceberg 格式支持以下架构发展更改:
-
添加 – 将新列添加到表或嵌套
struct
。 -
删除 – 删除表或嵌套
struct
中的现有列。 -
重命名 – 重命名嵌套
struct
中的现有列或字段。 -
重新排序 – 更改列的顺序。
-
类提升 – 扩大列、
struct
字段、map
键、map
值或list
元素的类型。目前,Iceberg 表支持以下案例:-
整数到大整数
-
浮点到双精度
-
提高十进制类型的精度
-
ALTER TABLE ADD COLUMNS
向现有 Iceberg 表添加一列或多列。
摘要
ALTER TABLE [
db_name
.]table_name
ADD COLUMNS (col_name
data_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_name
DROP 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_name
CHANGE [COLUMN]col_old_name
col_new_name
column_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