[ パーティション]
適用対象: 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 ] } [, ...] )
パラメーター
-
識別子は、テーブル内の
column_identifier
を参照できます。 複数の列を指定する場合は、重複しないようにする必要があります。 テーブルのcolumn_specification
のすべての列を参照すると、エラーが発生します。 -
partition_column
がテーブルのcolumn_specification
でcolumn_identifier
を参照していない限り、column_type
はpartition_column
のデータ型を定義します。Databricks SQL でサポートされているすべてのデータ型が、すべてのデータ ソースでサポートされているわけではありません。
メモ
Delta Lake テーブルのパーティション分割列を定義しない限り、列指定内の列の参照は、必ずテーブルの最後に移動されます。
PARTITION
PARTITION
句を使用して、クエリまたは操作を行うパーティションを識別します。
パーティションを識別するには、すべての列に名前を付け、それぞれを値に関連付けます。 特定の順序で指定する必要はありません。
既存のテーブルに新しいパーティションを追加するのでない限り、列または値を省略し、列のサブセットに一致するすべてのパーティションに操作を適用することを示すことができます。
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
パラメーター
-
テーブルのパーティション列として指定されている列。 同じ列を 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
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');