Condividi tramite


ALTER TABLE

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

Modifica lo schema o le proprietà di una tabella.

Per le modifiche al tipo o la ridenominazione delle colonne in Delta Lake, vedere riscrivere i dati.

Per modificare il commento di una tabella, è anche possibile usare COMMENT ON.

Per modificare un oggetto STREAMING TABLE, usare TABELLA ALTER STREAMING.

Se la tabella viene memorizzata nella cache, il comando cancella i dati memorizzati nella cache della tabella e tutti i relativi dipendenti che vi fanno riferimento. La cache verrà riempita la prossima volta in cui si accede alla tabella o ai dipendenti.

Nota

Quando si aggiunge una colonna a una tabella Delta esistente, non è possibile definire un DEFAULT valore. Tutte le colonne aggiunte alle tabelle Delta vengono considerate come NULL per le righe esistenti. Dopo aver aggiunto una colonna, è possibile definire facoltativamente un valore predefinito per la colonna, ma viene applicato solo per le nuove righe inserite nella tabella. Usare la sintassi seguente:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Nelle tabelle della chiave esterna è possibile eseguire solo ALTER TABLE SET OWNER e ALTER TABLE RENAME TO.

Autorizzazioni necessarie

Se si usa il catalogo Unity, è necessario disporre MODIFY delle autorizzazioni per:

  • ALTER COLUMN
  • Aggiungi colonna
  • .drop column
  • Impostare le proprietà della tabella
  • Annullare le proprietà della tabella
  • Modificare ottimizzazione predittiva

Se si usa Il catalogo Unity è necessario disporre dell'autorizzazione o della proprietà di MANAGE per:

  • IMPOSTARE PROPRIETARIO SU

Tutte le altre operazioni richiedono la titolarità della tabella.

Sintassi

ALTER TABLE table_name
   { RENAME TO clause |
     ADD COLUMN clause |
     ALTER COLUMN clause |
     DROP COLUMN clause |
     RENAME COLUMN clause |
     ADD CONSTRAINT clause |
     DROP CONSTRAINT clause |
     DROP FEATURE clause |
     ADD PARTITION clause |
     DROP PARTITION clause |
     PARTITION SET LOCATION clause |
     RENAME PARTITION clause |
     RECOVER PARTITIONS clause |
     SET { ROW FILTER clause } |
     DROP ROW FILTER |
     SET TBLPROPERTIES clause |
     UNSET TBLPROPERTIES clause |
     SET SERDE clause |
     SET LOCATION clause |
     SET OWNER TO clause |
     SET SERDE clause |
     SET TAGS clause |
     UNSET TAGS clause |
     CLUSTER BY clause }
     PREDICTIVE OPTIMIZATION clause}

