共用方式為


資料分割

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

數據分割是由數據表中的數據列子集所組成,該數據列針對稱為 數據分割數據行之預先定義的數據行子集共用相同的值。 使用分割區可以加速對數據表的查詢,以及數據操作。

若要使用數據分割,您可以在建立數據表時定義一組數據分割數據行,方法是包含 PARTITIONED BY 子句。

在數據表中插入或操作數據列時,Azure Databricks 會自動將數據列分派至適當的分割區。

您也可以使用 PARTITION 子句直接指定分割區。

此語法也適用於不使用 Delta Lake 格式的數據表,使用 ALTER TABLE 語句快速新增或 RENAME 資料分割。

數據分割者

PARTITIONED BY 句會指定數據行的清單,其中會沿著新數據表進行分割。

語法

PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )

參數

  • partition_column

    識別元可以在資料表中參考 column_identifier 。 如果您指定多個數據行,則不一定有重複專案。 如果您參考數據表中的所有數據行, column_specification 就會引發錯誤。

  • column_type

    partition_column除非 參考column_identifier資料表 column_specification中的 ,column_type否則會定義 的partition_column數據類型。

    並非所有數據源都支援 Databricks SQL 支援的所有 數據類型

備註

除非您定義 Delta Lake 資料表分割數據行來參考資料行規格中的數據行,否則一律會移至數據表的結尾。

PARTITION

您可以使用 PARTITION 子句來識別要查詢或操作的數據分割。

數據分割的識別方式是命名其所有數據行,並將每個數據行與值產生關聯。 您不需要以特定順序指定它們。

除非您將新的分割區新增至現有的數據表,否則您可以省略數據行或值,以指出作業會套用至符合數據行子集的所有相符數據分割。

PARTITION ( { partition_column  [ = partition_value | LIKE pattern ] } [ , ... ] )

參數

  • partition_column

    名為的數據行,做為數據表的數據分割數據行。 您可能不會指定相同的數據行兩次。

  • = partition_value

    符合數據分割數據行類型的數據類型常值。 如果您省略數據分割值,規格將會符合此資料分割數據行的所有值。

  • LIKE pattern

    此表單只能在 ALTER SHARE ADD TABLE 中使用

    將的 partition_column 字串表示與 pattern相符。 pattern必須是 LIKE 中使用的字串常值。

範例

-- Use the PARTTIONED BY clause in a table definition
> CREATE TABLE student(university STRING,
                       major      STRING,
                       name       STRING)
         PARTITIONED BY(university, major)

> CREATE TABLE professor(name STRING)
         PARTITIONED BY(university STRING,
                        department STRING);

-- Use the PARTITION specification to INSERT into a table
> INSERT INTO student
         PARTITION(university= 'TU Kaiserslautern') (major, name)
         SELECT major, name FROM freshmen;

-- Use the partition specification to add and drop a partition
> CREATE TABLE log(date DATE, id INT, event STRING)
     USING CSV LOCATION 'dbfs:/log'
     PARTITIONED BY (date);

> ALTER TABLE log ADD PARTITION(date = DATE'2021-09-10');

> ALTER TABLE log DROP PARTITION(date = DATE'2021-09-10');

-- Drop all partitions from the named university, independent of the major.
> ALTER TABLE student DROP PARTITION(university = 'TU Kaiserslautern');