Aracılığıyla paylaş


ALTER TABLE

Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Bir tablonun şemasını veya özelliklerini değiştirir.

Delta Lake'te tür değişiklikleri veya sütunları yeniden adlandırmak için bkz . Verileri yeniden yazma.

Tablodaki açıklamayı değiştirmek için, COMMENT ON özelliğini de kullanabilirsiniz.

bir STREAMING TABLEöğesini değiştirmek için ALTER STREAMING TABLE kullanın.

Tablo önbelleğe alınırsa, komut tablonun önbelleğe alınmış verilerini ve ona başvuran tüm bağımlılarını temizler. Tabloya veya bağımlılara bir sonraki sefer erişildiğinde önbellek gevşek olarak doldurulur.

Not

Var olan delta tablosuna sütun eklediğinizde, değer DEFAULT tanımlayamazsınız. Delta tablolarına eklenen tüm sütunlar var olan satırlar için olarak NULL değerlendirilir. Sütun ekledikten sonra isteğe bağlı olarak sütun için varsayılan bir değer tanımlayabilirsiniz, ancak bu yalnızca tabloya eklenen yeni satırlar için uygulanır. Aşağıdaki sözdizimini kullanın:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

Yabancı tablolarda, yalnızca ALTER TABLE SET OWNER ve ALTER TABLE RENAME TOgerçekleştirebilirsiniz.

Gerekli izinler

Unity Kataloğu kullanıyorsanız şu izinlere sahip MODIFY olmanız gerekir:

  • ALTER COLUMN
  • SÜTUN EKLE
  • SÜTUNU BıRAK
  • TBLPROPERTIES'I AYARLAMA
  • TBLPROPERTIES'I KALDıRMA
  • PREDICTIVE OPTIMIZATION'i değiştirme

Diğer tüm işlemler tablonun sahipliğini gerektirir.

Sözdizimi

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}

