Aracılığıyla paylaş


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.