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.
Dočasné tabulky podporují ALTER TABLE ... SET TBLPROPERTIES bezserverové ALTER TABLE ... UNSET TBLPROPERTIES výpočetní prostředky, Databricks Runtime 18.2 a novější a Databricks SQL 2026.15 a vyšší. V dočasných tabulkách nejsou podporovány další ALTER TABLE klauzule a vrací chybu. 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.
Cizí tabulky podporují omezenou sadu ALTER TABLE operací, včetně ALTER TABLE SET OWNER, ALTER TABLE RENAME TO, ALTER TABLE SET MANAGED { MOVE | COPY }, a ALTER TABLE SET EXTERNAL.
SET MANAGED a SET EXTERNAL vyžadují zahraniční tabulku federovanou pomocí Hive metastore a Glue Federation, a SET MANAGED také vyžaduje formát Delta Lake. Viz Cizí tabulky a Převod cizí tabulky na externí tabulku Unity Catalog.
Požadována oprávnění
Pokud používáte Katalog Unity, musíte mít MODIFY oprávnění k:
ALTER COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIES
Pokud používáte Unity katalog, musíte mít oprávnění nebo vlastnictví k MANAGE:
SET OWNER TOPREDICTIVE OPTIMIZATION
Všechny ostatní operace vyžadují vlastnictví tabulky, včetně SET MANAGED a .UNSET MANAGED
SET EXTERNALa forma cizí tabulky vyžadují SET MANAGEDCREATE také povolení na .EXTERNAL LOCATION Pro všechny předpoklady pro každou konverzi viz Předpoklady a Předpoklady.
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 EXTERNAL clause |
SET MANAGED clause |
UNSET MANAGED clause |
SET OWNER TO clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause |
REPLACE PARTITIONED BY WITH 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 TOto_table_namePřejmenuje tabulku.
-
Identifikuje nový název tabulky. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.
Pro tabulky
to_table_namekatalogu Unity musí být ve stejném katalogu jakotable_name. U jiných tabulekto_table_namemusí být ve stejném schématu jakotable_name.Pokud
to_table_namenení kvalifikovaný, je implicitně kvalifikován aktuálním schématem.
> ALTER TABLE student RENAME TO student_info;-
-
Přidá do tabulky jeden nebo více sloupců.
Když přidáte sloupec do existující tabulky Delta Lake, nemůžete definovat
DEFAULThodnotu. Všechny sloupce přidané do tabulek Delta Lake se považují zaNULLexistující řádky. Po přidání sloupce můžete volitelně definovat výchozí hodnotu pro nové řádky pomocí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';
-
Změní vlastnost nebo umístění sloupce.
> 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 NULLV jednom příkazu můžete změnit více sloupců:
-- 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 -
Odstraňte jeden nebo více sloupců nebo polí v tabulce Delta Lake.
-
Přejmenuje sloupec nebo pole v tabulce 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
-
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_metastorekatalog. DEFAULT COLLATIONcollation_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 FEATUREje 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 FEATUREpří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
checkpointProtectionv tabulkovém protokolu. Další informace naleznete v tématu Drop Delta table features and Protocol versions and table features.feature_nameNázev funkce ve formě
STRINGliterá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.
-- 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;-
Přidá do tabulky jeden nebo více oddílů.
> 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 -
Zahodí jednu nebo více partition z tabulky.
> 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 -
Nastaví umístění oddílu.
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'; -
Nahrazuje klíče oddílu.
> 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 -
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 CatalogPř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 FILTERPlatí pro:
Pouze katalog UnityPokud 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í.
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser'); ZRUŠIT NASTAVENÍ TBLPROPERTIES
Odebere jednu nebo více uživatelem definovaných vlastností.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');SET SERDEPlatí pro:
Databricks RuntimeUrčuje serializátor /deserializer (SerDe) třídy sloužící ke čtení a zápisu dat v tabulce Hive formátu. Můžete také nakonfigurovat vlastnosti SerDe pomocí
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 LOCATIONPřesune umístění tabulky.
SET LOCATION pathLOCATION pathpathmusí býtSTRINGliterá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 EXTERNAL [ DRY RUN ]Platí pro:
Databricks Runtime 17.3 a vyšší
ano Unity CatalogPřevádí cizí tabulku na externí tabulku Unity Catalog, přičemž zachovává historii a konfigurace tabulky, včetně názvu, nastavení, oprávnění a zobrazení. Podporováno pouze na zahraničních tabulkách federovaných pomocí Hive metastore a Glue Federation.
Vyžaduje
OWNERneboMANAGEpovolení na stole aCREATEpovolení na .EXTERNAL LOCATIONPro vrácení konverze zrušte tabulku. Azure Databricks jej při další synchronizaci katalogu znovu federuje jako cizí tabulku.
DRY RUNKontroluje, zda lze zdrojovou tabulku převést, aniž by ji převáděl. Příkaz se vrátí,
DRY_RUN_SUCCESSpokud lze tabulku převést.
Pro předpoklady a pokyny specifické pro formát viz Převod cizí tabulky na externí tabulku Unity Catalog.
-- Check whether a foreign table can be converted > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL DRY RUN; -- Convert a foreign table to an external table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET EXTERNAL;
SET MANAGEDPlatí na:
, Databricks Runtime 17.3 LTS a výše
, pouze Unity CatalogPřevádí externí nebo zahraniční tabulku Delta Lake z Unity Catalogu na tabulku spravovanou Unity Catalog. Konverze zachovává název tabulky, nastavení, oprávnění, zobrazení a historii.
Externí a cizí tabulky používají různé formy klauzule, jak je ukázáno v následující syntaxi:
SET MANAGED [ TRUNCATE UNIFORM HISTORY ] -- external tables SET MANAGED { MOVE | COPY } -- foreign tablesPro externí tabulky vynecháme
MOVEaCOPY. Pokud zahrneš některou z nich, Azure Databricks zvyšuje DELTA_ALTER_TABLE_SET_MANAGED_UNSUPPORTED_COPY_MOVE_SYNTAX.Pro cizí tabulky uveďme buď nebo
MOVECOPY. Pokud vynecháte obě možnosti, Azure Databricks zvyšuje DELTA_ALTER_TABLE_SET_MANAGED_COPY_OR_MOVE_REQUIRED. Pro výběr mezi těmito dvěma formami viz Výběr správného příkazu pro vaši zdrojovou tabulku.TRUNCATE UNIFORM HISTORYPlatí to pro externí tabulky, které mají zapnuté čtení Apache Iceberg . Pokud má tabulka zapnuté čtení Iceberg a vy tuto možnost vynecháte, Azure Databricks zvyšuje DELTA_ALTER_TABLE_SET_MANAGED_DOES_NOT_SUPPORT_UNIFORM_ICEBERG.
TRUNCATE UNIFORM HISTORYzkracuje historii ledovců UniForm a neodstraňuje historii jezera Delta. Zkrácení způsobuje krátkou dobu čtení a zápisu ledovce.MOVEPřevede cizí tabulku na spravovanou a zakáže přístup ke zdrojové tabulce v externím katalogu. Po konverzi selže přístup přes externí katalog a přístup založený na cestách, takže všichni čtenáři a autoři musí používat jmenný prostor Unity Catalog.
COPYPřevádí cizí tabulku na spravovanou bez úpravy nebo zakázání přístupu ke zdrojové tabulce v externím katalogu. Konverze kopíruje data do spravovaného úložiště, čímž vznikají dvě samostatné kopie dat. Jste zodpovědní za vypnutí čtení a zápisu do zdrojové tabulky a migraci pracovních zátěží do spravované tabulky.
Pro předpoklady, odhady výpadků a řešení problémů viz Převod externích nebo zahraničních tabulek Delta Lake na tabulky spravované v Unity Catalog.
-- Convert an external table > ALTER TABLE main.default.my_external_table SET MANAGED; -- Convert an external table that has Iceberg reads enabled > ALTER TABLE main.default.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY; -- Convert a foreign table and disable access to the source table > ALTER TABLE hms_federated_catalog.my_schema.my_table SET MANAGED MOVE;UNSET MANAGEDPlatí na:
, Databricks Runtime 17.3 LTS a výše
, pouze Unity CatalogVrátí tabuli
SET MANAGEDzpět na externí tabulku aktualizací metadat tabulky tak, aby ukazovala na původní externí lokaci. Azure Databricks uchovává zápisy provedené do spravované lokality po konverzi. U převedené externí tabulky můžete vrátit zpět do 14 dnů od konverze.UNSET MANAGED [ TRUNCATE UNIFORM HISTORY ]TRUNCATE UNIFORM HISTORYPlatí to pro tabulky, které mají zapnuté čtení Icebergu. Pokud má tabulka zapnuté Iceberg čtení a vynecháte tuto možnost, Azure Databricks se DELTA_ALTER_TABLE_UNSET_MANAGED_DOES_NOT_SUPPORT_UNIFORM zvýší.
Commity vytvořené mezi konverzí a rollbackem podporují cestování časem podle verzí, ale ne podle časového razítka.
Pro převedení cizí tabulky
MOVEzpět do cizí tabulky spusťteUNSET MANAGEDa poté zrušte výslednou externí tabulku, která se při další synchronizaci katalogu znovu federuje. Cizí tabulka konvertovaná s nepotřebujeCOPYUNSET MANAGED, protože konverze nechala zdrojovou tabulku neupravenou.Warning
Pokud jste převedli cizí tabulku s
MOVE, nerušte spravovanou tabulku před spuštěnímUNSET MANAGED. Pokud ho vyřadíte jako první, může to vést ke ztrátě dat nebo k nesrovnalosti.Pro úplné pokyny k návratu zpět viz Zpět převod řízené tabulky.
-- Roll a converted managed table back to an external table > ALTER TABLE main.default.my_managed_table UNSET MANAGED;[ SET ] OWNER TOhlavníPřevede vlastnictví tabulky na
principal.Platí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyššíSETje povolený jako volitelné klíčové slovo.Note
Změna vlastníka není dostupná u datových sad spravovaných kanálem pracovního prostoru.
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 TAGoprávnění k přidání značek do tabulky.tag_name
Literál
STRING. Musítag_namebýt jedinečný v tabulce nebo sloupci.tag_value
Literál
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 [, ...] )Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a novějšíOdstraňte značky z tabulky. Musíte mít
APPLY TAGoprávnění k odebrání značek z tabulky.tag_name
Literál
STRING. Musítag_namebýt jedinečný v tabulce nebo sloupci.
-- 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');-
Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a novějšíPřidá, změní nebo zahodí strategii clusteringu pro tabulku Delta Lake.
REPLACE PARTITIONED BY WITH CLUSTER BY [( <clustering_columns> ) | AUTO]Platí pro:
Databricks SQL
Databricks Runtime 18.1 a vyššíPřevede existující dělenou tabulku Delta Lake na likvidní clustering s minimálními výpadky čtečky a zapisovače. Klauzule
CLUSTER BYpřijímá explicitní sloupce clusteringu,AUTOdelegování výběru klíče na prediktivní optimalizaci nebo je možné vynechat pro použití existujících sloupců oddílů.{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONPlatí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší
pouze pro Unity CatalogZmění spravovanou tabulku Delta Lake na požadované nastavení prediktivní optimalizace.
Ve výchozím nastavení, když jsou tabulky vytvářeny, je chování
INHERITze 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.
-- Enables predictive optimization for my_table > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Další příklady
Informace o přidávání omezení a změnách sloupců v Delta Lake najdete v příslušné dokumentaci.
Související články
- ADD CONSTRAINT klauzule: Přidání nebo přetažení kontrolních omezení, primárních klíčů a cizích klíčů.
- ALTER MATERIALIZED VIEW: Syntaxe pro změnu materializovaných zobrazení.
- ALTER STREAMING TABLE: Syntaxe pro změnu streamovaných tabulek.
- ALTER TABLE ... COLUMN klauzule: Úplná syntaxe pro ADD, ALTER, DROP a RENAME COLUMN.
- ALTER TABLE ... PARTITION: Úplná syntaxe pro přidávání, vyřazení a přejmenování oddílů
- Aktualizujte schémata tabulek s vývojem schématu: Přejmenujte nebo změňte typy sloupců v tabulce Delta.
-
Převést externí nebo zahraniční tabulky Delta Lake na tabulky spravované v Unity Catalog: předpoklady, odhady výpadků a návrat zpět pro
SET MANAGEDaUNSET MANAGED. -
Převést cizí tabulku na externí tabulku Unity Catalog: Předpoklady a formátově specifické pokyny pro
SET EXTERNAL.