ALTER TABLE

Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime

Zmienia schemat lub właściwości tabeli.

Aby uzyskać informacje o zmianach typu lub zmianie nazw kolumn w usłudze Delta Lake, zobacz Ponowne zapisywanie danych.

Aby zmienić komentarz w tabeli, możesz również użyć opcji KOMENTARZ WŁ.

Aby zmienić element STREAMING TABLE, użyj funkcji ALTER STREAMING TABLE.

Jeśli tabela jest buforowana, polecenie czyści buforowane dane tabeli i wszystkie jej zależności, które się do niej odwołują. Pamięć podręczna zostanie wypełniona z opóźnieniem, gdy tabela lub zależności będą uzyskiwane przy następnym dostępie.

Uwaga

Podczas dodawania kolumny do istniejącej tabeli delty nie można zdefiniować DEFAULT wartości. Wszystkie kolumny dodane do tabel delty są traktowane jako NULL dla istniejących wierszy. Po dodaniu kolumny można opcjonalnie zdefiniować wartość domyślną dla kolumny, ale jest ona stosowana tylko dla nowych wierszy wstawionych do tabeli. Użyj następującej składni:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

W przypadku tabel obcych można wykonywać tylko ALTER TABLE SET OWNER operacje i ALTER TABLE RENAME TO.

Wymagane uprawnienia

Jeśli używasz wykazu aparatu Unity, musisz mieć MODIFY uprawnienia do:

  • ALTER COLUMN
  • DODAWANIE KOLUMNY
  • UPUŚĆ KOLUMNĘ
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • modyfikowanie OPTYMALIZACJI PREDYKCYJNEJ

Wszystkie inne operacje wymagają własności tabeli.

Składnia

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}

