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 un STREAMING TABLE
, usare ALTER STREAMING TABLE.
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 COLUMN
ADD COLUMN
DROP COLUMN
SET TBLPROPERTIES
UNSET 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 TO
to_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_name
trovarsi nello stesso catalogo ditable_name
. Per altre tabelle, l'oggettoto_table_name
deve trovarsi nello stesso schema ditable_name
.Se
to_table_name
non è 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 COLLATION
collation_nameSi applica a:
Databricks SQL
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, 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 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:
Databricks SQL
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.
-
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 FILTER
Si applica a:
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.
-
Imposta o reimposta una o più proprietà definite dall'utente.
-
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 valoreSTRING
letterale. Specifica la nuova posizione della tabella.I file nella posizione originale non verranno spostati nella nuova posizione.
[ SET ] OWNER TO
dirigente scolasticoTrasferisce la proprietà della tabella a
principal
.Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
SET
è consentito come parola chiave facoltativa.SET TAGS ( { tag_name = tag_value } [, ...] )
Si applica a:
Databricks SQL
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:
Databricks SQL
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:
Databricks SQL
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
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