REORG TABLE

适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

通过重写文件以清除软删除的数据(例如 ALTER TABLE DROP COLUMN 删除的列数据)来重新组织 Delta Lake 表。

语法

REORG [ TABLE ] table_name { [ WHERE predicate ] APPLY ( PURGE ) |
                             APPLY ( UPGRADE UNIFORM ( ICEBERG_COMPAT_VERSION = version ) } )

对于 15.4 之前的 Databricks Runtime 版本,TABLE 是必需关键字。

注意

  • APPLY (PURGE) 仅重写包含软删除数据的文件。
  • APPLY (UPGRADE) 可以重写所有文件。
  • REORG TABLE 幂等,这意味着如果在同一数据集上运行两次,则第二次运行不起作用
  • 运行 APPLY (PURGE) 后,软删除的数据可能仍存在于旧文件中。 可以运行 VACUUM 以物理方式删除旧文件。

参数

  • table_name

    标识现有的 Delta 表。 名称不得包含时态规范或选项规范

  • WHERE谓词

    对于 APPLY (PURGE),重新组织与给定分区谓词匹配的文件。 仅支持涉及分区键属性的筛选器。

  • APPLY (PURGE)

    指定文件重写的目的是清除软删除的数据。 请参阅清除仅元数据删除以强制重写数据

  • APPLY (UPGRADE UNIFORM ( ICEBERG_COMPAT_VERSION = version ))

    适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 14.3 及更高版本

    指定重写文件的目的是将表升级到给定的 Iceberg 版本。 version 须为 12

示例

> REORG TABLE events APPLY (PURGE);

> REORG TABLE events WHERE date >= '2022-01-01' APPLY (PURGE);

> REORG TABLE events
    WHERE date >= current_timestamp() - INTERVAL '1' DAY
    APPLY (PURGE);

> REORG TABLE events APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));