適用対象:
Databricks SQL
Databricks Runtime
注
マネージド Apache Iceberg テーブルでは、Unity Catalog は液体クラスタリングのみをサポートし、 PARTITION BY 句で指定されたパーティションを液体クラスタリングのクラスタリング キーとして解釈します。
Databricks では、すべての新しい Delta テーブルとマネージド Iceberg テーブルに対して液体クラスタリングが推奨されます。 Azure Databricks for Delta Lake と Apache Iceberg の Unity カタログマネージド テーブルと、テーブルに液体クラスタリングを使用する方法に関するページを参照してください。
パーティションは、パーティション分割列と呼ばれる定義済みの列のサブセットに対して同じ値を共有するテーブル内の行のサブセットで構成されます。 パーティションを使用すると、テーブルに対するクエリと、データ操作を高速化できます。
パーティションを使用するには、PARTITIONED BY 句を含めてテーブルを作成するときに、パーティション分割列のセットを定義します。
テーブル内で行を挿入したり操作したりする場合、Azure Databricks によって適切なパーティションに行が自動的にディスパッチされます。
PARTITION 句を使用してパーティションを直接指定することもできます。
この構文は、Delta Lake 形式を使用しないテーブルでも、DROP ステートメントを使用してパーティションをすばやくADD、RENAME、またはALTER TABLEするために使用できます。
〜によって分割
PARTITIONED BY 句は、新しいテーブルがパーティション分割される列のリストを指定しました。
構文
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
パラメーター
-
識別子は、テーブル内の
column_identifierを参照できます。 複数の列を指定する場合は、重複しないようにする必要があります。 テーブルのcolumn_specification内のすべての列を参照すると、エラーが発生します。 -
partition_columnがテーブルのcolumn_identifierのcolumn_specificationを参照しない限り、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');