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.

Il ALTER TABLE comando non è supportato per le tabelle temporanee. Se il ALTER TABLE comando viene applicato a una tabella temporanea, viene restituito un errore. 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 pigramente la prossima volta in cui si accede alla tabella o alle dipendenze.

Nelle tabelle esterne è possibile eseguire ALTER TABLE SET OWNER solo e ALTER TABLE RENAME TO.

Autorizzazioni necessarie

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

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • PREDICTIVE OPTIMIZATION

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

  • SET OWNER TO

Tutte le altre operazioni richiedono il possesso della tabella.

Sintassi

ALTER TABLE table_name
    { RENAME TO clause |
      ADD COLUMN clause |
      ALTER COLUMN clause |
      DROP COLUMN clause |
      RENAME COLUMN clause |
      DEFAULT COLLATION 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.

    • to_table_name

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

      Per le tabelle del catalogo Unity, deve to_table_name trovarsi nello stesso catalogo di table_name. Per altre tabelle, l'oggetto to_table_name deve trovarsi nello stesso schema di table_name.

      Se to_table_name non è qualificato, viene implicitamente qualificato con lo schema corrente.

    > ALTER TABLE student RENAME TO student_info;
    
  • AGGIUNGI COLUMN

    Aggiunge una o più colonne alla tabella.

    Quando si aggiunge una colonna a una tabella Delta Lake esistente, non è possibile definire un DEFAULT valore. Tutte le colonne aggiunte alle tabelle Delta Lake vengono considerate come NULL per le righe esistenti. Dopo aver aggiunto una colonna, è possibile definire facoltativamente un valore predefinito per le nuove righe usando ALTER COLUMN.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                         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
    
    -- Optionally set a default value for new rows
    > ALTER TABLE StudentInfo ALTER COLUMN LastName SET DEFAULT 'unknown';
    

  • ALTERARE COLUMN

    Modifica una proprietà o la posizione di una colonna.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                    LastName    string    NULL
                         DOB timestamp    NULL
                         age       int    NULL
    
    > ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
    
    -- After altering the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                        name    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

    Modificare più colonne in una singola istruzione:

    -- Create a table with 3 columns
    > CREATE TABLE my_table (num INT, str STRING, bool BOOLEAN) TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported')
    > DESCRIBE TABLE my_table;
      col_name    data_type     comment
      --------    ---------     -------
           num          int        null
           str       string        null
           bool      boolean       null
    
    -- Update comments on multiple columns
    > ALTER TABLE table ALTER COLUMN
       num COMMENT 'number column',
       str COMMENT 'string column';
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   -------------
           num          int   number column
           str       string   string column
          bool      boolean            null
    
    -- Can mix different types of column alter
    > ALTER TABLE table ALTER COLUMN
       bool COMMENT 'boolean column',
       num AFTER bool,
       str AFTER num,
       bool SET DEFAULT true;
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   --------------
          bool      boolean   boolean column
           num          int    number column
           str       string    string column
    
  • ELIMINA COLUMN

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

  • RINOMINARE COLUMN

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

    > ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
    
    -- After renaming the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                   FirstName    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

  • ADD CONSTRAINT

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

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

  • DEFAULT COLLATION collation_name

    Si applica a:contrassegnato sì Databricks SQL contrassegnato sì Databricks Runtime 16.3 e versioni successive

    Modifica le regole di confronto predefinite della tabella per le nuove colonne STRING. Le colonne esistenti non sono interessate da questa clausola. Per modificare le regole di confronto di una colonna esistente, usare ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

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

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Si applica a:check contrassegnato come sì Databricks Runtime 14.3 LTS e versioni successive

    Il supporto legacy per DROP FEATURE è disponibile a partire da Databricks Runtime 14.3 LTS. it-IT: Per la documentazione delle funzionalità legacy, vedere Eliminare le funzionalità della tabella Delta (legacy).

    Si applica a:contrassegnato sì Databricks SQL contrassegnato sì Databricks Runtime 16.3 e versioni successive

  • Azure Databricks consiglia di usare Databricks Runtime 16.3 e versioni successive per tutti i DROP FEATURE comandi, che sostituisce il comportamento legacy.

    Rimuove una funzionalità da una tabella Delta Lake.

    La rimozione di una funzionalità può comportare l'aggiunta della funzionalità di scrittura checkpointProtection nel protocollo di tabella. Per altre informazioni, vedere Eliminare le funzionalità della tabella Delta e le funzionalità di tabella per la compatibilità dei protocolli.

    • feature_name

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

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

    • TRUNCATE HISTORY

      Rimozione delle funzionalità troncando la cronologia. Questo richiede un processo a due fasi:

La rimozione delle funzionalità mediante il troncamento della cronologia richiede un processo in due passaggi:

  • La prima chiamata cancella le tracce della funzionalità e informa l'utente dell'esito positivo parziale.

  • Attendere quindi che il termine di conservazione scada prima di eseguire nuovamente l'istruzione per completare la rimozione.

    Se si avvia la seconda chiamata troppo presto, Azure Databricks genera DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD o DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.

    Il troncamento della cronologia delle tabelle limita la possibilità di utilizzare DESCRIBE HISTORY ed effettuare query di viaggio nel tempo.

    -- 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;
    
  • AGGIUNGI PARTITION

    Aggiunge una o più partizioni alla tabella.

    > 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
    
    -- Adding multiple partitions to the table
    > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
    
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
        age=20
    
  • ELIMINA PARTITION

    Elimina una o più partizioni dalla tabella.

    > 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
    
  • PARTITION ... SET POSIZIONE

    Imposta la posizione di una partizione.

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • RINOMINARE PARTITION

    Sostituisce le chiavi di una partizione.

    > 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
    
  • Ripristina partizioni

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

  • SET ROW FILTER clausola

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

    Aggiunge una funzione di filtro di riga alla tabella. Tutte le query successive alla tabella ricevono un sottoinsieme delle righe in cui la funzione restituisce il valore booleano TRUE. 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:contrassegnato 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.

  • SET TBLPROPERTIES

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

    > ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
    
  • Annullare le proprietà della tabella

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

    > ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
    
  • SET SERDE

    Si applica a:segno di spunta sì Databricks Runtime

    Specifica la classe serializer/deserializer (SerDe) usata per leggere e scrivere dati in una tabella in formato Hive. È anche possibile configurare le proprietà SerDe con WITH SERDEPROPERTIES.

    > 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 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 nella posizione originale non verranno spostati nella nuova posizione.

  • [ SET ] OWNER TO dirigente scolastico

    Trasferisce la proprietà 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.

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

    -- Removes three tags from the table named `test`.
    > ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
    
    -- Removes three tags from table `main.schema1.test` column `col1`.
    > ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
    
  • 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 raggruppamento per una tabella Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

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

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

    Per impostazione predefinita, quando vengono create le tabelle, il comportamento si basa sullo schema.

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

    -- Enables predictive optimization for my_table
    > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
    

Altri esempi

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