القيود المفروضة على Azure Databricks

يدعم Azure Databricks عبارات إدارة قيود SQL القياسية. تنقسم القيود إلى فئتين:

  • تضمن الموانع المفروضة التحقق تلقائيا من جودة وسلامة البيانات المضافة إلى جدول.
  • تقوم قيود المفتاح الأساسي الإعلامي والمفتاح الخارجي بترميز العلاقات بين الحقول في الجداول ولا يتم فرضها.

تتطلب جميع القيود على Azure Databricks Delta Lake.

يحتوي Delta Live Tables على مفهوم مشابه يعرف باسم التوقعات. راجع إدارة جودة البيانات باستخدام جداول Delta Live.

القيود المفروضة على Azure Databricks

عند انتهاك قيد، تفشل المعاملة مع وجود خطأ. يتم دعم نوعين من القيود:

  • NOT NULL: يشير إلى أن القيم في أعمدة معينة لا يمكن أن تكون خالية.
  • CHECK: يشير إلى أن التعبير المنطقي المحدد يجب أن يكون صحيحا لكل صف إدخال.

هام

تؤدي إضافة قيد إلى ترقية إصدار بروتوكول كاتب الجدول تلقائيا إذا كان إصدار الكاتب السابق أقل من 3. راجع كيف تدير Azure Databricks توافق ميزة Delta Lake؟ لفهم إصدار بروتوكول الجدول وما يعنيه ترقية إصدار البروتوكول.

تعيين قيد NOT NULL في Azure Databricks

يمكنك تحديد NOT NULL القيود في المخطط عند إنشاء جدول. يمكنك إسقاط قيود أو إضافتها NOT NULLALTER TABLE ALTER COLUMN باستخدام الأمر .

CREATE TABLE people10m (
  id INT NOT NULL,
  firstName STRING,
  middleName STRING NOT NULL,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
) USING DELTA;

ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;

قبل إضافة قيد NOT NULL إلى جدول، يتحقق Azure Databricks من أن جميع الصفوف الموجودة تفي بالقيد.

إذا قمت بتحديد قيد NOT NULL على عمود متداخل داخل بنية، يجب أن تكون البنية الأصل أيضا غير خالية. لا تقبل NOT NULL الأعمدة المتداخلة ضمن أنواع الصفيف أو الخريطة القيود.

راجع إنشاء جدول [باستخدام] و ALTER TABLE ALTER COLUMN.

تعيين قيد CHECK في Azure Databricks

يمكنك إدارة CHECK القيود باستخدام ALTER TABLE ADD CONSTRAINT الأمرين و ALTER TABLE DROP CONSTRAINT . ALTER TABLE ADD CONSTRAINT يتحقق من أن كافة الصفوف الموجودة تفي بالقيد قبل إضافته إلى الجدول.

CREATE TABLE people10m (
  id INT,
  firstName STRING,
  middleName STRING,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
) USING DELTA;

ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;

راجع ALTER TABLE ADD CONSTRAINT وALTER TABLE DROP CONSTRAINT.

CHECK يتم عرض القيود كخصائص جدول في إخراج DESCRIBE DETAIL الأوامر و SHOW TBLPROPERTIES .

ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);

DESCRIBE DETAIL people10m;

SHOW TBLPROPERTIES people10m;

الإعلان عن علاقات المفتاح الأساسي والمفتاح الخارجي

هام

هذه الميزة في المعاينة العامة.

إشعار

  • تتوفر قيود المفتاح الأساسي والمفتاح الخارجي في Databricks Runtime 11.3 LTS وما فوق.
  • تتطلب قيود المفتاح الأساسي والمفتاح الخارجي كتالوج Unity و Delta Lake.

يمكنك استخدام علاقات المفتاح الأساسي والمفتاح الخارجي في الحقول في جداول كتالوج Unity. المفاتيح الأساسية والخارجية هي مفاتيح إعلامية فقط ولا يتم فرضها. يجب أن تشير المفاتيح الخارجية إلى مفتاح أساسي في جدول آخر.

يمكنك الإعلان عن المفاتيح الأساسية والمفاتيح الخارجية كجزء من عبارة مواصفات الجدول أثناء إنشاء الجدول. هذه العبارة غير مسموح بها أثناء عبارات CTAS. يمكنك أيضا إضافة قيود إلى الجداول الموجودة.

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);

يمكنك الاستعلام عن information_schema أو استخدام DESCRIBE للحصول على تفاصيل حول كيفية تطبيق القيود عبر كتالوج معين.

راجع: