CLUSTER BY 子句 (TABLE)

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 13.3 及更高版本 check marked yes 仅 Delta Lake

定义 Delta Lake 表的液态多维聚类。

可以在以下情况下使用此子句:

  • 使用 CREATE TABLE 创建表
  • 使用 ALTER TABLE 更改表以更改聚类列。 若要使用更改后的聚类列对行进行聚类,则必须运行 OPTIMIZE。 请注意,按之前的聚类列聚类的行不受影响。

更新后的行不会自动重新聚类。 运行 OPTIMIZE 以重新聚类更新后的行。

有关液态聚类的详细信息,请参阅对 Delta 表使用液态聚类

语法

CLUSTER BY { ( column_name [, ...] ] ) |
             NONE }

参数

  • column_name

    指定作为聚类数据的依据的表的列。 列顺序无关紧要。 若要受益于更改群集,应运行 OPTIMIZE

  • NONE

    为正在更改的表关闭聚类。 新插入或更新的数据不会由 OPTIMIZE 聚类。 若要在创建表时不使用聚类,请忽略 CLUSTER BY 子句。

示例

可以在对 Delta 表使用 Liquid 聚类中找到更多示例。

-- Create a table with a clustering column
> CREATE TABLE t(a int, b string) USING delta CLUSTER BY (a);

-- The clustering of an existing Delta table to add a second dimension
> ALTER TABLE t CLUSTER BY (a, b);

-- Recluster the table
> OPTIMIZE t;

-- Remove the clustering
> ALTER TABLE t CLUSTER BY NONE;