Partitions
S’applique à : Databricks SQL Databricks Runtime
Une partition est composée d’un sous-ensemble de lignes d’une table qui partagent la même valeur pour un sous-ensemble prédéfini de colonnes appelées les colonnes de partitionnement. L’utilisation de partitions peut accélérer les requêtes sur la table, ainsi que la manipulation des données.
Pour utiliser des partitions, vous définissez l’ensemble de colonnes de partitionnement lorsque vous créez une table en incluant la clause PARTITIONED BY.
Lors de l’insertion ou de la manipulation de lignes dans une table, Azure Databricks distribue automatiquement les lignes dans les partitions appropriées.
Vous pouvez également spécifier la partition directement à l’aide d’une clause PARTITION.
Cette syntaxe est également disponible pour les tables qui n’utilisent pas le format Delta Lake, pour supprimer (DROP), ajouter (ADD) ou renommer (RENAME) rapidement des partitions à l’aide de l’instruction ALTER TABLE.
PARTITIONNÉ PAR
La clause PARTITIONED BY
spécifie une liste de colonnes sur lesquelles la nouvelle table est partitionnée.
Syntaxe
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Paramètres
-
Un identificateur peut référencer un
column_identifier
dans la table. Si vous spécifiez plusieurs colonnes, il ne doit pas y avoir de doublons. Si vous référencez toutes les colonnes dans lecolumn_specification
de la table, une erreur est générée. -
À moins que
partition_column
ne fasse référence à uncolumn_identifier
dans lecolumn_specification
de la table,column_type
définit le type de données departition_column
.Tous les types de données pris en charge par Databricks SQL ne sont pas pris en charge par toutes les sources de données.
Notes
À moins que vous ne définissiez une colonne de partitionnement de table Lake, les colonnes qui référencent les colonnes dans la spécification de colonne sont toujours déplacées à la fin de la table.
PARTITION
Vous utilisez la clause PARTITION
pour identifier une partition à interroger ou à manipuler.
Une partition est identifiée en nommant toutes ses colonnes et en associant chacune à une valeur. Vous n’avez pas besoin de les spécifier dans un ordre spécifique.
À moins que vous n’ajoutiez une nouvelle partition à une table existante, vous pouvez omettre des colonnes ou des valeurs pour indiquer que l’opération s’applique à toutes les partitions correspondant au sous-ensemble de colonnes.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
Paramètres
-
Colonne nommée en tant que colonne de partition de la table. Vous ne pouvez pas spécifier deux fois la même colonne.
= partition_value
Littéral d’un type de données correspondant au type de la colonne de partition. Si vous omettez une valeur de partition, la spécification correspond à toutes les valeurs de cette colonne de partition.
LIKE pattern
Cette forme est autorisée uniquement dans ALTER SHARE ADD TABLE.
Fait correspondre la représentation sous forme de chaîne de
partition_column
avecpattern
.pattern
doit être un littéral de chaîne tel qu’il est utilisé dans LIKE.
Exemples
-- 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');