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 eseguire rapidamente la partizione in DROP, ADD o RENAME utilizzando l'istruzione ALTER TABLE.

PARTIZIONATO PER

La clausola PARTITIONED BY 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 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 il partition_column non faccia riferimento a un column_identifier nella column_specificationdella tabella , column_type definisce il tipo di dati del 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 definisca un partizionamento delle tabelle Delta Lake, le colonne che fanno riferimento a quelle nella specifica di colonna vengono sempre spostate alla fine della tabella.

PARTITION

Usare la clausola PARTITION per identificare una partizione da interrogare o manipolare.

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