ALTER TABLE
Şunlar için geçerlidir: Databricks SQL 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 TO
gerç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
-
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 TO
to_table_nameTabloyu aynı şema içinde yeniden adlandırır.
-
Yeni tablo adını tanımlar. Ad bir zamansal belirtim içermemelidir.
-
-
Tabloya bir veya daha fazla sütun ekler.
-
Bir özelliği veya sütunun konumunu değiştirir.
-
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.
-
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. -
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: Databricks SQL 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
- 'v2Checkpoint' veya
Özellik tabloda yoksa Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT yükseltir.
- 'deletionVectors' veya
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.
-
Tabloya bir veya daha fazla bölüm ekler.
-
Tablodan bir veya daha fazla bölüm bırakır.
-
Bir bölümün konumunu ayarlar.
-
Bölümün anahtarlarını değiştirir.
-
Azure Databricks'e tablonun konumunu taramasını ve doğrudan dosya sistemine eklenmiş tüm dosyaları tabloya eklemesini ister.
-
Şunlar için geçerlidir: Yalnızca Databricks SQL Databricks Runtime 12.2 LTS ve üzeri 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: 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.
-
Bir veya daha fazla kullanıcı tanımlı özelliği ayarlar veya sıfırlar.
-
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ğerSTRING
olmalıdır. Tablonun yeni konumunu belirtir.Özgün konumdaki dosyalar yeni konuma taşınmaz.
[ SET ] OWNER TO
müdürTablonun sahipliğini öğesine
principal
aktarır.Şunlar için geçerlidir: Databricks SQL 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: Databricks SQL 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: Databricks SQL 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.
-
Şunlar için geçerlidir: Databricks SQL 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: Yalnızca Databricks SQL Databricks Runtime 12.2 LTS ve üzeri 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;