Delta 列映射

重要

此功能目前以公共预览版提供。

Delta Lake 支持列映射,允许 Delta 表列和对应的 Parquet 列使用不同的名称。 列映射可以在 Delta 表上启用 Delta 模式演化操作,例如 RENAME COLUMN,而无需重写底层 Parquet 文件。 而且用户可以使用 Parquet 不允许使用的字符(例如空格)来命名 Delta 表列,这样用户便可以直接将 CSV 或 JSON 数据摄取到 Delta 中,而无需因先前的字符限制而重命名列。

要求

  • Databricks Runtime 10.2 或更高版本。

  • 列映射要求 Delta 表版本为读取器版本 2 和写入器版本 5。 对于具有所需表版本的 Delta 表,你可以通过将 delta.columnMappingMode 设置为 name 来启用列映射。 你可以使用单个 ALTER TABLE 命令升级表版本并启用列映射:

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

    注意

    在表中设置这些属性后,你只能使用 Databricks Runtime 10.2 及更高版本读取和写入此 Delta 表。

列名中支持的字符

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

重命名列

为 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, ...)

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