القيود المفروضة على 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 NULL
ALTER 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
);
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
);
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 15.4 LTS وما فوق، يمكنك استخدام DROP FEATURE
الأمر لإزالة قيود التحقق من جدول والرجوع إلى إصدار أحدث من بروتوكول الجدول.
راجع ميزات جدول Drop Delta.
الإعلان عن علاقات المفتاح الأساسي والمفتاح الخارجي
إشعار
- تتوفر قيود المفتاح الأساسي والمفتاح الخارجي في Databricks Runtime 11.3 LTS وما فوق، وهي GA بالكامل في Databricks Runtime 15.2 وما فوق.
- تتطلب قيود المفتاح الأساسي والمفتاح الخارجي كتالوج 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
للحصول على تفاصيل حول كيفية تطبيق القيود عبر كتالوج معين.
راجع: