Partitionen
Gilt für: Databricks SQL Databricks Runtime
Eine Partition besteht aus einer Teilmenge von Zeilen in einer Tabelle, die denselben Wert für eine vordefinierte Teilmenge von Spalten, den sogenannten Partitionierungsspalten, aufweisen. Die Verwendung von Partitionen kann Abfragen für die Tabelle sowie die Datenbearbeitung beschleunigen.
Um Partitionen zu verwenden, definieren Sie den Satz der Partitionsspalten beim Erstellen einer Tabelle, indem Sie die Klausel PARTITIONED BY einfügen.
Beim Einfügen oder Bearbeiten von Zeilen in einer Tabelle weist Azure Databricks Zeilen automatisch den geeigneten Partitionen zu.
Sie können die Partition auch direkt mithilfe einer PARTITION-Klausel angeben.
Diese Syntax ist auch für Tabellen verfügbar, die nicht das Delta Lake-Format verwenden, um Partitionen mithilfe der ALTER TABLE-Anweisung schnell zu löschen (DROP), hinzuzufügen (ADD) oder umzubenennen (RENAME).
PARTITIONED BY
Die PARTITIONED BY
-Klausel gibt eine Liste von Spalten an, mit denen die neue Tabelle partitioniert wird.
Syntax
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Parameter
-
Ein Bezeichner kann auf einen
column_identifier
in der Tabelle verweisen. Wenn Sie mehrere Spalten angeben, dürfen keine Duplikate vorhanden sein. Wenn Sie auf alle Spalten in dercolumn_specification
einer Tabelle verweisen, wird ein Fehler ausgelöst. -
Wenn
partition_column
nicht auf einencolumn_identifier
in dercolumn_specification
der Tabelle verweist, definiertcolumn_type
den Datentyp vonpartition_column
.Nicht alle von Databricks SQL unterstützten Datentypen werden von allen Datenquellen unterstützt.
Notizen
Wenn Sie keine Delta Lake-Tabelle definieren, werden Partitionierungsspalten, die auf die Spalten in der Spaltenspezifikation verweisen, immer an das Ende der Tabelle verschoben.
PARTITION
Sie verwenden die PARTITION
-Klausel, um eine Partition anzugeben, die abgefragt oder bearbeitet werden soll.
Eine Partition wird angegeben, indem alle zugehörigen Spalten benannt werden und ihnen jeweils ein Wert zugeordnet wird. Sie müssen sie nicht in einer bestimmten Reihenfolge angeben.
Sofern Sie einer vorhandenen Tabelle keine neue Partition hinzufügen, können Sie Spalten oder Werte weglassen, um anzugeben, dass der Vorgang für alle Partitionen gilt, die der Teilmenge der Spalten entsprechen.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
Parameter
-
Eine Spalte, die als Partitionsspalte der Tabelle angegeben wird. Sie dürfen dieselbe Spalte nicht zweimal angeben.
= partition_value
Ein Literal eines Datentyps, der mit dem Typ der Partitionsspalte übereinstimmt. Wenn Sie einen Partitionswert weglassen, gleicht die Spezifikation alle Werte für diese Partitionsspalte ab.
LIKE pattern
Diese Form ist nur in ALTER SHARE ADD TABLE zulässig.
Gleicht die Zeichenfolgendarstellung von
partition_column
mitpattern
ab.pattern
muss ein Zeichenfolgenliteral sein, das wie in LIKE verwendet wird.
Beispiele
-- 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');