[ パーティション]

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

パーティションは、パーティション分割列と呼ばれる定義済みの列のサブセットに対して同じ値を共有するテーブル内の行のサブセットで構成されます。 パーティションを使用すると、テーブルに対するクエリと、データ操作を高速化できます。

パーティションを使用するには、PARTITIONED BY 句を含めてテーブルを作成するときに、パーティション分割列のセットを定義します。

テーブル内で行を挿入したり操作したりする場合、Azure Databricks によって適切なパーティションに行が自動的にディスパッチされます。

PARTITION 句を使用してパーティションを直接指定することもできます。

この構文は、Delta Lake 形式が使用されていないテーブルでも使用でき、ALTER TABLE ステートメントを使用して、パーティションをすばやく DROP、ADD、または RENAME できます。

PARTITIONED BY

PARTITIONED BY 句は、新しいテーブルがパーティション分割される列のリストを指定しました。

構文

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

パラメーター

  • partition_column

    識別子は、テーブル内の column_identifier を参照できます。 複数の列を指定する場合は、重複しないようにする必要があります。 テーブルの column_specification のすべての列を参照すると、エラーが発生します。

  • column_type

    partition_column がテーブルの column_specificationcolumn_identifier を参照していない限り、column_typepartition_column のデータ型を定義します。

    Databricks SQL でサポートされているすべてのデータ型が、すべてのデータ ソースでサポートされているわけではありません。

メモ

Delta Lake テーブルのパーティション分割列を定義しない限り、列指定内の列の参照は、必ずテーブルの最後に移動されます。

PARTITION

PARTITION 句を使用して、クエリまたは操作を行うパーティションを識別します。

パーティションを識別するには、すべての列に名前を付け、それぞれを値に関連付けます。 特定の順序で指定する必要はありません。

既存のテーブルに新しいパーティションを追加するのでない限り、列または値を省略し、列のサブセットに一致するすべてのパーティションに操作を適用することを示すことができます。

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

パラメーター

  • partition_column

    テーブルのパーティション列として指定されている列。 同じ列を 2 回指定することはできません。

  • = 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');