Parametri

  • table_name

    Identifica la tabella modificata. Il nome non deve includere una specifica temporale o una specifica delle opzioni. Se la tabella non è stata trovata, Azure Databricks genera un errore TABLE_OR_VIEW_NOT_FOUND.

  • RENAME TO to_table_name

    Rinomina la tabella all'interno dello stesso schema.

    • to_table_name

      Identifica il nuovo nome della tabella. Il nome non deve includere una specifica temporale o una specifica delle opzioni.

  • Aggiungere una colonna

    Aggiunge una o più colonne alla tabella.

  • ALTER COLUMN

    Modifica una proprietà o la posizione di una colonna.

  • Escludi colonna

    Eliminare una o più colonne o campi in una tabella Delta Lake.

  • Rinominare una colonna

    Rinomina una colonna o un campo in una tabella Delta Lake.

  • Aggiungere i vincoli

    Aggiunge alla tabella un vincolo CHECK, un vincolo di chiave esterna informativa o un vincolo di chiave primaria informativa.

    Le chiavi esterne e le chiavi primarie sono supportate solo per le tabelle nel catalogo Unity, non per il catalogo hive_metastore.

  • Vincoli di rilascio

    Elimina dalla tabella una chiave primaria, una chiave esterna o un vincolo CHECK.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 14.1 e versioni successive

    Rimuove una funzionalità da una tabella Delta Lake.

    La rimozione delle funzionalità che influiscono sia sui lettori che sui writer richiede un processo a due fasi:

    Per informazioni dettagliate, vedere Che cosa sono le funzionalità della tabella?.

    • feature_name

      Nome di una funzionalità sotto forma di valore STRING letterale o identificatore, che deve essere compreso da Azure Databricks ed essere supportato nella tabella.

      feature_names supportati sono:

      • 'deletionVectors' o deletionvectors
        • 'v2Checkpoint' o v2checkpoint

      Se la funzionalità non è presente nella tabella Azure Databricks genera DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • TRUNCATE HISTORY

      Facoltativamente, consente di avviare la seconda fase di eliminazione di una funzionalità reader-plus-writer dopo 24 ore troncando la cronologia delle tabelle al momento in cui è stato eseguito il comando di chiamata.

      Il troncamento della cronologia delle tabelle limita la possibilità di eseguire DESCRIBE HISTORY e query di spostamento temporale.

  • Aggiungere una partizione

    Aggiunge una o più partizioni alla tabella.

  • Annullare partizione

    Elimina una o più partizioni dalla tabella.

  • Partizione … Imposta posizione

    Imposta la posizione di una partizione.

  • Rinomina partizione

    Sostituisce le chiavi di una partizione.

  • Ripristina partizioni

    Indica ad Azure Databricks di analizzare il percorso della tabella e aggiungere eventuali file alla tabella aggiunti direttamente al file system.

  • SET Clausola ROW FILTER

    Si applica a:segno di spunta sì Solo Databricks SQL segno di spunta sì Databricks Runtime 12.2 LTS e versioni successive segno di spunta sì al catalogo Unity

    Aggiunge una funzione di filtro di riga alla tabella. Tutte le query successive alla tabella ricevono un subset delle righe in cui la funzione restituisce TRUE booleano. Ciò può essere utile per scopi di controllo di accesso con granularità fine, in cui la funzione può esaminare l'identità o le appartenenze a gruppi dell'utente che richiama per decidere se filtrare determinate righe.

  • DROP ROW FILTER

    Si applica a:segno di spunta sì solo catalogo Unity

    Elimina il filtro di riga dalla tabella, se presente. Le query future restituiranno tutte le righe dalla tabella senza alcun filtro automatico.

  • Impostare le proprietà della tabella

    Imposta o reimposta una o più proprietà definite dall'utente.

  • Annullare le proprietà della tabella

    Rimuove una o più proprietà definite dall'utente.

  • SET LOCATION

    Sposta la posizione di una tabella.

    SET LOCATION path
    
    • LOCATION path

      path deve essere un valore STRING letterale. Specifica la nuova posizione della tabella.

      I file nel percorso originale non verranno spostati nel nuovo percorso.

  • [ SET ] OWNER TO principal

    Trasferisce la titolarità della tabella a principal.

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 11.3 LTS e versioni successive

    SET è consentito come parola chiave facoltativa.

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 13.3 LTS e versioni successive

    Applicare tag alla tabella. È necessario disporre APPLY TAG dell'autorizzazione per aggiungere tag alla tabella.

    • tag_name

      Valore letterale STRING. tag_name deve essere univoco all'interno della tabella o della colonna.

    • tag_value

      Valore letterale STRING.

  • UNSET TAGS ( tag_name [, ...] )

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 13.3 LTS e versioni successive

    Rimuovere i tag dalla tabella. È necessario disporre APPLY TAG dell'autorizzazione per rimuovere i tag dalla tabella.

    • tag_name

      Valore letterale STRING. tag_name deve essere univoco all'interno della tabella o della colonna.

  • Clausola CLUSTER BY

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 13.3 LTS e versioni successive

    Aggiunge, modifica o elimina la strategia di clustering per una tabella Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Si applica a:segno di spunta sì Solo Databricks SQL segno di spunta sì Databricks Runtime 12.2 LTS e versioni successive segno di spunta sì al catalogo Unity

    Importante

    Questa funzionalità è disponibile in anteprima pubblica.

    Modifica la tabella Delta Lake gestita con l'impostazione di ottimizzazione predittiva desiderata.

    Per impostazione predefinita, quando vengono create le tabelle, il comportamento proviene INHERIT dallo schema.

    Quando l'ottimizzazione predittiva viene esplicitamente abilitata o ereditata come abilitata, OPTIMIZE e VACUUM verranno richiamati automaticamente nella tabella, come ritenuto appropriato da Azure Databricks. Per altri dettagli, vedere Ottimizzazione predittiva per le tabelle gestite di Unity Catalog.

