Freigeben über


Partitionen

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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

  • partition_column

    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 der column_specification einer Tabelle verweisen, wird ein Fehler ausgelöst.

  • column_type

    Wenn partition_column nicht auf einen column_identifier in der column_specification der Tabelle verweist, definiert column_type den Datentyp von partition_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

  • partition_column

    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 mit pattern 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');