Kommentar
Å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.
Kommandot ALTER TABLE stöds inte för temporära tabeller. Ett fel returneras om ALTER TABLE kommandot tillämpas på en tillfällig tabell. 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.
På sekundärtabeller 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 COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIESPREDICTIVE 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 TOto_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_namei samma katalog somtable_name. För andra tabellerto_table_namemåste vara inom samma schema somtable_name.Om
to_table_nameär okvalificerad är det implicit kvalificerat med det aktuella schemat.
> ALTER TABLE student RENAME TO student_info;-
-
Lägger till en eller flera kolumner i tabellen.
När du lägger till en kolumn i en befintlig Delta Lake-tabell kan du inte definiera ett
DEFAULTvärde. Alla kolumner som läggs till i Delta Lake-tabeller behandlas somNULLför befintliga rader. När du har lagt till en kolumn kan du definiera ett standardvärde för nya rader med hjälp avALTER COLUMN.> DESCRIBE StudentInfo; col_name data_type comment ----------------------- --------- ------- name string NULL rollno int NULL 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 -- Optionally set a default value for new rows > ALTER TABLE StudentInfo ALTER COLUMN LastName SET DEFAULT 'unknown';
-
Ändrar en egenskap eller platsen för en kolumn.
> DESCRIBE StudentInfo; col_name data_type comment ----------------------- --------- ------- name string NULL rollno int NULL LastName string NULL DOB timestamp NULL age int NULL > ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment"; -- After altering the column > DESCRIBE StudentInfo; col_name data_type comment ----------------------- --------- ----------- name string new comment rollno int NULL LastName string NULL DOB timestamp NULL age int NULLÄndra flera kolumner i en enda instruktion:
-- 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 -
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.
> ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName; -- After renaming the column > DESCRIBE StudentInfo; col_name data_type comment ----------------------- --------- ----------- FirstName string new comment rollno int NULL LastName string NULL DOB timestamp NULL age int NULL
-
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 COLLATIONcollation_nameGäller för:
Databricks SQL
Databricks Runtime 16.3 och senareÄndrar standardsortering av tabellen för nya
STRINGkolumner. 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 senareAzure Databricks rekommenderar att du använder Databricks Runtime 16.3 och senare för alla
DROP FEATUREkommandon, 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
checkpointProtectionskrivarfunktionen 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_nameNamnet på en funktion i form av en
STRINGliteral 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.
-- 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;-
Lägger till en eller flera partitioner i tabellen.
> 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 -- Adding multiple partitions to the table > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20); > SHOW PARTITIONS StudentInfo; partition --------- age=11 age=12 age=15 age=18 age=20 -
Tar bort en eller flera partitioner från tabellen.
> 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 -
Anger platsen för en partition.
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'; -
Ersätter nycklarna för en 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 -
Instruerar Azure Databricks att söka igenom tabellens plats och lägga till filer i tabellen som har lagts till direkt i filsystemet.
SETROW FILTERsatsgäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
endast Unity CatalogLä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 FILTERgäller för:
endast Unity CatalogSlä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.
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser'); -
Tar bort en eller flera användardefinierade egenskaper.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner'); SET SERDEGäller för:
Databricks RuntimeAnger klassen serializer/deserializer (SerDe) som används för att läsa och skriva data i en Hive-formattabell. Du kan också konfigurera SerDe-egenskaper med
WITH SERDEPROPERTIES.> 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 LOCATIONFlyttar platsen för en tabell.
SET LOCATION pathLOCATION pathpathmåste vara ettSTRINGliteralvärde. Anger den nya platsen för tabellen.Filer på den ursprungliga platsen flyttas inte till den nya platsen.
[ SET ] OWNER TOrektorÖverför ägarskapet för tabellen till
principal.Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senareSETtillåts som ett valfritt nyckelord.SET TAGS ( { tag_name = tag_value } [, ...] )Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senareAnvänd taggar i tabellen. Du måste ha
APPLY TAGbehörighet att lägga till taggar i tabellen.tag_name
En bokstavlig
STRING.tag_namemåste vara unikt i tabellen eller kolumnen.tag_value
En bokstavlig
STRING.
-- Applies three tags to the table named `test`. > ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3'); -- 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');UNSET TAGS ( tag_name [, ...] )Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senareTa bort taggar från tabellen. Du måste ha
APPLY TAGbehörighet att ta bort taggar från tabellen.tag_name
En bokstavlig
STRING.tag_namemåste vara unikt i tabellen eller kolumnen.
-- Removes three tags from the table named `test`. > ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3'); -- Removes three tags from table `main.schema1.test` column `col1`. > ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');-
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senareLägger till, ändrar eller släpper klustringsstrategin för en Delta Lake-tabell.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATIONgä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
INHERITenligt 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.
-- Enables predictive optimization for my_table > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Ytterligare exempel
För Delta Lake lägg till begränsningar och ändra kolumnexempel, se
Relaterade artiklar
- ADD CONSTRAINT -sats: Lägg till eller ta bort kontrollbegränsningar, primära nycklar och sekundärnycklar.
- ALTER MATERIALIZED VIEW: Syntax för att ändra materialiserade vyer.
- ALTER STREAMING TABLE: Syntax för att ändra strömningstabeller.
- ALTER TABLE ... COLUMN -sats: Fullständig syntax för ADD, ALTER, DROP och RENAME COLUMN.
- ALTER TABLE ... PARTITION: Fullständig syntax för att lägga till, släppa och byta namn på partitioner.
- Uppdatera tabellschema: Byt namn på eller ändra kolumntyper i en Delta-tabell.