跳到内容

Delta 列映射

列映射功能允许 Delta 表列和底层 Parquet 文件列使用不同的名称。这使得 Delta 模式演化操作(例如 Delta 表上的 RENAME COLUMNDROP COLUMNS)无需重写底层 Parquet 文件。它还允许用户使用 Parquet 不允许的字符(例如空格)来命名 Delta 表列,这样用户就可以直接将 CSV 或 JSON 数据摄取到 Delta 中,而无需因之前的字符限制而重命名列。

列映射需要以下 Delta 协议

  • 阅读器版本 2 或更高。
  • 写入器版本 5 或更高。

对于具有所需协议版本的 Delta 表,可以通过将 delta.columnMapping.mode 设置为 name 来启用列映射。

您可以使用以下命令升级表版本并启用列映射

ALTER TABLE <table_name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '2',
'delta.minWriterVersion' = '5',
'delta.columnMapping.mode' = 'name'
)

当 Delta 表启用了列映射时,您可以重命名列

ALTER TABLE <table_name> RENAME COLUMN old_col_name TO new_col_name

有关更多示例,请参阅重命名列

当 Delta 表启用了列映射时,您可以删除一个或多个列

ALTER TABLE table_name DROP COLUMN col_name;
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...);

有关更多详细信息,请参阅删除列

当 Delta 表启用了列映射时,您可以在表的列名中包含空格以及以下任何字符:,;{}()\n\t=