Parametry

  • Nazwa_tabeli

    Identyfikuje zmienianą tabelę. Nazwa nie może zawierać specyfikacji czasowej. Jeśli nie można odnaleźć tabeli usługi Azure Databricks, wystąpi błąd TABLE_OR_VIEW_NOT_FOUND .

  • RENAME TOto_table_name

    Zmienia nazwę tabeli w ramach tego samego schematu.

  • DODAWANIE KOLUMNY

    Dodaje do tabeli co najmniej jedną kolumnę.

  • ALTER COLUMN

    Zmienia właściwość lub lokalizację kolumny.

  • UPUŚĆ KOLUMNĘ

    Upuść co najmniej jedną kolumnę lub pola w tabeli usługi Delta Lake.

  • ZMIENIANIE NAZWY KOLUMNY

    Zmienia nazwę kolumny lub pola w tabeli usługi Delta Lake.

  • DODAWANIE OGRANICZENIA

    Dodaje ograniczenie sprawdzania, ograniczenie klucza obcego informacji lub ograniczenie klucza podstawowego informacyjnego do tabeli.

    Klucze obce i klucze podstawowe są obsługiwane tylko w przypadku tabel w wykazie aparatu Unity, a nie w wykazie hive_metastore .

  • OGRANICZENIE DROP

    Pomija ograniczenie klucza podstawowego, klucza obcego lub sprawdzania z tabeli.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 14.1 i nowsze

    Usuwa funkcję z tabeli usługi Delta Lake.

    Usunięcie funkcji, które mają wpływ zarówno na czytelników, jak i pisarzy, wymaga procesu dwuetapowego:

    Aby uzyskać szczegółowe informacje, zobacz funkcje tabeli.

    • feature_name

      Nazwa funkcji w postaci STRING literału lub identyfikatora, która musi być zrozumiała dla usługi Azure Databricks i obsługiwana w tabeli.

      Obsługiwane feature_names są następujące opisano:

      • "usuwanieVectors" lub deletionvectors
        • "v2Checkpoint" lub v2checkpoint

      Jeśli funkcja nie jest obecna w tabeli, usługa Azure Databricks zgłasza DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • TRUNCATE HISTORY

      Opcjonalnie umożliwia zainicjowanie drugiej fazy porzucania funkcji czytelnika i modułu zapisywania po 24 godzinach przez obcięcie historii tabeli do momentu wykonania polecenia wywołania.

      Obcięcie historii tabeli ogranicza możliwość wykonywania zapytań DOTYCZĄCYCH HISTORII OPISÓW i wykonywania zapytań dotyczących podróży czasowych.

  • DODAJ PARTYCJĘ

    Dodaje do tabeli co najmniej jedną partycję.

  • UPUŚĆ PARTYCJĘ

    Usuwa co najmniej jedną partycję z tabeli.

  • PARTYCJI... USTAW LOKALIZACJĘ

    Ustawia lokalizację partycji.

  • ZMIENIANIE NAZWY PARTYCJI

    Zastępuje klucze partycji.

  • ODZYSKIWANIE PARTYCJI

    Nakazuje usłudze Azure Databricks skanowanie lokalizacji tabeli i dodawanie wszelkich plików do tabeli, które zostały dodane bezpośrednio do systemu plików.

  • SETROW FILTER, klauzula

    Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 i nowszy check marked yes wykaz aparatu Unity

    Ważne

    Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

    Dodaje do tabeli funkcję filtru wierszy. Wszystkie przyszłe zapytania z tej tabeli otrzymają podzbiór wierszy, dla których funkcja oblicza wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość i/lub członkostwo w grupach wywoływanego użytkownika w celu podjęcia decyzji, czy filtrować niektóre wiersze.

  • DROP ROW FILTER

    Dotyczy:check marked yes Wykaz aparatu Unity

    Ważne

    Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

    Porzuca filtr wierszy z tabeli, jeśli istnieje. Przyszłe zapytania będą zwracać wszystkie wiersze z tabeli bez automatycznego filtrowania.

  • SET TBLPROPERTIES

    Ustawia lub resetuje co najmniej jedną właściwości zdefiniowaną przez użytkownika.

  • UNSET TBLPROPERTIES

    Usuwa co najmniej jedną właściwości zdefiniowaną przez użytkownika.

  • SET LOCATION

    Przenosi lokalizację tabeli.

    SET LOCATION path
    
    • LOCATION path

      path musi być literałem STRING . Określa nową lokalizację tabeli.

      Pliki w oryginalnej lokalizacji nie zostaną przeniesione do nowej lokalizacji.

  • [ SET ] OWNER TOGłówny

    Przenosi własność tabeli na principal.

    Dotyczy:check marked yes Databricks SQL Warehouse w wersji 2022.35 lub nowszej check marked yes databricks Runtime 11.2 lub nowszej

    SET jest dozwolone jako opcjonalne słowo kluczowe.

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

    Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 13.3 LTS i nowsze

    Zastosuj tagi do tabeli. Musisz mieć apply_tag uprawnienia do dodawania tagów do tabeli.

    • tag_name

      Literał STRING. Element tag_name musi być unikatowy w tabeli lub kolumnie.

    • tag_value

      Literał STRING.

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

    Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 13.3 LTS i nowsze

    Usuń tagi z tabeli. Musisz mieć apply_tag uprawnienia do usuwania tagów z tabeli.

    • tag_name

      Literał STRING. Element tag_name musi być unikatowy w tabeli lub kolumnie.

  • CLUSTER BY, klauzula

    Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 13.3 LTS i nowsze

    Dodaje, zmienia lub odrzuca strategię klastrowania dla tabeli usługi Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Dotyczy:check marked yes Tylko katalog aparatu Unity w usłudze Databricks SQL check marked yes Databricks Runtime 12.2 lub nowszym check marked yes

    Ważne

    Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

    Zmienia zarządzaną tabelę usługi Delta Lake na żądane ustawienie optymalizacji predykcyjnej.

    Domyślnie po utworzeniu tabel zachowanie polega na INHERIT użyciu schematu.

    Gdy optymalizacja predykcyjna jest jawnie włączona lub dziedziczona jako włączona optymalizacja ipróżnia , zostanie automatycznie wywołana w tabeli zgodnie z oczekiwaniami usługi Azure Databricks. Aby uzyskać więcej informacji, zobacz: Optymalizacja predykcyjna dla usługi Delta Lake.

Przykłady

Aby uzyskać informacje na temat dodawania ograniczeń i modyfikowania przykładów kolumn usługi Delta Lake, zobacz

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