Condividi tramite


Partizioni

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Una partizione è costituita da un subset di righe in una tabella che condividono lo stesso valore per un subset predefinito di colonne denominate colonne di partizionamento. L'uso di partizioni consente di 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 si modificano righe in una tabella, Azure Databricks invia automaticamente le 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 eliminare, aggiungere o rinominare rapidamente le partizioni usando l'istruzione ALTER TABLE.

PARTIZIONATO DA

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

Sintassi

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

Parametri

  • partition_column

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

  • column_type

    A meno che non partition_column faccia riferimento a un column_identifier oggetto nella tabella column_specification, column_type definisce il tipo di dati dell'oggetto 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 definisci un partizionamento di tabelle Delta Lake che fanno riferimento alle colonne nella specifica di colonna, vengono sempre spostate alla fine della tabella.

PARTITION

Usare la PARTITION clausola per identificare una partizione su cui eseguire query o modificare.

Una partizione viene identificata assegnando un nome a tutte le colonne e associandole a 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 corrispondenti 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 due volte la stessa colonna.

  • = 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.

    Trova la corrispondenza con la rappresentazione di 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
     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');