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.
Azure Databricks standart SQL kısıtlama yönetimi yan tümcelerini destekler:
- Uygulanan kısıtlamalar tabloya satır eklemeden önce veri bütünlüğünü doğrular.
- Bilgilendirme birincil anahtarı ve yabancı anahtar kısıtlamaları, tablolardaki alanlar arasındaki ilişkileri tanımlar ve uygulanmaz.
Azure Databricks'te tüm kısıtlamalar Delta Lake gerektirir.
Lakeflow Spark Bildirimli İşlem Hatlarında ilgili bir kavram için bkz. İşlem hattı beklentileriyle veri kalitesini yönetme.
Azure Databricks üzerinde uygulanan kısıtlamalar
Bir kısıtlama ihlal edildiğinde işlem bir hatayla başarısız olur. Azure Databricks iki tür kısıtlamayı destekler:
-
NOT NULL: belirli sütunlardaki değerlerin null olamayacağını gösterir. -
CHECK: belirtilen boole ifadesinin her giriş satırı için true olması gerektiğini gösterir.
Önemli
Kısıtlama eklediğinizde, Azure Databricks önceki yazıcı sürümü 3'ten küçükse tablo yazıcı protokolü sürümünü otomatik olarak yükselter. Tablo protokolü sürümü oluşturma ve protokol sürümünü yükseltmenin ne anlama geldiğini anlamak için bkz. Delta Lake özellik uyumluluğu ve protokolleri .
Azure Databricks'te NOT NULL kısıtlaması ayarlama
Tablo oluşturduğunuzda, şemada kısıtlamaları belirtin NOT NULL .
NOT NULL kısıtlamaları bırakmak veya eklemek için ALTER TABLE ... ALTER COLUMN komutunu kullanın.
CREATE TABLE people10m (
id INT NOT NULL,
firstName STRING,
middleName STRING NOT NULL,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;
Azure Databricks, bir tabloya NOT NULL kısıtlaması eklemeden önce var olan tüm satırların kısıtlamayı karşılayıp karşılamadığını doğrular.
Yapı içinde iç içe yerleştirilmiş bir sütunda NOT NULL kısıtlaması belirtirseniz, üst yapı da null olmamalıdır. Dizi veya eşleme türleri içinde iç içe yerleştirilmiş sütunlar kısıtlamaları kabul NOT NULL etmemektedir.
Bkz. CREATE TABLE [USING] ve ALTER TABLE ALTER COLUMN.
Azure Databricks'te CHECK kısıtlaması ayarlama
CHECK kısıtlamalarını ALTER TABLE ADD CONSTRAINT ve ALTER TABLE DROP CONSTRAINT komutları ile yönetin.
ALTER TABLE ADD CONSTRAINT , kısıtlamayı tabloya eklemeden önce var olan tüm satırların kısıtlamayı karşıladığını doğrular.
Denetim kısıtlamaları için aşağıdaki kısıtlamalar geçerlidir:
- Kısıtlama
CHECKifadesi, Spark'ta aşağıdaki işlev türleri dışında aynı bağımsız değişken değerleri verildiğinde her zaman aynı sonucu döndüren tüm SQL işlevlerini kullanabilir:- Kullanıcı tanımlı işlevler.
- Toplama işlevleri.
- Pencere işlevleri.
- Birden çok satır döndüren işlevler.
Var olan bir tabloya ekleme
CREATE TABLE people10m (
id INT,
firstName STRING,
middleName STRING,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;
Bkz. ALTER TABLE ADD CONSTRAINT ve ALTER TABLE DROP CONSTRAINT.
Denetim kısıtlaması tablosu özelliklerini görüntüleme
DESCRIBE DETAIL ve SHOW TBLPROPERTIES komutlarını kullanarak bir tablonun CHECK kısıtlamalarını görebilirsiniz.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Denetim kısıtlamalarını kaldırma
Databricks Runtime 15.4 LTS ve üzeri sürümlerde, tablodan DROP FEATURE denetim kısıtlamalarını kaldırmak ve tablo protokollerini düşürmek için komutunu kullanın.
Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.
Birincil anahtar ve yabancı anahtar ilişkilerini bildirme
Birincil anahtar ve yabancı anahtar kısıtlamaları, Databricks Runtime 13.3 LTS ve üzeri sürümlerde Unity Catalog ve Delta Lake tabloları için kullanılabilir ve Databricks Runtime 15.2 ve üzeri sürümlerde Genel Kullanıma (GA) sunulmuştur.
Birincil ve yabancı anahtarlar yalnızca bilgilendirme amaçlıdır ve zorunlu tutulmaz. Yabancı anahtarlar başka bir tablodaki birincil anahtara başvurmalıdır. Bilgi anahtarı kısıtlamaları , sorgu iyileştirmeleriyle performansı geliştirebilir.
Verilen bir katalogda kısıtlamaların nasıl uygulandığına dair ayrıntıları almak için information_schema sorgulayın veya DESCRIBE kullanın.
Yeni tablolara ekle
Tablo oluşturma sırasında birincil anahtarları ve yabancı anahtarları tablo belirtim yan tümcesinin bir parçası olarak bildirin:
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
fk1 INTEGER, fk2 INTEGER,
CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
CTAS ifadeleri bu kısıtlama ifadesini desteklemez.
Var olan tablolara ekle
Mevcut tablolara kısıtlamalar eklemek için:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;