ALTER TABLE Klauzule COLUMN
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 COLUMN
- PŘIDAT SLOUPEC
- DROP 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 považují za NULL
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
Syntaxe
{ ADD [ COLUMN | COLUMNS ]
( { { column_identifier | field_name } data_type
[ 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ý.
AFTER name
Není-liFIRST
zadán sloupec nebo pole, bude připojen 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ý.
DEFAULT default_expression
Platí pro: Databricks SQL Databricks Runtime 11.3 LTS a vyšší
DEFAULT
Definuje hodnotu pro sloupec, který se používá,INSERT
aMERGE ... INSERT
pokud sloupec není zadaný.Pokud není zadána žádná výchozí hodnota,
DEFAULT NULL
je implicitní pro sloupce s možnou hodnotou null.default_expression
mohou se skládat z literálů a integrovaných funkcí nebo operátorů SQL s výjimkou:- Agregační funkce
- Analytické funkce oken
- Funkce okna řazení
- Funkce generátoru hodnotných tabulek
default_expression
nesmí obsahovat žádný poddotaz.DEFAULT
podporuje se proCSV
,JSON
PARQUET
, aORC
zdroje.-
Určuje datový typ sloupce nebo pole. Ne všechny datové typy podporované službou Azure Databricks jsou podporovány všemi zdroji dat.
COMMENT comment
Volitelný
STRING
literál 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.
FIRST
Pokud zadáte sloupec, přidá se jako první sloupec tabulky nebo se pole přidá jako první pole v obsahující struktuře.
AFTER
identifikátorPokud zadáte sloupec nebo pole, bude přidán okamžitě za pole nebo sloupec
identifier
.-
Platí pro: Databricks SQL Databricks Runtime 12.2 LTS a vyšší pouze katalog Unity
Dů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 členství v identitě nebo skupině vyvolání uživatele a určit, jestli se má hodnota redakce provést.
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 |
SET { MASK clause } |
DROP MASK |
SET TAGS clause |
UNSET TAGS clause } }
Parametry
-
Název sloupce, který se má změnit.
-
Plně kvalifikovaný název pole, které se má změnit. Musí existovat všechny součásti cesty k vnořenému poli.
COMMENT comment
Změní popis
column_name
sloupce.comment
musí býtSTRING
literál.FIRST
neboAFTER
identifikátorPřesune sloupec z aktuální pozice na přední (
FIRST
) nebo okamžitouAFTER
identifier
. Tato klauzule se podporuje pouze v případě, žetable_name
se jedná o tabulku Delta.TYPE
data_typePlatí pro: Databricks SQL Databricks Runtime 15.2 a vyšší
Změní datový typ
column_name
sloupce.Tato klauzule se podporuje pouze v případě, že
table_name
se jedná o tabulku Delta.Všechny tabulky Delta podporují následující změny typu:
- Zvětšení velikosti
VARCHAR
sloupce, například odVARCHAR(5)
doVARCHAR(10)
- Změna typu
CHAR
sloupce na sloupecVARCHAR
, například zCHAR(5)
naVARCHAR(5)
- Změna typu
CHAR
sloupce naVARCHAR
STRING
, například zVARCHAR(10)
doSTRING
.
Následující změny typu jsou podporovány u tabulek Delta s nastavenými
delta.enableTypeWidening
natrue
:Důležité
Tato funkce je ve verzi Public Preview v Databricks Runtime 15.2 a vyšší.
Source type Podporované širší typy BYTE
SHORT
,INT
,BIGINT
, ,DECIMAL
DOUBLE
SHORT
INT
,BIGINT
, ,DECIMAL
DOUBLE
INT
BIGINT
, ,DECIMAL
DOUBLE
BIGINT
DECIMAL
,DOUBLE
FLOAT
DOUBLE
DECIMAL
DECIMAL
s větší přesností a škálovánímDATE
TIMESTAMP_NTZ
Podrobnější informace o rozšíření typu naleznete v tématu Rozšíření typu.
- Zvětšení velikosti
SET NOT NULL
neboDROP NOT NULL
Změní doménu platných hodnot sloupců tak, aby se vyloučily
SET NOT NULL
hodnoty null , nebo zahrnout 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 IDENTITY
Platí pro: Databricks SQL Databricks Runtime 10.4 LTS a vyšší
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
, kden
je 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 DEFAULT
Platí 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 NULL
potřebujete zadat hodnotu pro každou budoucíINSERT
operaci.SET DEFAULT default_expression
Platí pro: Databricks SQL Databricks Runtime 11.3 LTS a vyšší
DEFAULT
Definuje hodnotu pro sloupec, který se používá,INSERT
aMERGE ... INSERT
pokud sloupec není zadaný.Pokud není zadána
DEFAULT NULL
žádná výchozí hodnota pro sloupce s možnou hodnotou null.default_expression
mohou se skládat z literálů, integrovaných funkcí SQL nebo operátorů s výjimkou:- Agregační funkce
- Analytické funkce oken
- Funkce okna řazení
- Funkce generátoru hodnotných tabulek
default_expression
nesmí obsahovat poddotaz.DEFAULT
podporuje se proCSV
,JSON
ORC
, aPARQUET
zdroje.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 ne deterministické funkce, jako
rand
je nebocurrent_timestamp
hodnota se vypočítá jednou přiALTER TABLE
spuštění, a použije se jako konstanta pro před 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í.-
Platí pro: Databricks SQL Databricks Runtime 12.2 LTS a vyšší pouze katalog Unity
Dů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 členství v identitě nebo skupině vyvolání uživatele a určit, jestli se má hodnota redakce provést.
DROP MASK
Platí pro: Pouze katalog Unity
Dů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 TAG
oprávnění.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 vyšší
Odeberte značky ze sloupce. Musíte mít
APPLY TAG
oprávnění k odebrání značek ze sloupce.tag_name
Literál
STRING
. Musítag_name
bý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 tabulce Delta Lake.
Když zahodíte sloupec nebo pole, musíte vypustit závislá omezení kontroly 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 EXISTS
Když 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 11.3 LTS a vyšší
Přejmenuje sloupec nebo pole v tabulce Delta Lake.
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 zahodí. V případě cizích klíčů musíte vlastnit tabulku, na které je cizí klíč definován.
Požadavky najdete v tématu Přejmenování a vyřazení sloupců s mapováním sloupců 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 příklady ALTER TABLE.