ALTER TABLE
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Módosítja egy tábla sémáját vagy tulajdonságait.
A Delta Lake-beli típusmódosítások vagy oszlopok átnevezéséért lásd az adatok újraírását.
Ha módosítani szeretné a megjegyzést egy táblán, a COMMENT ON parancsot is használhatja.
A módosításhoz használja az STREAMING TABLE
ALTER STREAMING TABLE parancsot.
Ha a tábla gyorsítótárazva van, a parancs törli a tábla gyorsítótárazott adatait és az arra hivatkozó összes függőt. A gyorsítótár lazán meg lesz töltve, amikor a tábla vagy a függők legközelebb hozzáférnek.
Feljegyzés
Ha oszlopot ad hozzá egy meglévő Delta-táblához, nem definiálhat DEFAULT
értéket. A Delta-táblákhoz hozzáadott összes oszlopot a rendszer a meglévő sorokhoz hasonlóan NULL
kezeli. Az oszlop hozzáadása után megadhat egy alapértelmezett értéket az oszlophoz, de ez csak a táblába beszúrt új sorokra vonatkozik. Alkalmazza a következő szintaxist:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
Idegen táblákon csak és .ALTER TABLE SET OWNER
ALTER TABLE RENAME TO
Szükséges engedélyek
A Unity-katalógus használata esetén a következő jogosultsággal kell rendelkeznie MODIFY
:
- OSZLOP MÓDOSÍTÁSA
- OSZLOP HOZZÁADÁSA
- DROP COLUMN
- Standard kiadás T TBLPROPERTIES
- UN STANDARD KIADÁS T TBLPROPERTIES
- PREDIKTÍV OPTIMALIZÁLÁS módosítása
Minden más művelethez a tábla tulajdonjoga szükséges.
Syntax
ALTER TABLE table_name
{ RENAME TO clause |
ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN 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}
Paraméterek
-
Azonosítja a módosítandó táblát. A név nem tartalmazhat időbeli specifikációt. Ha a tábla nem található, az Azure Databricks TABLE_OR_VIEW_NOT_FOUND hibát jelez.
RENAME TO
to_table_nameÁtnevezi a táblát ugyanazon a sémán belül.
-
Egy vagy több oszlopot ad hozzá a táblához.
-
Módosít egy tulajdonságot vagy egy oszlop helyét.
-
Egy vagy több oszlop vagy mező elvetése egy Delta Lake-táblában.
-
Egy Delta Lake-tábla oszlopának vagy mezőjének átnevezése.
-
Ellenőrző kényszert, információs idegenkulcs-kényszert vagy információs elsődlegeskulcs-kényszert ad hozzá a táblához.
Az idegen kulcsok és az elsődleges kulcsok csak a Unity Katalógusban lévő táblák esetében támogatottak, a
hive_metastore
katalógusban nem. -
Elvet egy elsődleges kulcsot, idegen kulcsot vagy ellenőrzési kényszert a táblából.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
A következőkre vonatkozik: Databricks SQL Databricks Runtime 14.1 vagy újabb
Eltávolít egy funkciót egy Delta Lake-táblából.
Az olvasókat és írókat egyaránt érintő funkciók eltávolításához két fázisú folyamat szükséges:
Az első hívás törli a funkció nyomait, és tájékoztatja a részleges sikerről.
Ezután meg kell várnia, amíg a megőrzési időszak véget ér, és újra végre kell hajtania az utasítást az eltávolítás befejezéséhez.
Ha túl korán kezdeményezi a második meghívást, az Azure Databricks DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD vagy DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
További részletekért lásd: Mik azok a táblafunkciók?
feature_name
Egy szolgáltatás neve konstans vagy azonosító formájában
STRING
, amelyet az Azure Databricksnek kell értelmeznie, és támogatnia kell a táblában.feature_names
Támogatottak a következők:- "deletionVectors" vagy
deletionvectors
- "v2Checkpoint" vagy
v2checkpoint
- "v2Checkpoint" vagy
Ha a szolgáltatás nem szerepel a táblázatban, az Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRE Standard kiadás NT-t emel.
- "deletionVectors" vagy
CSONKOLÁSI ELŐZMÉNYEK
Opcionálisan lehetővé teszi, hogy elindítsa az olvasó plusz író funkció 24 óra utáni elvetésének második fázisát úgy, hogy csonkolja a táblaelőzményeket a meghívási parancs végrehajtásakor.
A táblaelőzmények csonkolása korlátozza a LEÍRÁS ELŐZMÉNYEINEK végrehajtását és az időutazási lekérdezések végrehajtását.
-
Egy vagy több partíciót ad hozzá a táblához.
-
Egy vagy több partíció elvetése a táblából.
PARTÍCIÓ... Standard kiadás T LOCATION
Beállítja egy partíció helyét.
-
Lecseréli egy partíció kulcsait.
-
Utasítja az Azure Databrickset, hogy vizsgálja meg a tábla helyét, és adja hozzá a közvetlenül a fájlrendszerhez hozzáadott fájlokat a táblához.
-
A következőkre vonatkozik: Databricks SQL Databricks Runtime 12.2 LTS és a Unity Catalog felett csak
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Sorszűrő függvényt ad hozzá a táblához. A tábla minden jövőbeli lekérdezése megkapja annak a sornak a részhalmazát, amelynek a függvénye igaz logikai értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja a meghívó felhasználó identitását és/vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.
DROP ROW FILTER
Csak a Következőre vonatkozik: Unity Catalog
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Ha van ilyen, eltávolítja a sorszűrőt a táblából. A jövőbeli lekérdezések automatikus szűrés nélkül visszaadják a tábla összes sorát.
Standard kiadás T TBLPROPERTIES
Beállít vagy alaphelyzetbe állít egy vagy több felhasználó által definiált tulajdonságot.
UN STANDARD KIADÁS T TBLPROPERTIES
Eltávolít egy vagy több felhasználó által definiált tulajdonságot.
SET LOCATION
Áthelyezi a táblázat helyét.
SET LOCATION path
LOCATION path
path
literálnak kell lennieSTRING
. Megadja a tábla új helyét.Az eredeti helyen lévő fájlok nem lesznek áthelyezve az új helyre.
[ SET ] OWNER TO
FőA tábla tulajdonjogát a következőre
principal
továbbítja: .A következőkre vonatkozik: Databricks SQL Databricks Runtime 11.3 LTS és újabb
SET
választható kulcsszóként engedélyezett.SET TAGS ( { tag_name = tag_value } [, ...] )
A következőkre vonatkozik: Databricks SQL Databricks Runtime 13.3 LTS és újabb
Címkék alkalmazása a táblára. Rendelkeznie
apply_tag
kell engedéllyel ahhoz, hogy címkéket vegyen fel a táblába.tag_name
Egy literál
STRING
. Atag_name
táblának vagy oszlopnak egyedinek kell lennie.tag_value
Egy literál
STRING
.
UNSET TAGS ( tag_name [, ...] )
A következőkre vonatkozik: Databricks SQL Databricks Runtime 13.3 LTS és újabb
Távolítsa el a címkéket a táblából. Rendelkeznie
apply_tag
kell engedéllyel ahhoz, hogy eltávolítsa a címkéket a táblából.tag_name
Egy literál
STRING
. Atag_name
táblának vagy oszlopnak egyedinek kell lennie.
-
A következőkre vonatkozik: Databricks SQL Databricks Runtime 13.3 LTS és újabb
Hozzáadja, módosítja vagy elveti egy Delta Lake-tábla fürtözési stratégiáját.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
A következőkre vonatkozik: Databricks SQL Databricks Runtime 12.2 LTS és a Unity Catalog felett csak
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
A felügyelt Delta Lake-táblát a kívánt prediktív optimalizálási beállításra módosítja.
A táblák létrehozásakor alapértelmezés szerint a viselkedés
INHERIT
a sémából történik.Ha a prediktív optimalizálás explicit módon engedélyezve van, vagy engedélyezett optimalizálásként öröklődik, és a RENDSZER automatikusan meghívja a vákuumot a táblára az Azure Databricks által megfelelőnek ítélt módon. További részletek: A Delta Lake prediktív optimalizálása.
Példák
A Delta Lake-hez adjon hozzá korlátozásokat, és módosítsa az oszlopokat, lásd:
-- 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;