Azure Databricks'te kısıtlamalar
Azure Databricks standart SQL kısıtlama yönetimi yan tümcelerini destekler. Kısıtlamalar iki kategoriye ayrılır:
- Zorunlu kısıtlamalar, tabloya eklenen verilerin kalitesinin ve bütünlüğünün otomatik olarak doğrulanmasını sağlar.
- Bilgilendirme birincil anahtarı ve yabancı anahtar kısıtlamaları, tablolardaki alanlar arasındaki ilişkileri kodlar ve uygulanmaz.
Azure Databricks'te tüm kısıtlamalar Delta Lake gerektirir.
DLT'nin beklentiler olarak bilinen benzer bir kavramı vardır. bkz. İşlem hattı beklentileriyle veri kalitesini yönetme.
Azure Databricks'te zorunlu kısıtlamalar
Bir kısıtlama ihlal edildiğinde işlem bir hatayla başarısız olur. İki tür kısıtlama desteklenir:
-
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
Bir kısıtlama eklendiğinde, önceki yazıcı sürümü 3'ten küçükse tablo yazıcı protokolü sürümü otomatik olarak yükseltilmektedir. Azure Databricks'in Delta Lake özellik uyumluluğunu nasıl yönettiğini görmek için ve protokol sürümünü yükseltmenin ne anlama geldiğini ve tablo protokolü sürüm oluşturmayı anlamak için'e bakınız.
Azure Databricks'te NOT NULL
kısıtlaması ayarlama
Tablo oluştururken şemada NOT NULL
kısıtlamaları belirtirsiniz.
ALTER TABLE ALTER COLUMN
komutunu kullanarak NOT NULL
kısıtlamalarını bırakır veya eklersiniz.
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;
Bir tabloya NOT NULL
kısıtlaması eklemeden önce, Azure Databricks 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 NOT NULL
kısıtlamalarını kabul 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ını kullanarak yönetirsiniz.
ALTER TABLE ADD CONSTRAINT
, tabloya eklemeden önce var olan tüm satırların kısıtlamayı karşılayıp karşılamadığını doğrular.
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.
CHECK
kısıtlamaları, DESCRIBE DETAIL
ve SHOW TBLPROPERTIES
komutlarının çıkışında tablo özellikleri olarak sunulur.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Denetim kısıtlamalarını devre dışı bırakın
Databricks Runtime 15.4 LTS ve üzeri sürümlerde, DROP FEATURE
komutunu kullanarak tablodaki denetim kısıtlamalarını kaldırabilir ve tablo protokollerini düşürebilirsiniz.
Bkz. Delta tablosu özelliklerini kaldırma.
Birincil anahtar ve yabancı anahtar ilişkilerini bildirme
Not
- Birincil anahtar ve yabancı anahtar kısıtlamaları Databricks Runtime 11.3 LTS ve üzeri sürümlerde kullanılabilir ve Databricks Runtime 15.2 ve üzeri sürümlerde tamamen GA'dır.
- Birincil anahtar ve yabancı anahtar kısıtlamaları Unity Kataloğu ve Delta Lake gerektirir.
Unity Kataloğu tablolarındaki alanlarda birincil anahtar ve yabancı anahtar ilişkilerini kullanabilirsiniz. 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.
Tablo oluşturma sırasında birincil anahtarları ve yabancı anahtarları tablo belirtim yan tümcesinin bir parçası olarak bildirebilirsiniz. CTAS ifadeleri sırasında bu cümleye izin verilmez. Ayrıca, mevcut tablolara kısıtlamalar ekleyebilirsiniz.
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);
Kısıtlamaların belirli bir kataloğa nasıl uygulandığı hakkında ayrıntılı bilgi almak için information_schema
sorgulayabilir veya DESCRIBE
kullanabilirsiniz.
Bkz.