Partizioni

Si applica a:check contrassegnato sì controllo SQL databricks contrassegnato come sì Databricks Runtime

Una partizione è costituita da un subset di righe in una tabella che condivide lo stesso valore per un subset predefinito di colonne denominate colonne di partizionamento. L'uso di partizioni può velocizzare le query sulla tabella e la manipolazione dei dati.

Per usare le partizioni, definire il set di colonne di partizionamento quando si crea una tabella includendo la clausola PARTITIONED BY .

Quando si inseriscono o modificano righe in una tabella Azure Databricks invia automaticamente righe nelle partizioni appropriate.

È anche possibile specificare la partizione direttamente usando una clausola PARTITION .

Questa sintassi è disponibile anche per le tabelle che non usano il formato Delta Lake, per DROP, ADD o RENAME le partizioni rapidamente usando l'istruzione ALTER TABLE.

PARTIZIONATO DA

La PARTITIONED BY clausola ha specificato un elenco di colonne lungo cui viene partizionata la nuova tabella.

Sintassi

PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )

Parametri

  • partition_column

    Un identificatore può fare riferimento a un column_identifier oggetto nella tabella. Se si specificano più colonne non devono essere duplicati. Se si fa riferimento a tutte le colonne nella tabella column_specification viene generato un errore.

  • column_type

    A meno che il partition_column riferimento a un column_identifier nella tabella non column_specificationcolumn_type definisca il tipo di dati di partition_column.

    Non tutti i tipi di dati supportati da Databricks SQL sono supportati da tutte le origini dati.

Note

A meno che non si definiscano colonne di partizionamento di tabelle Delta Lake che fanno riferimento alle colonne nella specifica della colonna vengono sempre spostate alla fine della tabella.

PARTIZIONE

Si usa la PARTITION clausola per identificare una partizione da eseguire query o modificare.

Una partizione viene identificata mediante la denominazione di tutte le colonne e l'associazione di ognuna con un valore. Non è necessario specificarli in un ordine specifico.

A meno che non si stia aggiungendo una nuova partizione a una tabella esistente, è possibile omettere colonne o valori per indicare che l'operazione si applica a tutte le partizioni corrispondenti che corrispondono al subset di colonne.

PARTITION ( { partition_column  [ = partition_value | LIKE pattern ] } [ , ... ] )

Parametri

  • partition_column

    Colonna denominata come colonna di partizione della tabella. Non è possibile specificare la stessa colonna due volte.

  • = partition_value

    Valore letterale di un tipo di dati corrispondente al tipo della colonna di partizione. Se si omette un valore di partizione, la specifica corrisponderà a tutti i valori per questa colonna di partizione.

  • LIKE pattern

    Questo modulo è consentito solo in ALTER SHARE ADD TABLE.

    Corrisponde alla rappresentazione stringa di partition_column a pattern. pattern deve essere un valore letterale stringa usato in LIKE.

Esempi

-- 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 LOCATION 'dbfs:/log'
     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');