Parametreler

  • table_name

    Değiştirilen tabloyu tanımlar. Ad bir zamansal belirtim içermemelidir. Tablo bulunamazsa Azure Databricks bir TABLE_OR_VIEW_NOT_FOUND hatası oluşturur.

  • RENAME TOto_table_name

    Tabloyu aynı şema içinde yeniden adlandırır.

  • SÜTUN EKLE

    Tabloya bir veya daha fazla sütun ekler.

  • ALTER COLUMN

    Bir özelliği veya sütunun konumunu değiştirir.

  • SÜTUNU BıRAK

    Delta Lake tablosuna bir veya daha fazla sütun veya alan bırakın.

  • SÜTUNU YENIDEN ADLANDıR

    Delta Lake tablosundaki bir sütunu veya alanı yeniden adlandırır.

  • KıSıTLAMA EKLE

    Tabloya denetim kısıtlaması, bilgi yabancı anahtar kısıtlaması veya bilgilendirme birincil anahtar kısıtlaması ekler.

    Yabancı anahtarlar ve birincil anahtarlar katalog için değil, yalnızca Unity Kataloğu'ndaki hive_metastore tablolar için desteklenir.

  • BıRAKMA KıSıTLAMASı

    Tablodan birincil anahtarı, yabancı anahtarı veya denetim kısıtlamasını bırakır.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 14.1 ve üzeri

    Delta Lake tablosundan bir özelliği kaldırır.

    Hem okuyucuları hem de yazarları etkileyen özelliklerin kaldırılması iki aşamalı bir işlem gerektirir:

    • İlk çağrı özelliğin tüm izlerini temizler ve kısmi başarı hakkında sizi bilgilendirmektedir.

    • Ardından bekletme süresi dolana kadar beklemeniz ve kaldırma işlemini tamamlamak için deyimini yeniden yürütmeniz gerekir.

      İkinci çağrıyı çok erken başlatırsanız Azure Databricks DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD veya DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST başlatır.

    Ayrıntılar için bkz. Tablo özellikleri nelerdir?

    • feature_name

      Azure Databricks tarafından anlaşılması ve tabloda desteklenmesi gereken değişmez değer veya tanımlayıcı biçimindeki STRING bir özelliğin adı.

      Desteklenenler feature_names :

      • 'deletionVectors' veya deletionvectors
        • 'v2Checkpoint' veya v2checkpoint

      Özellik tabloda yoksa Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT yükseltir.

    • KESME GEÇMIŞI

      İsteğe bağlı olarak, 24 saat sonra bir okuyucu-artı-yazıcı özelliğini bırakmanın ikinci aşamasını başlatmanıza olanak tanır ve tablo geçmişini çağırma komutunun yürütülme tarihine kadar kısaltır.

      Tablo geçmişinin kesilmesi, DESCRIBE HISTORY ve zaman yolculuğu sorguları yürütme yeteneğinizi sınırlar.

  • BÖLÜM EKLE

    Tabloya bir veya daha fazla bölüm ekler.

  • BÖLÜMÜ BıRAK

    Tablodan bir veya daha fazla bölüm bırakır.

  • BÖLÜM... KONUM AYARLA

    Bir bölümün konumunu ayarlar.

  • BÖLÜMÜ YENIDEN ADLANDıR

    Bölümün anahtarlarını değiştirir.

  • BÖLÜMLERI KURTARMA

    Azure Databricks'e tablonun konumunu taramasını ve doğrudan dosya sistemine eklenmiş tüm dosyaları tabloya eklemesini ister.

  • SETROW FILTER yan tümcesi

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Yalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri onay işareti evet olarak işaretlenmiş Unity Kataloğu

    Tabloya bir satır filtresi işlevi ekler. Tabloya gelen sonraki tüm sorgular, işlevin TRUE değerini değerlendirdiği satırların bir alt kümesini alır. Bu, işlevin belirli satırları filtreleyip filtrelemeyeceğini belirlemek için çağıran kullanıcının kimlik veya grup üyeliklerini incelediği ayrıntılı erişim denetimi amaçları için yararlı olabilir.

  • DROP ROW FILTER

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Yalnızca Unity Kataloğu

    Varsa, tablodan satır filtresini bırakır. Gelecekteki sorgular, otomatik filtreleme olmadan tablodaki tüm satırları döndürür.

  • TBLPROPERTIES'I AYARLAMA

    Bir veya daha fazla kullanıcı tanımlı özelliği ayarlar veya sıfırlar.

  • TBLPROPERTIES'I KALDıRMA

    Bir veya daha fazla kullanıcı tanımlı özelliği kaldırır.

  • SET LOCATION

    Tablonun konumunu taşır.

    SET LOCATION path
    
    • LOCATION path

      path değişmez değer STRING olmalıdır. Tablonun yeni konumunu belirtir.

      Özgün konumdaki dosyalar yeni konuma taşınmaz.

  • [ SET ] OWNER TOmüdür

    Tablonun sahipliğini öğesine principalaktarır.

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    SET isteğe bağlı anahtar sözcük olarak izin verilir.

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

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 LTS ve üzeri

    Tabloya etiket uygulama. Tabloya APPLY TAG etiket ekleme izniniz olmalıdır.

    • tag_name

      Değişmez değer STRING. tag_name tablo veya sütun içinde benzersiz olmalıdır.

    • tag_value

      Değişmez değer STRING.

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

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 LTS ve üzeri

    Tablodan etiketleri kaldırın. Tablodan etiketleri kaldırma izniniz olmalıdır APPLY TAG .

    • tag_name

      Değişmez değer STRING. tag_name tablo veya sütun içinde benzersiz olmalıdır.

  • CLUSTER BY yan tümcesi

    Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 LTS ve üzeri

    Delta Lake tablosu için kümeleme stratejisini ekler, değiştirir veya bırakır.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Yalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri onay işareti evet olarak işaretlenmiş Unity Kataloğu

    Önemli

    Bu özellik Genel Önizlemededir.

    Yönetilen Delta Lake tablosunu istenen tahmine dayalı iyileştirme ayarıyla değiştirir.

    Varsayılan olarak, tablolar oluşturulduğunda davranış INHERIT şemadan yapılır.

    Tahmine dayalı iyileştirme açıkça etkinleştirildiğinde veya etkinleştirildi olarak devralındığında OPTIMIZE ve VACUUM , Azure Databricks tarafından uygun görüldüğü şekilde tabloda otomatik olarak çağrılır. Daha fazla ayrıntı için bkz. Unity Kataloğu yönetilen tabloları için tahmine dayalı iyileştirme.

Örnekler

Delta Lake kısıtlama ekleme ve sütun örneklerini değiştirme için bkz.

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