Esempi

Per gli esempi relativi all'aggiunta di vincoli e modifica di colonne Delta Lake, vedere

-- RENAME table
> DESCRIBE student;
                col_name data_type comment
 ----------------------- --------- -------
                    name    string    NULL
                  rollno       int    NULL
                     age       int    NULL
 # Partition Information
              # col_name data_type comment
                     age       int    NULL

> ALTER TABLE Student RENAME TO StudentInfo;

-- After Renaming the table
> DESCRIBE StudentInfo;
                col_name data_type comment
 ----------------------- --------- -------
                    name    string    NULL
                  rollno       int    NULL
                     age       int    NULL
 # Partition Information
              # col_name data_type comment
                     age       int    NULL

-- RENAME partition
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=10
    age=11
    age=12

> ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');

-- After renaming Partition
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15

-- Add new columns to a table
> DESCRIBE StudentInfo;
                col_name data_type comment
 ----------------------- --------- -------
                    name    string    NULL
                  rollno       int    NULL
                     age       int    NULL
 # Partition Information
              # col_name data_type comment
                     age       int    NULL

> ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);

-- After Adding New columns to the table
> DESCRIBE StudentInfo;
                col_name data_type comment
 ----------------------- --------- -------
                    name    string    NULL
                  rollno       int    NULL
                LastName    string    NULL
                     DOB timestamp    NULL
                     age       int    NULL
 # Partition Information
              # col_name data_type comment
                     age       int    NULL

-- Add a new partition to a table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15

> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);

-- After adding a new partition to the table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15
    age=18

-- Drop a partition from the table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15
    age=18

> ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);

-- After dropping the partition of the table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15

-- Adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15

> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);

-- After adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
 partition
 ---------
    age=11
    age=12
    age=15
    age=18
    age=20

-- ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
                col_name data_type comment
+-----------------------+---------+-------
                    name    string    NULL
                  rollno       int    NULL
                LastName    string    NULL
                     DOB timestamp    NULL
                     age       int    NULL
 # Partition Information
              # col_name data_type comment
                     age       int    NULL

ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";

--After ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
                col_name data_type     comment
 ----------------------- --------- -----------
                    name    string new comment
                  rollno       int        NULL
                LastName    string        NULL
                     DOB timestamp        NULL
                     age       int        NULL
 # Partition Information
              # col_name data_type     comment
                     age       int        NULL

-- RENAME COLUMN
> ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;

--After RENAME COLUMN
> DESCRIBE StudentInfo;
                col_name data_type     comment
 ----------------------- --------- -----------
               FirstName    string new comment
                  rollno       int        NULL
                LastName    string        NULL
                     DOB timestamp        NULL
                     age       int        NULL
 # Partition Information
              # col_name data_type     comment
                     age       int        NULL

-- Change the file Location
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';

-- SET SERDE/ SERDE Properties (DBR only)
> ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';

> ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee');

-- SET TABLE PROPERTIES
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');

-- DROP TABLE PROPERTIES
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');

-- Drop the "deletion vectors" from a Delta table
> ALTER TABLE my_table DROP FEATURE deletionVectors;

-- 24 hours later
> ALTER TABLE my_table DROP FEATURE deletionVectors TRUNCATE HISTORY;

-- Applies three tags to the table named `test`.
> ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');

-- Removes three tags from the table named `test`.
> ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');

-- Applies three tags to table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');

-- Removes three tags from table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Enables predictive optimization for my_table
> ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;