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 steht auch für Tabellen zur Verfügung, die nicht das Delta Lake-Format verwenden, um DROP, ADD oder RENAME Partitionen schnell mithilfe der ALTER TABLE Anweisung zu bearbeiten.

PARTITIONIERT NACH

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

  • Partitionsspalte

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

  • Spaltentyp

    Sofern sich der partition_column nicht auf eine column_identifier in der column_specification-Tabelle bezieht, definiert column_type den Datentyp des 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

  • Partitionsspalte

    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

    Dieses Formular ist nur in ALTER SHARE ADD TABLEzulä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');