ALTER TABLE

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

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

Polecenie ALTER TABLE nie jest obsługiwane w przypadku tabel tymczasowych. Jeśli polecenie zostanie zastosowane do tabeli tymczasowej, zostanie zwrócony ALTER TABLE błąd. 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 leniwie wypełniona, gdy przy następnym dostępie będzie uzyskiwany dostęp do tabeli lub zależności.

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

Wymagane uprawnienia

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

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • PREDICTIVE OPTIMIZATION

Jeśli używasz Katalogu Unity, musisz mieć uprawnienia MANAGE lub posiadanie:

  • SET OWNER TO

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

Parametry

  • table_name

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

  • RENAME TO to_table_name

    Zmienia nazwę tabeli.

    • to_table_name

      Identyfikuje nową nazwę tabeli. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji.

      W przypadku tabel katalogu Unity, element to_table_name musi znajdować się w tym samym katalogu co table_name. W przypadku innych tabel element to_table_name musi znajdować się w tym samym schemacie co table_name.

      Jeśli to_table_name jest niekwalifikowany, jest domyślnie kwalifikowany przy użyciu obecnego schematu.

    > ALTER TABLE student RENAME TO student_info;
    
  • DODAJ COLUMN

    Dodaje do tabeli co najmniej jedną kolumnę.

    Podczas dodawania kolumny do istniejącej tabeli usługi Delta Lake nie można zdefiniować DEFAULT wartości. Wszystkie kolumny dodane do tabel usługi Delta Lake są traktowane jako NULL dla istniejących wierszy. Po dodaniu kolumny można opcjonalnie zdefiniować wartość domyślną dla nowych wierszy przy użyciu polecenia 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';
    

  • ZMIENIĆ COLUMN

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

    > 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
    

    Zmień wiele kolumn w jednej instrukcji:

    -- 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
    
  • UPUŚĆ COLUMN

    Usuń jedną lub więcej kolumn albo pól w tabeli Delta Lake.

  • ZMIEŃ NAZWĘ COLUMN

    Zmienia nazwę kolumny lub pola w tabeli Delta Lake.

    > 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

    Dodaje ograniczenie sprawdzania, informacyjne ograniczenie klucza obcego lub informacyjne ograniczenie klucza podstawowego do tabeli.

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

  • DEFAULT COLLATION nazwa_porządkowania

    Dotyczy:oznaczono tak Databricks SQL oznaczono tak Databricks Runtime 16.3 lub nowszego

    Zmienia domyślne sortowanie tabeli dla nowych kolumn STRING. Ta klauzula nie ma wpływu na istniejące kolumny. Aby zmienić sortowanie istniejącej kolumny, użyj ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

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

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Dotyczy:zaznaczone jako 'tak' Databricks Runtime 14.3 LTS i nowszych

    Wsparcie dla starszej wersji jest dostępne od środowiska Databricks Runtime 14.3 LTS. Aby uzyskać dokumentację starszej funkcjonalności, zobacz Funkcje usuwania tabeli Delta (starsza wersja).

    Dotyczy:oznaczono tak Databricks SQL oznaczono tak Databricks Runtime 16.3 lub nowszego

  • Usługa Azure Databricks zaleca używanie środowiska Databricks Runtime 16.3 lub nowszego dla wszystkich poleceń DROP FEATURE, które zastępuje poprzednie metody działania.

    Usuwa funkcjonalność z tabeli Delta Lake.

    Usunięcie funkcji może spowodować dodanie funkcji zapisywania checkpointProtection w protokole tabeli. Aby uzyskać więcej informacji, zobacz Drop Delta table features and Table features for protocol compatibility ( Usuwanie funkcji tabeli delty i funkcji tabel w celu zapewnienia zgodności protokołu).

    • feature_name

      Nazwa funkcji w formie literału STRING lub identyfikatora, która musi być zrozumiana przez Azure Databricks i wspierana na tabeli.

      Jeśli funkcja nie występuje w tabeli, usługa Azure Databricks zgłasza DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT.

    • Skróć historię

      Usuwanie funkcji przez obcięcie historii. Wymaga to dwuetapowego procesu:

Usunięcie cech przez skrócenie historii wymaga dwustopniowego procesu:

  • Pierwsze wywołanie czyści ślady funkcji i informuje o częściowym powodzeniu.

  • Następnie poczekaj, aż okres przechowywania zakończy się przed ponownym wykonaniem instrukcji, aby zakończyć usuwanie.

    Jeśli zainicjujesz drugie wywołanie zbyt wcześnie, Azure Databricks zwróci DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD lub DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST.

    Skrócenie historii tabeli ogranicza możliwość wykonywania DESCRIBE HISTORY i wykonywania zapytań dotyczących podróży czasowych.

    -- 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;
    
  • DODAJ PARTITION

    Dodaje jedną lub więcej partycji do tabeli.

    > 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
    
  • UPUŚĆ PARTITION

    Usuwa jedną lub więcej partycji z tabeli.

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

    Ustawia lokalizację partycji.

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • ZMIEŃ NAZWĘ PARTITION

    Zastępuje klucze partycji.

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

  • SET ROW FILTER klauzula

    Dotyczy:oznaczony jako tak Databricks SQL oznaczony jako tak Databricks Runtime 12.2 LTS i nowsze oznaczony jako tak tylko Unity Catalogu

    Dodaje do tabeli funkcję filtru wierszy. Wszystkie kolejne zapytania do tabeli uzyskują podzbiór wierszy, w których funkcja zwraca wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy filtrować niektóre wiersze.

  • DROP ROW FILTER

    Dotyczy:oznaczone jako tak tylko katalog Unity

    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.

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

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

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

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks Runtime

    Określa klasę serializatora/deserializatora (SerDe) używaną do odczytywania i zapisywania danych w tabeli w formacie Hive. Można również skonfigurować właściwości serde za pomocą polecenia 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

    Przenosi lokalizację tabeli.

    SET LOCATION path
    
    • LOCATION path

      path musi być dosłowną wartością STRING. Określa nową lokalizację tabeli.

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

  • [ SET ] OWNER TO główny

    Przenosi własność tabeli na principal.

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowsze

    SET jest dozwolone jako opcjonalne słowo kluczowe.

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

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowsze

    Dodaj tagi do tabeli. Musisz mieć APPLY TAG uprawnienia do dodawania tagów do tabeli.

    • tag_name

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

    • tag_value

      Dosłowny 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 [, ...] )

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowsze

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

    • tag_name

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

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

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowsze

    Dodaje, zmienia lub usuwa strategię klastrowania dla tabeli Delta Lake.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Dotyczy:oznaczony jako tak Databricks SQL oznaczony jako tak Databricks Runtime 12.2 LTS i nowsze oznaczony jako tak tylko Unity Catalogu

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

    Domyślnie, gdy tabele są tworzone, zachowanie polega na INHERIT z schematu.

    Gdy optymalizacja predykcyjna jest jawnie włączona lub dziedziczona jako włączona, OPTIMIZE i VACUUM zostaną automatycznie wywołane w tabeli, jeśli zostaną uznane za stosowne przez usługę Azure Databricks. Aby uzyskać więcej informacji, zobacz: Optymalizacja predykcyjna dla tabel zarządzanych przez katalog Unity.

    -- Enables predictive optimization for my_table
    > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
    

Dodatkowe przykłady

Aby uzyskać informacje na temat dodawania ograniczeń i modyfikowania kolumn w Delta Lake, zobacz