ALTER TABLE

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Ändrar schemat eller egenskaperna för en tabell.

För typändringar eller byta namn på kolumner i Delta Lake, se skriva om data.

Om du vill ändra kommentaren i en tabell kan du också använda KOMMENTERA PÅ.

Om du vill ändra en STREAMING TABLEanvänder du ALTER STREAMING TABLE.

Om tabellen cachelagras rensar kommandot cachelagrade data i tabellen och alla dess beroenden som refererar till den. Cachen fylls lazily när tabellen eller de beroende används nästa gång.

Kommentar

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å sekundärtabeller kan du bara ALTER TABLE SET OWNER utföra och ALTER TABLE RENAME TO.

Behörigheter som krävs

Om du använder Unity Catalog måste du ha MODIFY behörighet att:

  • ÄNDRA KOLUMN
  • LÄGG TILL KOLUMN
  • SLÄPP KOLUMN
  • ANGE TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • ändra FÖRUTSÄGELSEOPTIMERING

Alla andra åtgärder kräver ägarskap för tabellen.

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}

Parametrar

  • Table_name

    Identifierar tabellen som ändras. Namnet får inte innehålla någon temporal specifikation. Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.

  • RENAME TOto_table_name

    Byter namn på tabellen inom samma schema.

  • LÄGG TILL KOLUMN

    Lägger till en eller flera kolumner i tabellen.

  • ÄNDRA KOLUMN

    Ändrar en egenskap eller platsen för en kolumn.

  • SLÄPP KOLUMN

    Släpp en eller flera kolumner eller fält i en Delta Lake-tabell.

  • BYT NAMN PÅ KOLUMN

    Byter namn på en kolumn eller ett fält i en Delta Lake-tabell.

  • LÄGG TILL VILLKOR

    Lägger till en kontrollbegränsning, villkor för informationsnyckel eller informationsbegränsning för primärnyckel i tabellen.

    Sekundärnycklar och primära nycklar stöds endast för tabeller i Unity Catalog, inte hive_metastore katalogen.

  • SLÄPP-BEGRÄNSNING

    Släpper en primärnyckel, sekundärnyckel eller kontrollbegränsning från tabellen.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 14.1 och senare

    Tar bort en funktion från en Delta Lake-tabell.

    Borttagning av funktioner som påverkar både läsare och författare kräver en process i två steg:

    Mer information finns i Vad är tabellfunktioner?

    • 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.

      Stöds feature_names :

      • "deletionVectors" eller deletionvectors
        • "v2Checkpoint" eller v2checkpoint

      Om funktionen inte finns i tabellen genererar Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • TRUNKERA HISTORIK

      Du kan också initiera den andra fasen av att släppa en läsare plus skrivare efter 24 timmar genom att trunkera tabellhistoriken till när anropskommandot kördes.

      Om du trunkerar tabellhistoriken kan du utföra DESCRIBE HISTORY och köra frågor om tidsresor.

  • LÄGG TILL PARTITION

    Lägger till en eller flera partitioner i tabellen.

  • SLÄPP PARTITION

    Släpper en eller flera partitioner från tabellen.

  • PARTITION... ANGE PLATS

    Anger platsen för en partition.

  • BYT NAMN PÅ PARTITION

    Ersätter nycklarna för en partition.

  • ÅTERSTÄLLA PARTITIONER

    Instruerar Azure Databricks att söka igenom tabellens plats och lägga till filer i tabellen som har lagts till direkt i filsystemet.

  • SETROW FILTER-sats

    Gäller endast för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja i Unity Catalog

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

    Lägger till en radfilterfunktion i tabellen. Alla framtida frågor från tabellen tar emot delmängden av dess rader som funktionen utvärderar till boolesk TRUE. Detta kan vara användbart för detaljerade åtkomstkontrollsyften där funktionen kan inspektera identitets- och/eller gruppmedlemskap för den anropande användaren för att avgöra om vissa rader ska filtreras.

  • DROP ROW FILTER

    Gäller endast för:markerad ja Unity Catalog

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

    Släpper radfiltret från tabellen, om det finns några. Framtida frågor returnerar alla rader från tabellen utan automatisk filtrering.

  • ANGE TBLPROPERTIES

    Anger eller återställer en eller flera användardefinierade egenskaper.

  • UNSET TBLPROPERTIES

    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 en STRING literal. Anger den nya platsen för tabellen.

      Filer på den ursprungliga platsen flyttas inte till den nya platsen.

  • [ SET ] OWNER TOprincipal

    Överför ägarskapet för tabellen till principal.

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 11.3 LTS och senare

    SET tillåts som ett valfritt nyckelord.

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    Gäller för:markerad ja Databricks SQL markerad ja 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 literal STRING. Måste tag_name vara unikt i tabellen eller kolumnen.

    • tag_value

      En literal STRING.

  • UNSET TAGS ( tag_name [, ...] )

    Gäller för:markerad ja Databricks SQL markerad ja 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 literal STRING. Måste tag_name vara unikt i tabellen eller kolumnen.

  • CLUSTER BY-sats

    Gäller för:markerad ja Databricks SQL markerad ja 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 endast för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja i Unity Catalog

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

    Ändrar den hanterade Delta Lake-tabellen till önskad inställning för förutsägelseoptimering.

    När tabeller skapas är beteendet som standard till INHERIT från schemat.

    När prediktiv optimering uttryckligen aktiveras eller ärvs som aktiverad så anropas OPTIMIZE och VACUUM automatiskt i tabellen enligt vad som anses lämpligt av Azure Databricks. Mer information finns i: Förutsägelseoptimering för Delta Lake.

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;