Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Bir tablonun şemasını veya özelliklerini değiştirir.
Komut ALTER TABLE geçici tablolar için desteklenmez. Komut geçici bir tabloya ALTER TABLE uygulanırsa bir hata döndürülür. 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 gecikmeli olarak doldurulur.
Yabancı tablolarda, yalnızca ve ALTER TABLE RENAME TOgerçekleştirebilirsinizALTER TABLE SET OWNER.
Gerekli izinler
Unity Kataloğu'nu kullanıyorsanız şunlar için MODIFY iznine sahip olmalısınız:
ALTER COLUMNADD COLUMNDROP COLUMNSET TBLPROPERTIESUNSET TBLPROPERTIESPREDICTIVE OPTIMIZATION
Unity Kataloğu kullanıyorsanız şu MANAGE iznine veya sahipliğe sahip olmanız gerekir:
SET OWNER TO
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 |
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}
Parametreler
-
Değiştirilen tabloyu tanımlar. Ad bir zamansal belirtim veya seçenek belirtimi içermemelidir. Tablo bulunamazsa Azure Databricks bir TABLE_OR_VIEW_NOT_FOUND hatası oluşturur.
RENAME TOto_table_nameTabloyu yeniden adlandırır.
-
Yeni tablo adını tanımlar. Ad bir zamansal belirtim veya seçenek belirtimi içermemelidir.
Unity Kataloğu tabloları için,
to_table_nameaynı katalogdatable_nameiçinde olmalıdır. Diğer tablolar için,to_table_nameiletable_nameaynı şemada olmalıdır.Nitelenmemişse,
to_table_namegeçerli şema ile otomatik olarak nitelenir.
> ALTER TABLE student RENAME TO student_info;-
-
Tabloya bir veya daha fazla sütun ekler.
Var olan bir Delta Lake tablosuna sütun eklediğinizde, değer
DEFAULTtanımlayamazsınız. Delta Lake tablolarına eklenen tüm sütunlar, var olan satırlar için olarakNULLdeğerlendirilir. Sütun ekledikten sonra, isteğe bağlı olarak kullanarakALTER COLUMNyeni satırlar için varsayılan bir değer tanımlayabilirsiniz.> 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';
-
Bir özelliği veya sütunun konumunu değiştirir.
> 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 NULLTek bir deyimde birden çok sütunu değiştirme:
-- 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 -
Delta Lake tablosuna bir veya daha fazla sütun veya alan bırakın.
-
Delta Lake tablosundaki bir sütunu veya alanı yeniden adlandırır.
> 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
-
Tabloya bir denetim kısıtlaması, bilgi amaçlı yabancı anahtar kısıtlaması veya bilgi amaçlı birincil anahtar kısıtlaması ekler.
Yabancı anahtarlar ve birincil anahtarlar yalnızca Unity Kataloğu'ndaki tablolar için desteklenir,
hive_metastorekataloğunda desteklenmez. DEFAULT COLLATIONsıralama_adıŞunun için geçerlidir:
Databricks SQL
Databricks Runtime 16.3 ve üzeriYeni
STRINGsütunları için tablonun varsayılan harmanlamasını değiştirir. Varolan sütunlar bu yan tümceden etkilenmez. Var olan bir sütunun harmanlamasını değiştirmek içinALTER TABLE ... ALTER COLUMN ... COLLATE collation_namekullanın.
-
Tablodan birincil anahtarı, yabancı anahtarı veya kontrol kısıtlamasını kaldırır.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]Şunun için geçerlidir:
Databricks Runtime 14.3 LTS ve üzerini denetleyinEski destek
DROP FEATUREiçin Databricks Runtime 14.3 LTS'den itibaren kullanılabilir. Eski işlevlerin belgeleri için bkz. Delta tablosu özelliklerini bırakma (eski).Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 16.3 ve üzeriAzure Databricks, eski davranışın yerini alan tüm
DROP FEATUREkomutlar için Databricks Runtime 16.3 ve üzerini kullanmanızı önerir.Delta Lake tablosundan bir özelliği kaldırır.
Bir özelliğin kaldırılması, tablo protokolünde yazıcı özelliğinin
checkpointProtectioneklenmesine neden olabilir. Daha fazla bilgi için bkz. Protokol uyumluluğu içinDelta tablosu özelliklerini ve Tablo özelliklerini bırakma.feature_namedeğişmez veya tanımlayıcı biçimindeki bir özelliğin adı, Azure Databricks tarafından anlaşılmalı ve tabloda desteklenmelidir. Özellik tabloda mevcut değilse, Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENToluşturur.
GEÇMIŞİ KISALT
Geçmişi keserek özelliklerin kaldırılması. Bunun için iki aşamalı bir işlem gerekir:
Özelliklerin kırpılarak kaldırılması için iki adımlı bir işlem gerekir:
İlk çağrı özelliğin izlerini temizler ve kısmi başarı hakkında sizi bilgilendirmektedir.
Ardından, kaldırma işlemini tamamlamak için ifadeyi yeniden yürütmeden önce bekletme süresi sona erene kadar bekleyin.
İ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.
Tablo geçmişini kesmek, DESCRIBE HISTORY gerçekleştirme ve zaman yolculuğuyla ilgili sorguları yürütme yeteneğinizi sınırlar.
-- 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;-
Tabloya bir veya daha fazla bölümlendirme ekler.
> 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 -
Tablodan bir veya daha fazla bölümü kaldırır.
> 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 -
Bir bölümün konumunu ayarlar.
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'; -
Bölümün anahtarlarını değiştirir.
> 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 -
Azure Databricks'e tablonun konumunu taramasını ve doğrudan dosya sistemine eklenmiş tüm dosyaları tabloya eklemesini ister.
SETROW FILTER maddeŞunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
yalnızca Unity KataloğuTabloya 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:
evet olarak işaretlenmiş onay kutusunu işaretleyinTablodaki satır filtresini varsa kaldırır. Gelecekteki sorgular, otomatik filtreleme olmadan tablodaki tüm satırları döndürür.
-
Bir veya daha fazla kullanıcı tanımlı özelliği ayarlar veya sıfırlar.
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser'); -
Bir veya daha fazla kullanıcı tanımlı özelliği kaldırır.
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner'); SET SERDEŞunlar için geçerlidir:
Databricks RuntimeHive biçimli bir tablodaki verileri okumak ve yazmak için kullanılan seri hale getirici/seri durumdan çıkarıcı (SerDe) sınıfını belirtir. SerDe özelliklerini ile
WITH SERDEPROPERTIESde yapılandırabilirsiniz.> 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 LOCATIONTablonun konumunu taşır.
SET LOCATION pathLOCATION pathpathsabitSTRINGolmalıdır. Tablonun yeni konumunu belirtir.Dosyalar özgün konumlarında kalacak ve yeni konuma taşınmayacak.
[ SET ] OWNER TOmüdürTablonun sahipliği
principal'a aktarılır.Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriSETisteğe bağlı anahtar sözcük olarak izin verilir.SET TAGS ( { tag_name = tag_value } [, ...] )Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeriTabloya etiket uygulama. Tabloya etiket eklemek için
APPLY TAGizniniz olmalıdır.tag_name
Bir sabit
STRING.tag_nametablo veya sütun içinde benzersiz olmalıdır.tag_value
Bir sabit
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 [, ...] )Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeriTablodan etiketleri kaldırın. Tablodan etiketleri kaldırmak için
APPLY TAGizniniz olması gerekir.tag_name
Bir sabit
STRING.tag_nametablo veya sütun içinde benzersiz olmalıdır.
-- 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');-
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeriDelta 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:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
yalnızca Unity KataloğuYönetilen Delta Lake tablosunu istenen tahmine dayalı iyileştirme ayarıyla değiştirir.
Varsayılan olarak, tablolar oluşturulduğunda davranış şemadan
INHERITyapmak şeklindedir.Tahmine dayalı iyileştirme açıkça etkinleştirildiğinde veya etkin durumda 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 tarafından yönetilen tablolar için tahmine dayalı optimizasyon.
-- Enables predictive optimization for my_table > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
Ek örnekler
Delta Lake kısıtlama ekleme ve sütun örneklerini değiştirme için bkz.
İlgili makaleler
- ADD CONSTRAINT yan tümcesi: Denetim kısıtlamalarını, birincil anahtarları ve yabancı anahtarları ekleyin veya bırakın.
- ALTER MATERIALIZED VIEW: Gerçekleştirilmiş görünümleri değiştirmek için söz dizimi.
- ALTER STREAMING TABLE: Akış tablolarını değiştirmek için söz dizimi.
- ALTER TABLE ... COLUMN yan tümcesi: ADD, ALTER, DROP ve RENAME COLUMNiçin tam söz dizimi.
- ALTER TABLE... PARTITION: Bölümleri eklemek, bırakmak ve yeniden adlandırmak için tam söz dizimi.
- Tablo şemasını güncelleştirme: Delta tablosundaki sütun türlerini yeniden adlandırın veya değiştirin.