ALTER TABLE
Van toepassing op: Databricks SQL Databricks Runtime
Hiermee wijzigt u het schema of de eigenschappen van een tabel.
Zie de gegevens herschrijven voor het wijzigen van typen of het wijzigen van de naam van kolommen in Delta Lake.
Als u de opmerking in een tabel wilt wijzigen, kunt u ook COMMENT ON gebruiken.
Als u een STREAMING TABLE
wilt wijzigen, gebruikt u ALTER STREAMING TABLE.
Als de tabel in de cache is opgeslagen, worden met de opdracht gegevens in de cache van de tabel en alle afhankelijke gegevens gewist die ernaar verwijzen. De cache wordt lazily gevuld wanneer de tabel of de afhankelijke items de volgende keer worden geopend.
Notitie
Wanneer u een kolom aan een bestaande Delta-tabel toevoegt, kunt u geen DEFAULT
waarde definiëren. Alle kolommen die aan Delta-tabellen worden toegevoegd, worden behandeld als NULL
voor bestaande rijen. Nadat u een kolom hebt toegevoegd, kunt u desgewenst een standaardwaarde voor de kolom definiëren, maar dit wordt alleen toegepast op nieuwe rijen die in de tabel zijn ingevoegd. Gebruik de volgende syntaxis:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
In refererende tabellen kunt u alleen ALTER TABLE SET OWNER
ALTER TABLE RENAME TO
en .
Vereiste machtigingen
Als u Unity Catalog gebruikt, moet u gemachtigd zijn MODIFY
voor het volgende:
- ALTER COLUMN
- KOLOM TOEVOEGEN
- DROP COLUMN
- SET TBLPROPERTIES
- NIET-INSTELLEN TBLPROPERTIES
- VOORSPELLENDE OPTIMALISATIE wijzigen
Voor alle andere bewerkingen is het eigendom van de tabel vereist.
Syntaxis
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}
Parameters
-
Hiermee wordt de tabel geïdentificeerd die wordt gewijzigd. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND fout.
RENAME TO
to_table_nameWijzigt de naam van de tabel in hetzelfde schema.
-
Hiermee wordt de naam van de nieuwe tabel geïdentificeerd. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten.
-
-
Hiermee voegt u een of meer kolommen toe aan de tabel.
-
Hiermee wijzigt u een eigenschap of de locatie van een kolom.
-
Verwijder een of meer kolommen of velden in een Delta Lake-tabel.
-
Wijzigt de naam van een kolom of veld in een Delta Lake-tabel.
-
Hiermee voegt u een controlebeperking, informatieve refererende sleutelbeperking of informatieve primaire-sleutelbeperking toe aan de tabel.
Refererende sleutels en primaire sleutels worden alleen ondersteund voor tabellen in Unity Catalog, niet voor de
hive_metastore
catalogus. -
Hiermee wordt een primaire sleutel, refererende sleutel of controlebeperking uit de tabel verwijderd.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
Van toepassing op: Databricks SQL Databricks Runtime 14.1 en hoger
Hiermee verwijdert u een functie uit een Delta Lake-tabel.
Het verwijderen van functies die van invloed zijn op zowel lezers als schrijvers, vereist een proces in twee fasen:
De eerste aanroep wist alle sporen van de functie en informeert u over gedeeltelijk succes.
U moet vervolgens wachten totdat de bewaarperiode is verstreken en de instructie opnieuw uitvoeren om het verwijderen te voltooien.
Als u de tweede aanroep te vroeg start, genereert Azure Databricks DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD of DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Zie Wat zijn tabelfuncties? voor meer informatie.
feature_name
De naam van een functie in de vorm van een
STRING
letterlijke of id, die moet worden begrepen door Azure Databricks en moet worden ondersteund in de tabel.Ondersteund
feature_names
zijn:- 'deletionVectors' of
deletionvectors
- v2Checkpoint of
v2checkpoint
- v2Checkpoint of
Als de functie niet aanwezig is in de tabel, verhoogt Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
- 'deletionVectors' of
AFKAPPEN VAN GESCHIEDENIS
U kunt eventueel na 24 uur de tweede fase van het verwijderen van een functie reader-plus-writer initiëren door de tabelgeschiedenis af te kapen tot wanneer de aanroepopdracht werd uitgevoerd.
Als u de tabelgeschiedenis afkapt, kunt u DESCRIBE HISTORY uitvoeren en query's voor tijdreizen uitvoeren.
-
Voegt een of meer partities toe aan de tabel.
-
Hiermee verwijdert u een of meer partities uit de tabel.
-
Hiermee stelt u de locatie van een partitie in.
-
Vervangt de sleutels van een partitie.
-
Geeft Azure Databricks opdracht om de locatie van de tabel te scannen en bestanden toe te voegen aan de tabel die rechtstreeks aan het bestandssysteem zijn toegevoegd.
-
Van toepassing op: Alleen Databricks SQL Databricks Runtime 12.2 LTS en hoger dan Unity Catalog
Hiermee voegt u een rijfilterfunctie toe aan de tabel. Alle volgende query's voor de tabel ontvangen een subset van de rijen waarin de functie booleaanse WAAR oplevert. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of bepaalde rijen moeten worden gefilterd.
DROP ROW FILTER
Van toepassing op: alleen Unity Catalog
Hiermee wordt het rijfilter uit de tabel verwijderd, indien van toepassing. Toekomstige query's retourneren alle rijen uit de tabel zonder automatisch filteren.
-
Hiermee stelt u een of meer door de gebruiker gedefinieerde eigenschappen in of stelt u deze opnieuw in.
-
Hiermee verwijdert u een of meer door de gebruiker gedefinieerde eigenschappen.
SET LOCATION
Hiermee verplaatst u de locatie van een tabel.
SET LOCATION path
LOCATION path
path
moet eenSTRING
letterlijke naam zijn. Hiermee geeft u de nieuwe locatie voor de tabel.Bestanden op de oorspronkelijke locatie worden niet verplaatst naar de nieuwe locatie.
[ SET ] OWNER TO
principalHiermee wordt het eigendom van de tabel overgedragen naar
principal
.Van toepassing op: Databricks SQL Databricks Runtime 11.3 LTS en hoger
SET
is toegestaan als een optioneel trefwoord.SET TAGS ( { tag_name = tag_value } [, ...] )
Van toepassing op: Databricks SQL Databricks Runtime 13.3 LTS en hoger
Tags toepassen op de tabel. U moet gemachtigd zijn
APPLY TAG
om tags toe te voegen aan de tabel.tag_name
Een letterlijke .
STRING
Detag_name
naam moet uniek zijn binnen de tabel of kolom.tag_value
Een letterlijke .
STRING
UNSET TAGS ( tag_name [, ...] )
Van toepassing op: Databricks SQL Databricks Runtime 13.3 LTS en hoger
Verwijder tags uit de tabel. U moet gemachtigd zijn
APPLY TAG
om tags uit de tabel te verwijderen.tag_name
Een letterlijke .
STRING
Detag_name
naam moet uniek zijn binnen de tabel of kolom.
-
Van toepassing op: Databricks SQL Databricks Runtime 13.3 LTS en hoger
Hiermee wordt de clusterstrategie voor een Delta Lake-tabel toegevoegd, gewijzigd of verwijderd.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
Van toepassing op: Alleen Databricks SQL Databricks Runtime 12.2 LTS en hoger dan Unity Catalog
Belangrijk
Deze functie is beschikbaar als openbare preview.
Hiermee wijzigt u de beheerde Delta Lake-tabel in de gewenste instelling voor voorspellende optimalisatie.
Wanneer tabellen worden gemaakt, is het gedrag standaard afkomstig
INHERIT
van het schema.Wanneer voorspellende optimalisatie expliciet is ingeschakeld of overgenomen als OPTIMIZE en VACUUM , wordt automatisch aangeroepen in de tabel, zoals geschikt wordt geacht door Azure Databricks. Zie voor meer informatie: Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.
Voorbeelden
Zie voor Delta Lake beperkingen toevoegen en kolomvoorbeelden wijzigen
-- 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;