Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Databricks SQL
Databricks Runtime
Ändrar schemat eller egenskaperna för en tabell.
För att byta typ eller byta namn på kolumner i Delta Lake, se för att skriva om data.
Om du vill ändra kommentaren i en tabell eller kolumn kan du också använda COMMENT ON.
Om du vill ändra en STREAMING TABLE
använder du ALTER STREAMING TABLE.
Om tabellen cachelagras rensar kommandot cachelagrade data i tabellen och alla dess beroenden som refererar till den. Cachen fylls på vid behov när tabellen eller de beroende åtkomst sker nästa gång.
Anmärkning
När du lägger till en kolumn i en befintlig Delta-tabell kan du inte definiera ett DEFAULT
värde. Alla kolumner som läggs till i Delta-tabeller behandlas som NULL
för befintliga rader. När du har lagt till en kolumn kan du definiera ett standardvärde för kolumnen, men detta tillämpas bara för nya rader som infogas i tabellen. Använd följande syntax:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
På externa tabeller kan du bara utföra ALTER TABLE SET OWNER
och ALTER TABLE RENAME TO
.
Behörigheter som krävs
Om du använder Unity Catalog måste du ha MODIFY
behörighet att:
ALTER COLUMN
ADD COLUMN
DROP COLUMN
SET TBLPROPERTIES
UNSET TBLPROPERTIES
- modifiera
PREDICTIVE OPTIMIZATION
Om du använder Unity Catalog måste du ha MANAGE
behörighet eller ägarskap för att:
SET OWNER TO
Alla andra åtgärder kräver ägarskap av tabellen.
Syntax
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 OWNER TO clause |
SET SERDE clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause |
PREDICTIVE OPTIMIZATION clause}
Parametrar
-
Identifierar tabellen som ändras. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation. Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.
RENAME TO
to_table_nameByter namn på tabellen.
-
Identifierar det nya tabellnamnet. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation.
För Unity Catalog-tabeller måste vara
to_table_name
i samma katalog somtable_name
. För andra tabellerto_table_name
måste vara inom samma schema somtable_name
.Om
to_table_name
är okvalificerad är det implicit kvalificerat med det aktuella schemat.
-
-
Lägger till en eller flera kolumner i tabellen.
-
Ändrar en egenskap eller platsen för en kolumn.
-
Släpp en eller flera kolumner eller fält i en Delta Lake-tabell.
-
Byter namn på en kolumn eller ett fält i en Delta Lake-tabell.
-
Lägger till en kontrollbegränsning, informationsbegränsning för främmande nyckel eller informationsprimärnyckelbegränsning i tabellen.
Främmande nycklar och primära nycklar stöds endast för tabeller i Unity Catalog, inte för
hive_metastore
-katalogen. DEFAULT COLLATION
collation_nameGäller för:
Databricks SQL
Databricks Runtime 16.3 och senare
Ändrar standardsortering av tabellen för nya
STRING
kolumner. Befintliga kolumner påverkas inte av den här satsen. Om du vill ändra sortering av en befintlig kolumn använder duALTER TABLE ... ALTER COLUMN ... COLLATE collation_name
.
-
Tar bort en primärnyckel, utländsk nyckel eller kontrollvillkor från tabellen.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
Gäller för:
Databricks Runtime 14.3 LTS och nyare
Äldre stöd för
DROP FEATURE
är tillgängligt från och med Databricks Runtime 14.3 LTS. Dokumentation om äldre funktioner finns i Drop Delta table features (legacy).Gäller för:
Databricks SQL
Databricks Runtime 16.3 och senare
Azure Databricks rekommenderar att du använder Databricks Runtime 16.3 och senare för alla
DROP FEATURE
kommandon, vilket ersätter det äldre beteendet.Tar bort en funktion från en Delta Lake-tabell.
Om du tar bort en funktion kan det leda till att
checkpointProtection
skrivarfunktionen läggs till i tabellprotokollet. Mer information finns i Drop Delta table features and Table features for protocol compatibility (Ta bort deltatabellfunktioner och Tabellfunktioner för protokollkompatibilitet).feature_name
Namnet på en funktion i form av en
STRING
literal eller identifierare, som måste förstås av Azure Databricks och stödjas i tabellen.Om funktionen inte finns i tabellen genererar Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.
TRUNKERA HISTORIKDATA
Borttagning av funktioner genom att trunkera historiken. Detta kräver en process i två steg:
Borttagningen av funktioner genom att trunkera historiken kräver en tvåstegsprocess:
Det första anropet rensar spår av funktionen och informerar dig om delvis framgång.
Vänta sedan tills kvarhållningsperioden är slut innan du kör instruktionen igen för att slutföra borttagningen.
Om du initierar det andra anropet för tidigt, utlöser Azure Databricks antingen DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD eller DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.
Att trunkera tabellhistoriken begränsar din möjlighet att utföra DESCRIBE HISTORY och köra frågor om tidsresor.
-
Lägger till en eller flera partitioner i tabellen.
-
Tar bort en eller flera partitioner från tabellen.
-
Anger platsen för en partition.
-
Ersätter nycklarna för en partition.
-
Instruerar Azure Databricks att söka igenom tabellens plats och lägga till filer i tabellen som har lagts till direkt i filsystemet.
SET
ROW FILTERsatsgäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
endast Unity Catalog
Lägger till en radfilterfunktion i tabellen. Alla efterföljande frågor till tabellen tar emot en delmängd av raderna där funktionen utvärderas till det booleska värdet SANT. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan inspektera identitets- eller gruppmedlemskap för den anropande användaren för att avgöra om vissa rader ska filtreras.
DROP ROW FILTER
gäller för:
endast Unity Catalog
Släpper radfiltret från tabellen, om det finns några. Framtida frågor returnerar alla rader från tabellen utan automatisk filtrering.
-
Anger eller återställer en eller flera användardefinierade egenskaper.
-
Tar bort en eller flera användardefinierade egenskaper.
SET LOCATION
Flyttar platsen för en tabell.
SET LOCATION path
LOCATION path
path
måste vara ettSTRING
literalvärde. Anger den nya platsen för tabellen.Filer på den ursprungliga platsen flyttas inte till den nya platsen.
[ SET ] OWNER TO
rektorÖverför ägarskapet för tabellen till
principal
.Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
SET
tillåts som ett valfritt nyckelord.SET TAGS ( { tag_name = tag_value } [, ...] )
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senare
Använd taggar i tabellen. Du måste ha
APPLY TAG
behörighet att lägga till taggar i tabellen.tag_name
En bokstavlig
STRING
.tag_name
måste vara unikt i tabellen eller kolumnen.tag_value
En bokstavlig
STRING
.
UNSET TAGS ( tag_name [, ...] )
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senare
Ta bort taggar från tabellen. Du måste ha
APPLY TAG
behörighet att ta bort taggar från tabellen.tag_name
En bokstavlig
STRING
.tag_name
måste vara unikt i tabellen eller kolumnen.
-
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senare
Lägger till, ändrar eller släpper klustringsstrategin för en Delta Lake-tabell.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
endast Unity Catalog
Ändrar den hanterade Delta Lake-tabellen till önskad inställning för förutsägelseoptimering.
Som standard, när tabeller skapas, är beteendet att utföra åtgärden
INHERIT
enligt scheman.När förutsägande optimering uttryckligen aktiveras eller ärvs som aktiverad kommer OPTIMIZE och VACUUM automatiskt att anropas på tabellen enligt vad Azure Databricks anser vara lämpligt. Mer information finns i: Förutsägelseoptimering för hanterade Unity Catalog-tabeller.
Exempel
För Delta Lake lägg till begränsningar och ändra kolumnexempel, se
-- 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;
-- Alter multiple columns in a single statement
-- 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