Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Databricks SQL
Databricks Runtime
Změní schéma nebo vlastnosti tabulky.
Změny typů nebo přejmenování sloupců v Delta Lake najdete v tématu Přepsání dat.
Pokud chcete změnit komentář k tabulce nebo sloupci, můžete použít také COMMENT ON.
Chcete-li změnit STREAMING TABLE
, použijte ALTER STREAMING TABLE.
Pokud je tabulka uložená v mezipaměti, příkaz vymaže data tabulky uložená v mezipaměti a všechny její závislé objekty, které na ni odkazují. Mezipaměť bude líně vyplněna, když dojde k příštímu přístupu k tabulce nebo jejím závislostem.
Poznámka:
Když přidáte sloupec do existující tabulky Delta, nemůžete definovat DEFAULT
hodnotu. Všechny sloupce přidané do tabulek Delta se považují za NULL
pro existující řádky. Po přidání sloupce můžete volitelně definovat výchozí hodnotu sloupce, ale použije se jenom pro nové řádky vložené do tabulky. Použijte následující syntax:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
U cizích tabulek můžete provádět pouze ALTER TABLE SET OWNER
a ALTER TABLE RENAME TO
.
Požadována oprávnění
Pokud používáte Katalog Unity, musíte mít MODIFY
oprávnění k:
ALTER COLUMN
ADD COLUMN
DROP COLUMN
SET TBLPROPERTIES
UNSET TBLPROPERTIES
- upravit
PREDICTIVE OPTIMIZATION
Pokud používáte Unity katalog, musíte mít oprávnění nebo vlastnictví k MANAGE
:
SET OWNER TO
Všechny ostatní operace vyžadují vlastnictví tabulky.
Syntaxe
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}
Parametry
-
Identifikuje změněnou tabulku. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností. Pokud tabulku nenajdete, Azure Databricks vyvolá TABLE_OR_VIEW_NOT_FOUND chybu.
RENAME TO
to_table_namePřejmenuje tabulku.
-
Identifikuje nový název tabulky. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.
Pro tabulky
to_table_name
katalogu Unity musí být ve stejném katalogu jakotable_name
. U jiných tabulekto_table_name
musí být ve stejném schématu jakotable_name
.Pokud
to_table_name
není kvalifikovaný, je implicitně kvalifikován aktuálním schématem.
-
-
Přidá do tabulky jeden nebo více sloupců.
-
Změní vlastnost nebo umístění sloupce.
-
Odstraňte jeden nebo více sloupců nebo polí v tabulce Delta Lake.
-
Přejmenuje sloupec nebo pole v tabulce Delta Lake.
-
Přidá omezení kontroly, informační omezení cizího klíče nebo informační omezení primárního klíče do tabulky.
Cizí klíče a primární klíče jsou podporovány pouze pro tabulky v katalogu Unity, nikoli pro
hive_metastore
katalog. DEFAULT COLLATION
collation_namePlatí pro:
Databricks SQL
Databricks Runtime 16.3 a vyšší
Mění výchozí kolaci tabulky pro nové sloupce
STRING
. Na existující sloupce tato klauzule nemá vliv. Chcete-li změnit kolaci existujícího sloupce, použijteALTER TABLE ... ALTER COLUMN ... COLLATE collation_name
.
-
Odstraní primární klíč, cizí klíč nebo kontrolu omezení z tabulky.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
Platí pro:
Databricks Runtime 14.3 LTS a novější
Podpora pro starší verze
DROP FEATURE
je dostupná od Databricks Runtime 14.3 LTS. Dokumentaci ke starším funkcím najdete v tématu Funkce tabulky Drop Delta (starší verze).Platí pro:
Databricks SQL
Databricks Runtime 16.3 a vyšší
Azure Databricks doporučuje používat Databricks Runtime 16.3 a vyšší pro všechny
DROP FEATURE
příkazy, které nahrazují starší chování.Odebere vlastnost z tabulky Delta Lake.
Odebrání funkce může vést k přidání funkce zápisu
checkpointProtection
v tabulkovém protokolu. Další informace naleznete v tématu Drop Delta table features and Table features for protocol compatibility.feature_name
Název funkce ve formě
STRING
literálu nebo identifikátoru, který musí být srozumitelný službou Azure Databricks a podporovaný v tabulce.Pokud funkce není přítomna v tabulce, Azure Databricks vyvolá DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
ODSTRANIT HISTORII
Odebrání funkcí zkrácením historie To vyžaduje dvoufázový proces:
Odstranění funkcí zkrácením historie vyžaduje dvoukrokový proces:
První vyvolání vymaže stopy funkce a informuje vás o částečném úspěchu.
Potom počkejte, až doba uchovávání skončí, a teprve potom příkaz znovu spusťte a dokončete odebrání.
Pokud zahájíte druhé vyvolání příliš brzy, Azure Databricks vyvolá DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD nebo DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Zkrácení historie tabulky omezuje schopnost provádět DESCRIBE HISTORY a spouštět časové dotazy.
-
Přidá do tabulky jeden nebo více oddílů.
-
Zahodí jednu nebo více partition z tabulky.
-
Nastaví umístění oddílu.
-
Nahrazuje klíče oddílu.
-
Dává Službě Azure Databricks pokyn, aby naskenoval umístění tabulky a přidal do tabulky všechny soubory, které byly přidány přímo do systému souborů.
-
Platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší
pouze pro Unity Catalog
Přidá do tabulky funkci filtru řádků. Všechny následné dotazy pro tabulku obdrží podmnožinu řádků, ve kterých se funkce vyhodnotí jako booleovská hodnota TRUE. To může být užitečné pro jemně odstupňované řízení přístupu, kdy funkce může zkontrolovat identitu nebo členství ve skupině uživatele, který funkci vyvolává, a určit, zda se mají určité řádky filtrovat.
DROP ROW FILTER
Platí pro:
Pouze katalog Unity
Pokud existuje, zahodí filtr řádků z tabulky. Budoucí dotazy vrátí všechny řádky z tabulky bez automatického filtrování.
-
Nastaví nebo obnoví jednu nebo více uživatelem definovaných vlastností.
ZRUŠIT NASTAVENÍ TBLPROPERTIES
Odebere jednu nebo více uživatelem definovaných vlastností.
SET LOCATION
Přesune umístění tabulky.
SET LOCATION path
LOCATION path
path
musí býtSTRING
literál. Určuje nové umístění tabulky.Soubory v původním umístění nebudou přesunuty do nového umístění.
[ SET ] OWNER TO
hlavníPřevede vlastnictví tabulky na
principal
.Platí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyšší
SET
je povolený jako volitelné klíčové slovo.SET TAGS ( { tag_name = tag_value } [, ...] )
Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a novější
Aplikujte značky na tabulku. Musíte mít
APPLY TAG
oprávnění k přidání značek do tabulky.tag_name
Literál
STRING
. Musítag_name
být jedinečný v tabulce nebo sloupci.tag_value
Literál
STRING
.
UNSET TAGS ( tag_name [, ...] )
Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a novější
Odstraňte značky z tabulky. Musíte mít
APPLY TAG
oprávnění k odebrání značek z tabulky.tag_name
Literál
STRING
. Musítag_name
být jedinečný v tabulce nebo sloupci.
-
Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a novější
Přidá, změní nebo zahodí strategii clusteringu pro tabulku Delta Lake.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
Platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší
pouze pro Unity Catalog
Změní spravovanou tabulku Delta Lake na požadované nastavení prediktivní optimalizace.
Ve výchozím nastavení, když jsou tabulky vytvářeny, je chování
INHERIT
ze schématu.Pokud je prediktivní optimalizace explicitně povolena nebo zděděna jako povolená, OPTIMIZE a VACUUM se automaticky vyvolají na tabulce, pokud to Azure Databricks považuje za vhodné. Další podrobnosti najdete v tématu Prediktivní optimalizace spravovaných tabulek v katalogu Unity.
Příklady
Informace o přidávání omezení a změnách sloupců v Delta Lake najdete v příslušné dokumentaci.
-- 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