Freigeben über


ALTER TABLE

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL Häkchen Databricks Runtime

Ändert das Schema oder die Eigenschaften einer Tabelle.

Informationen zu Typänderungen oder zum Umbenennen von Spalten in Delta Lake finden Sie unter Umschreiben der Daten.

Um den Kommentar in einer Tabelle zu ändern, können Sie auch COMMENT ON verwenden.

Verwenden Sie ALTER STREAMING TABLE zum Ändern von STREAMING TABLE.

Wenn die Tabelle zwischengespeichert wurde, löscht der Befehl zwischengespeicherte Daten der Tabelle und alle abhängigen Daten, die darauf verweisen. Der Cache wird beim nächsten Zugriff auf die Tabelle oder die abhängigen Daten verzögert gefüllt.

Hinweis

Wenn Sie einer vorhandenen Delta-Tabelle eine Spalte hinzufügen, können Sie keinen DEFAULT-Wert definieren. Alle Spalten, die Delta-Tabellen hinzugefügt werden, werden als NULL für vorhandene Zeilen behandelt. Nachdem Sie eine Spalte hinzugefügt haben, können Sie optional einen Standardwert für die Spalte definieren, dies wird jedoch nur für neue Zeilen angewendet, die in die Tabelle eingefügt wurden. Verwenden Sie die folgende Syntax:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Bei Fremdtabellen können Sie nur ALTER TABLE SET OWNER und ALTER TABLE RENAME TO ausführen.

Erforderliche Berechtigungen

Wenn Sie Unity Catalog verwenden, müssen Sie über die MODIFY-Berechtigung für Folgendes verfügen:

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • Ändern von PREDICTIVE OPTIMIZATION

Für alle anderen Vorgänge müssen Sie Eigentümer der Tabelle sein.

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}

