Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
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 o di una colonna, è anche possibile usare COMMENT ON.
Per modificare una tabella di streaming o una vista materializzata, usare ALTER STREAMING TABLEo ALTER MATERIALIZED VIEW.
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.
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 esterne, puoi 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 COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIES- modificare
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
-
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 TOto_table_nameRinomina la tabella.
-
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_nametrovarsi nello stesso catalogo ditable_name. Per altre tabelle, l'oggettoto_table_namedeve trovarsi nello stesso schema ditable_name.Se
to_table_namenon è qualificato, viene implicitamente qualificato con lo schema corrente.
-
-
Aggiunge una o più colonne alla tabella.
-
Modifica una proprietà o la posizione di una colonna.
-
Eliminare una o più colonne o campi da una tabella Delta Lake.
-
Rinomina una colonna o un campo in una tabella Delta Lake.
-
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 COLLATIONcollation_nameSi applica a:
Databricks SQL
Databricks Runtime 16.3 e versioni successiveModifica 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, usareALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.
-
Elimina dalla tabella una chiave primaria, una chiave esterna o un vincolo CHECK.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]Si applica a:
Databricks Runtime 14.3 LTS e versioni successiveIl 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:
Databricks SQL
Databricks Runtime 16.3 e versioni successiveAzure Databricks consiglia di usare Databricks Runtime 16.3 e versioni successive per tutti i
DROP FEATUREcomandi, 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
checkpointProtectionnel protocollo di tabella. Per altre informazioni, vedere Eliminare le funzionalità della tabella Delta e le funzionalità di tabella per la compatibilità dei protocolli.feature_nameNome di una funzionalità sotto forma di valore letterale
STRINGo 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.
-
Aggiunge una o più partizioni alla tabella.
-
Elimina una o più partizioni dalla tabella.
-
Imposta la posizione di una partizione.
-
Sostituisce le chiavi di una partizione.
-
Indica ad Azure Databricks di analizzare il percorso della tabella e aggiungere eventuali file alla tabella aggiunti direttamente al file system.
-
Si applica a: Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive
solo al catalogo Unity 
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 FILTERSi applica a:
solo Catalogo UnityElimina il filtro di riga dalla tabella, se presente. Le query future restituiranno tutte le righe dalla tabella senza alcun filtro automatico.
-
Imposta o reimposta una o più proprietà definite dall'utente.
Annullare le proprietà della tabella
Rimuove una o più proprietà definite dall'utente.
SET LOCATIONSposta la posizione di una tabella.
SET LOCATION pathLOCATION pathpathdeve essere un valoreSTRINGletterale. Specifica la nuova posizione della tabella.I file nella posizione originale non verranno spostati nella nuova posizione.
[ SET ] OWNER TOdirigente scolasticoTrasferisce la proprietà della tabella a
principal.Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successiveSETè consentito come parola chiave facoltativa.SET TAGS ( { tag_name = tag_value } [, ...] )Si applica a:
Databricks SQL
Databricks Runtime 13.3 LTS e versioni successiveApplicare tag alla tabella. È necessario disporre
APPLY TAGdell'autorizzazione per aggiungere tag alla tabella.tag_name
Valore letterale
STRING.tag_namedeve essere univoco all'interno della tabella o della colonna.tag_value
Valore letterale
STRING.
UNSET TAGS ( tag_name [, ...] )Si applica a:
Databricks SQL
Databricks Runtime 13.3 LTS e versioni successiveRimuovere i tag dalla tabella. È necessario disporre
APPLY TAGdell'autorizzazione per rimuovere i tag dalla tabella.tag_name
Valore letterale
STRING.tag_namedeve essere univoco all'interno della tabella o della colonna.
clausola CLUSTER BY
Si applica a:
Databricks SQL
Databricks Runtime 13.3 LTS e versioni successiveAggiunge, modifica o elimina la strategia di raggruppamento per una tabella Delta Lake.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONSi applica a: Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive
solo al catalogo Unity 
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.
Esempi
Per gli esempi relativi all'aggiunta di vincoli e modifica di colonne su 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;
-- Alter multiple columns in a single statement
-- 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