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.
Delta Lake'te tür değişiklikleri veya sütunları yeniden adlandırmak için bkz. verileriyeniden yazma.
Tablo veya sütundaki açıklamayı değiştirmek için COMMENT ONde kullanabilirsiniz.
STREAMING TABLE
değiştirmek için ALTER STREAMING TABLEkullanı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 gecikmeli olarak doldurulur.
Uyarı
Var olan bir Delta tablosuna sütun eklediğinizde, DEFAULT
değeri tanımlayamazsınız. Delta tablolarına eklenen tüm sütunlar, var olan satırlar için NULL
olarak 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
'i gerçekleştirebilirsiniz.
Gerekli izinler
Unity Kataloğu'nu kullanıyorsanız şunlar için MODIFY
iznine sahip olmalısınız:
ALTER COLUMN
ADD COLUMN
DROP COLUMN
SET TBLPROPERTIES
UNSET TBLPROPERTIES
- Değiştir
PREDICTIVE 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 TO
to_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_name
aynı katalogdatable_name
içinde olmalıdır. Diğer tablolar için,to_table_name
iletable_name
aynı şemada olmalıdır.Nitelenmemişse,
to_table_name
geçerli şema ile otomatik olarak nitelenir.
-
-
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 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_metastore
kataloğunda desteklenmez. DEFAULT COLLATION
sıralama_adıŞunun için geçerlidir:
Databricks SQL
Databricks Runtime 16.3 ve üzeri
Yeni
STRING
sü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_name
kullanı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 denetleyin
Eski destek
DROP FEATURE
iç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 üzeri
Azure Databricks, eski davranışın yerini alan tüm
DROP FEATURE
komutlar 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
checkpointProtection
eklenmesine neden olabilir. Daha fazla bilgi için bkz. Protokol uyumluluğu içinDelta tablosu özelliklerini ve Tablo özelliklerini bırakma.feature_name
değ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.
-
Tabloya bir veya daha fazla bölümlendirme ekler.
-
Tablodan bir veya daha fazla bölümü kaldırı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.
SET
ROW FILTER maddeŞunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
yalnızca 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:
evet olarak işaretlenmiş onay kutusunu işaretleyin
Tablodaki 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.
-
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
sabitSTRING
olmalıdır. Tablonun yeni konumunu belirtir.Dosyalar özgün konumlarında kalacak ve yeni konuma taşınmayacak.
[ SET ] OWNER TO
müdürTablonun sahipliği
principal
'a aktarılı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 etiket eklemek için
APPLY TAG
izniniz olmalıdır.tag_name
Bir sabit
STRING
.tag_name
tablo veya sütun içinde benzersiz olmalıdır.tag_value
Bir sabit
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ırmak için
APPLY TAG
izniniz olması gerekir.tag_name
Bir sabit
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:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri
yalnızca Unity Kataloğu
Yönetilen Delta Lake tablosunu istenen tahmine dayalı iyileştirme ayarıyla değiştirir.
Varsayılan olarak, tablolar oluşturulduğunda davranış şemadan
INHERIT
yapmak ş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.
Örnekler
Delta Lake kısıtlama ekleme ve sütun örneklerini değiştirme için bkz.
- Delta Lake tablo şemasını güncelleştirme
- Azure Databricks'te kısıtlamalar
-- 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;
-- Alter multiple columns in a single statement
-- 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