Parameter

  • table_name

    Gibt die Tabelle an, die geändert wird. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten. Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.

  • RENAME TOto_table_name

    Benennt die Tabelle innerhalb desselben Schemas um.

    • to_table_name

      Gibt den neuen Tabellennamen an. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

  • ADD COLUMN

    Fügt der Tabelle mindestens eine Spalte hinzu.

  • ALTER COLUMN

    Ändert eine Eigenschaft oder die Position einer Spalte.

  • DROP COLUMN

    Legen Sie eine oder mehrere Spalten oder Felder in einer Delta Lake-Tabelle ab.

  • RENAME COLUMN

    Benennt eine Spalte oder ein Feld in einer Delta Lake-Tabelle um.

  • ADD CONSTRAINT

    Fügt der Tabelle eine CHECK-Einschränkung, Fremdschlüssel- (Information) oder Primärschlüsseleinschränkung (Information) hinzu.

    Fremdschlüssel und Primärschlüssel werden nur für Tabellen in Unity Catalog unterstützt, nicht im hive_metastore-Katalog.

  • DROP CONSTRAINT

    Löscht eine Primärschlüssel- oder Fremdschlüsseleinschränkung oder CHECK-Einschränkung aus der Tabelle.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Gilt für: Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 14.1 und höher

    Entfernt ein Feature aus einer Delta Lake-Tabelle.

    Das Entfernen von Features, die sowohl Reader als auch Writer betreffen, erfordert einen zweistufigen Prozess:

    Weitere Informationen finden Sie unter Was sind Tabellenfeatures?.

    • feature_name

      Der Name eines Features in Form eines STRING-Literals oder Bezeichners, der von Azure Databricks verstanden und in der Tabelle unterstützt werden muss.

      Unterstützte feature_names sind:

      • ‘deleteVectors’ oder deletionvectors
        • ‘v2Checkpoint’ oder v2checkpoint

      Wenn das Feature nicht in der Tabelle vorhanden ist, löst Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT aus.

    • TRUNCATE HISTORY

      Optional können Sie die zweite Phase des Ablegens einer Lese-plus-Writer-Funktion nach 24 Stunden initiieren, indem Sie den Tabellenverlauf abschneiden, bis der Aufrufbefehl ausgeführt wurde.

      Durch das Abschneiden des Tabellenverlaufs können Sie DESCRIBE HISTORY ausführen und Zeitreisenabfragen ausführen.

  • ADD PARTITION

    Fügt der Tabelle eine oder mehrere Partitionen hinzu.

  • DROP PARTITION

    Entfernt eine oder mehrere Partitionen aus der Tabelle.

  • PARTITION … SET LOCATION

    Legt den Ort einer Partition fest.

  • RENAME PARTITION

    Ersetzt die Schlüssel einer Partition.

  • RECOVER PARTITIONS

    Weist Azure Databricks an, den Speicherort der Tabelle zu überprüfen und der Tabelle alle Dateien hinzuzufügen, die dem Dateisystem direkt hinzugefügt wurden.

  • SETROW FILTER-Klausel

    Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 12.2 LTS und höher Häkchen gesetzt ja Nur Unity Catalog

    Fügt der Tabelle eine Zeilenfilterfunktion hinzu. Alle zukünftigen Abfragen der Tabelle erhalten eine Teilmenge der Zeilen, in denen die Funktion als boolescher WAHR ausgewertet wird. Dies kann für eine fein abgestufte Zugriffssteuerung nützlich sein, bei der die Funktion die Identität oder Gruppenmitgliedschaften der aufrufenden Benutzer überprüfen kann, um zu entscheiden, ob bestimmte Spalten gefiltert werden sollen.

  • DROP ROW FILTER

    Gilt für: Häkchen gesetzt ja Nur Unity Catalog

    Löscht den Zeilenfilter aus der Tabelle, sofern vorhanden. Zukünftige Abfragen geben alle Zeilen aus der Tabelle ohne automatische Filterung zurück.

  • SET TBLPROPERTIES

    Legt eine oder mehrere benutzerdefinierte Eigenschaften fest oder setzt diese zurück.

  • UNSET TBLPROPERTIES

    Entfernt eine oder mehrere benutzerdefinierte Eigenschaften.

  • SET LOCATION

    Verschiebt den Speicherort einer Tabelle.

    SET LOCATION path
    
    • LOCATION path

      path muss ein STRING-Literal sein. Gibt den neuen Speicherort für die Tabelle an.

      Dateien am ursprünglichen Speicherort werden nicht an den neuen Speicherort verschoben.

  • [ SET ] OWNER TOprincipal

    Überträgt den Besitz der Tabelle an principal.

    Gilt für: Häkchen ja Databricks SQL Häkchen Databricks Runtime 11.3 LTS und höher

    SET ist als optionales Schlüsselwort zulässig.

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

    Gilt für: Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 13.3 LTS und höher

    Wenden Sie Tags auf die Tabelle an. Sie benötigen die Berechtigung APPLY TAG, um Tags zur Tabelle hinzufügen zu können.

    • tag_name

      Ein STRING-Literal. tag_name muss innerhalb der Tabelle oder Spalte eindeutig sein.

    • tag_value

      Ein STRING-Literal.

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

    Gilt für: Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 13.3 LTS und höher

    Entfernen Sie Tags aus der Tabelle. Sie benötigen die Berechtigung APPLY TAG, um Tags aus der Tabelle entfernen zu können.

    • tag_name

      Ein STRING-Literal. tag_name muss innerhalb der Tabelle oder Spalte eindeutig sein.

  • CLUSTER BY-Klausel

    Gilt für: Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 13.3 LTS und höher

    Fügt die Gruppierungstrategie für eine Delta Lake-Tabelle hinzu, ändert sie oder verwirft sie.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 12.2 LTS und höher durch Häkchen mit „Ja“ markiert Nur Unity Catalog

    Wichtig

    Dieses Feature befindet sich in der Public Preview.

    Ändert die verwaltete Delta Lake-Tabelle in die gewünschte Einstellung für die prädiktive Optimierung.

    Wenn Tabellen erstellt werden, wird standardmäßig aus dem Schema geerbt (INHERIT).

    Wenn die prädiktive Optimierung explizit aktiviert oder als aktiviert vererbt wird, werden OPTIMIZE und VACUUM automatisch für die Tabelle aufgerufen, wenn Azure Databricks dies für angemessen hält. Weitere Details finden Sie unter Prädiktive Optimierung für verwaltete Unity Catalog-Tabellen.

Beispiele

Beispiele zum Hinzufügen von Einschränkungen und zum Ändern von Spalten in Delta Lake finden Sie hier:

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