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
Přidá, upraví nebo zahodí sloupec v tabulce nebo pole ve sloupci v tabulce Delta Lake.
Požadována oprávnění
Pokud používáte Katalog Unity, musíte mít MODIFY oprávnění k:
ALTER COLUMNADD COLUMNDROP COLUMN
Všechny ostatní operace vyžadují vlastnictví tabulky.
Syntaxe
ALTER TABLE table_name
{ ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause }
Klauzule ADD COLUMN
Tato klauzule není podporována pro JDBC zdroje dat.
Přidá jeden nebo více sloupců do tabulky nebo pole do existujících sloupců v tabulce Delta Lake.
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 u existujících řádků považují za NULL. 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
Syntaxe
{ ADD [ COLUMN | COLUMNS ]
( { { column_identifier | field_name } data_type
[ COLLATE collation_name ]
[ DEFAULT clause ]
[ COMMENT comment ]
[ FIRST | AFTER identifier ]
[ MASK clause ] } [, ...] ) }
Parametry
-
Název sloupce, který se má přidat. Název musí být v tabulce jedinečný.
Není-li specifikován
FIRSTneboAFTER name, bude sloupec nebo pole připojeno na konci. -
Plně kvalifikovaný název pole, které se má přidat do existujícího sloupce. Musí existovat všechny součásti cesty k vnořenému poli a samotný název pole musí být jedinečný.
Chcete-li přidat pole do struktur vnořených do
ARRAYneboMAPtypů, použijte následující speciální názvy:-
ELEMENTpřejděte na prvekARRAY. -
KEYpřejděte naMAPklíč. -
VALUEa přejděte naMAPhodnotu.
Příklad:
phonenumbers.element.countrycodePřidá polecountrycodedo každého prvkuphonenumberspole. -
DEFAULT default_expressionPlatí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyššíDefinuje hodnotu pro
DEFAULTsloupec, která se používá naINSERTaMERGE ... INSERT, pokud sloupec není zadaný. VšechnySTRINGliterály aSTRINGfunkce ve výchozím výrazu budou používat kolaciUTF8_BINARY.Pokud není zadána žádná výchozí hodnota,
DEFAULT NULLje implicitní pro sloupce s možnou hodnotou null.default_expressionmohou se skládat z literálů a integrovaných funkcí nebo operátorů SQL s výjimkou:- Agregační funkce
- Analytické funkce oken
- Hodnocení okenních funkcí
- Funkce generátoru hodnotných tabulek
default_expressionnesmí obsahovat žádný poddotaz.DEFAULTpodporuje se proCSV,JSONPARQUET, aORCzdroje.-
Určuje datový typ sloupce nebo pole. Ne všechny datové typy podporované službou Azure Databricks jsou podporovány všemi zdroji dat.
COLLATEcollation_namePro
data_typeSTRINGvolitelně určuje kolaci, která se má použít se sloupcem nebo polem. Není-li zadáno jinak, platí kolaceUTF8_BINARY.COMMENT commentVolitelný
STRINGtextový popis popisující přidaný sloupec nebo pole.Pokud chcete přidat komentář vygenerovaný AI pro sloupec tabulky nebo tabulky spravované katalogem Unity, přečtěte si téma Přidání komentářů generovaných AI do objektů katalogu Unity.
FIRSTPokud zadáte sloupec, přidá se jako první sloupec tabulky nebo se pole přidá jako první pole v obsahující struktuře.
AFTERidentifikátorPokud je sloupec nebo pole zadáno, bude přidán okamžitě za pole nebo sloupec
identifier.-
Platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší
platí pouze pro Unity CatalogDůležité
Tato funkce je ve verzi Public Preview.
Přidá funkci masky sloupce pro anonymizaci citlivých dat. Všechny následné dotazy z tohoto sloupce obdrží výsledek vyhodnocení této funkce místo původní hodnoty sloupce. To může být užitečné pro jemně odstupňované účely řízení přístupu, kdy funkce může zkontrolovat identitu nebo členství ve skupině uživatele, který funkci volá, a určit, zda má být hodnota upravena.
Klauzule ALTER COLUMN
Platí pro:
Databricks SQL
Databricks Runtime
Změní vlastnost nebo umístění sloupce.
Syntaxe
{ ALTER | CHANGE } [ COLUMN ]
{ { column_identifier | field_name }
{ COMMENT comment |
{ FIRST | AFTER column_identifier } |
{ SET | DROP } NOT NULL |
TYPE data_type |
SET DEFAULT clause |
DROP DEFAULT |
SYNC IDENTITY }
[, ... ]
Před Databricks Runtime 16.3 klauzule nepodporuje změnu více sloupců v jedné klauzuli.
{ ALTER | CHANGE } [ COLUMN ]
{ column_identifier | field_name }
{ SET { MASK clause } |
DROP MASK |
SET TAGS clause |
UNSET TAGS clause }
Parametry
-
Název sloupce, který má být změněn.
Pokud se na identifikátor sloupce odkazuje více než jednou, Azure Databricks vyvolá NOT_SUPPORTED_CHANGE_SAME_COLUMN.
-
Plně kvalifikovaný název pole které se má změnit. Všechny součásti cesty k vnořenému poli musí existovat.
Pokud se na název pole odkazuje více než jednou, Azure Databricks vyvolá NOT_SUPPORTED_CHANGE_SAME_COLUMN.
COMMENT commentZmění popis
column_namesloupce.commentmusí býtSTRINGliterál.FIRSTneboAFTERidentifikátorPřesune sloupec z aktuální pozice na začátek (
FIRST) nebo přímo předAFTERidentifier. Tato klauzule se podporuje pouze v případě, žetable_namese jedná o tabulku Delta.TYPEdatový_typPlatí pro:
Databricks SQL
Databricks Runtime 15.2 a vyššíZmění datový typ
column_namesloupce.Tato klauzule se podporuje pouze v případě, že
table_namese jedná o tabulku Delta.Všechny tabulky Delta podporují následující změny typu:
- Zvětšení velikosti
VARCHARsloupce, například odVARCHAR(5)doVARCHAR(10) - Změna typu
CHARsloupce na sloupecVARCHAR, například zCHAR(5)naVARCHAR(5) - Změna typu
CHARsloupce naVARCHARSTRING, například zVARCHAR(10)doSTRING.
Následující změny typu jsou podporovány u tabulek Delta s nastavenými
delta.enableTypeWideningnatrue:Důležité
Tato funkce je ve verzi Public Preview v Databricks Runtime 15.2 a novějších.
Typ zdroje Podporované širší typy BYTESHORT,INT,BIGINT, ,DECIMALDOUBLESHORTINT,BIGINT, ,DECIMALDOUBLEINTBIGINT, ,DECIMALDOUBLEBIGINTDECIMAL,DOUBLEFLOATDOUBLEDECIMALDECIMALs větší přesností a škálovánímDATETIMESTAMP_NTZPodrobnější informace o rozšíření typu naleznete v tématu Rozšíření typu.
- Zvětšení velikosti
SET NOT NULLneboDROP NOT NULLZmění doménu platných hodnot sloupců, aby vyloučila hodnoty null
SET NOT NULL, nebo zahrnula hodnoty nullDROP NOT NULL. Tato možnost je podporovaná jenom pro tabulky Delta Lake. Delta Lake zajistí platnost omezení pro všechna existující a nová data.SYNC IDENTITYPlatí pro:
Databricks SQL
Databricks Runtime 10.4 LTS a novějšíSynchronizujte metadata sloupce identity se skutečnými daty. Když do sloupce identity napíšete vlastní hodnoty, nemusí být v souladu s metadaty. Tato možnost vyhodnotí stav a aktualizuje metadata tak, aby byla konzistentní se skutečnými daty. Po tomto příkazu začne další automaticky přiřazená hodnota identity od
start + (n + 1) * step, kdenje nejmenší hodnota, která splňujestart + n * step >= max()(pro pozitivní krok).Tato možnost je podporovaná pouze pro sloupce identit v tabulkách Delta Lake.
DROP DEFAULTPlatí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyššíOdebere výchozí výraz ze sloupce. Pro sloupce s možnou hodnotou null je to ekvivalentní
SET DEFAULT NULL. U sloupců definovaných pomocíNOT NULLpotřebujete zadat hodnotu pro každou budoucíINSERToperaci.SET DEFAULT default_expressionPlatí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyššíDefinuje hodnotu pro
DEFAULTsloupec, která se používá naINSERTaMERGE ... INSERT, pokud sloupec není zadaný.Pokud není zadána žádná výchozí hodnota, je pro sloupce s možnou hodnotou null
DEFAULT NULLpoužita.default_expressionmohou se skládat z literálů, integrovaných funkcí SQL nebo operátorů s výjimkou:- Agregační funkce
- Analytické funkce oken
- Hodnocení okenních funkcí
- Funkce generátoru hodnotných tabulek
default_expressionnesmí obsahovat poddotaz.DEFAULTpodporuje se proCSV,JSONORC, aPARQUETzdroje.Když definujete výchozí hodnotu pro nově přidaný sloupec, použije se výchozí hodnota pro všechny existující řádky. Pokud výchozí hodnota zahrnuje nedeterministickou funkci, jako je
randnebocurrent_timestamp, hodnota se vypočítá jednou, když jeALTER TABLEspuštěn, a použije se jako konstanta na předem existující řádky. U nově vložených řádků se výchozí výraz spustí jednou za řádky.Pokud nastavíte výchozí hodnotu pomocí
ALTER COLUMN, stávající řádky se touto změnou neovlivní.SETKlauzule MASKPlatí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší
platí pouze pro Unity CatalogDůležité
Tato funkce je ve verzi Public Preview.
Přidá funkci masky sloupce pro anonymizaci citlivých dat. Všechny následné dotazy z tohoto sloupce obdrží výsledek vyhodnocení této funkce místo původní hodnoty sloupce. To může být užitečné pro jemně odstupňované účely řízení přístupu, kdy funkce může zkontrolovat identitu nebo členství ve skupině uživatele, který funkci volá, a určit, zda má být hodnota upravena.
DROP MASKPlatí pro:
Pouze katalog UnityDůležité
Tato funkce je ve verzi Public Preview.
Odebere masku sloupce pro tento sloupec( pokud existuje). Budoucí dotazy z tohoto sloupce obdrží původní hodnoty sloupce.
SET TAGS ( { tag_name = tag_value } [, ...] )Platí pro:
Databricks SQL
Databricks Runtime 13.3 LTS a vyššíPoužijte značky u sloupce. Ke přidávání značek do sloupce potřebujete
APPLY TAGoprávnění.tag_name
Literál
STRING. Musítag_namebý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 vyššíOdeberte značky ze sloupce. Musíte mít
APPLY TAGoprávnění k odebrání značek ze sloupce.tag_name
Literál
STRING. Musítag_namebýt jedinečný v tabulce nebo sloupci.
Klauzule DROP COLUMN
Důležité
Tato funkce je ve verzi Public Preview.
Platí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyšší
Odstraňte jeden nebo více sloupců nebo polí v relaci.
Když odstraníte sloupec nebo pole, musíte také odstranit závislá kontrolní omezení a vygenerované sloupce.
Požadavky najdete v tématu Přejmenování a vyřazení sloupců s mapováním sloupců Delta Lake.
Syntaxe
DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )
Parametry
IF EXISTSKdyž zadáte
IF EXISTS, Azure Databricks ignoruje pokus o vyřazení sloupců, které neexistují. V opačném případě vyřazení neexistující sloupců způsobí chybu.-
Název existujícího sloupce
-
Plně kvalifikovaný název existujícího pole.
Klauzule RENAME COLUMN
Důležité
Tato funkce je ve verzi Public Preview.
Platí pro:
Databricks SQL
Databricks Runtime 10.4 LTS a novější
Tabulka Delta Lake, u které je povoleno mapování sloupců, přejmenuje sloupec nebo pole.
Při přejmenování sloupce nebo pole je také potřeba změnit závislá omezení kontroly a vygenerované sloupce. Všechny primární klíče a cizí klíče používající sloupec se odstraní. V případě cizích klíčů musíte vlastnit tabulku, na které je cizí klíč definován.
Více o požadavcích a postupu povolení mapování sloupců naleznete v tématu Přejmenování a odstranění sloupců s mapováním sloupců v Delta Lake.
Syntaxe
RENAME COLUMN { column_identifier TO to_column_identifier|
field_name TO to_field_identifier }
Parametry
-
Existující název sloupce.
-
Nový identifikátor sloupce. Identifikátor musí být v tabulce jedinečný.
-
Stávající plně kvalifikovaný název pole.
-
Nový identifikátor pole. Identifikátor musí být jedinečný v rámci místní struktury.
Příklady
Viz ALTER TABLE příklady.