ALTER TABLE

Gäller för:markerad ja Databricks SQL markerad ja 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 COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • 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

  • table_name

    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_name

    Byter namn på tabellen.

    • to_table_name

      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 som table_name. För andra tabeller to_table_name måste vara inom samma schema som table_name.

      Om to_table_name är okvalificerad är det implicit kvalificerat med det aktuella schemat.

    > ALTER TABLE student RENAME TO student_info;
    
  • Lägg till COLUMN

    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 DEFAULT värde. Alla kolumner som läggs till i Delta Lake-tabeller behandlas som NULL för befintliga rader. När du har lagt till en kolumn kan du definiera ett standardvärde för nya rader med hjälp av ALTER 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';
    

  • ÄNDRA COLUMN

    Ä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 COLUMN

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

  • BYT NAMN PÅ COLUMN

    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
    

  • ADD CONSTRAINT

    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_name

    Gäller för:markerad ja Databricks SQL markerad ja 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 du ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

    Tar bort en primärnyckel, utländsk nyckel eller kontrollvillkor från tabellen.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Gäller för:markerad med ja 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:markerad ja Databricks SQL markerad ja 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.

    -- 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ägg till PARTITION

    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
    
  • SLÄPP PARTITION

    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
    
  • PARTITION ... SET PLATS

    Anger platsen för en partition.

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • BYT NAMN PÅ PARTITION

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

  • SET ROW FILTERsats

    gäller för:checkad som ja Databricks SQL checkad som ja Databricks Runtime 12.2 LTS och senare checkad som ja 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:ikryssad ja 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.

  • SET TBLPROPERTIES

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

    > ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
    
  • AVSTÄLL TBLPROPERTIES

    Tar bort en eller flera användardefinierade egenskaper.

    > ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
    
  • SET SERDE

    Gäller för:markerat med ja Databricks Runtime

    Anger 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 LOCATION

    Flyttar platsen för en tabell.

    SET LOCATION path
    
    • LOCATION path

      path måste vara ett STRING 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: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 bokstavlig STRING. tag_name må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: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 bokstavlig STRING. tag_name må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');
    
  • CLUSTER BY klausul

    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 för:checkad som ja Databricks SQL checkad som ja Databricks Runtime 12.2 LTS och senare checkad som ja 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.

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