استخدام طرق العرض المجسدة في Databricks SQL

إشعار

إذا كنت بحاجة إلى استخدام اتصال Azure Private Link مع طريقة العرض المجسدة، فاتصل بممثل Databricks.

توضح هذه المقالة كيفية إنشاء واستخدام طرق العرض المجسدة في Databricks SQL لتحسين الأداء وتقليل تكلفة أحمال عمل معالجة البيانات وتحليلها.

ما هي طرق العرض المجسدة؟

في Databricks SQL، طرق العرض المجسدة هي الجداول المدارة في كتالوج Unity التي تسمح للمستخدمين بحساب النتائج مسبقا استنادا إلى أحدث إصدار من البيانات في جداول المصدر. تختلف طرق العرض المجسدة على Azure Databricks عن التطبيقات الأخرى حيث تعكس النتائج التي تم إرجاعها حالة البيانات عند آخر تحديث للعرض المجسد بدلا من تحديث النتائج دائما عند الاستعلام عن طريقة العرض المجسدة. يمكنك تحديث طرق العرض المجسدة يدويا أو جدولة التحديثات.

تعتبر طرق العرض المجسدة فعالة لأحمال عمل معالجة البيانات مثل معالجة الاستخراج والتحويل والتحميل (ETL). توفر طرق العرض المجسدة طريقة بسيطة وتوضيحية لمعالجة البيانات للتوافق أو التصحيحات أو التجميعات أو التقاط بيانات التغيير العام (CDC). تقلل طرق العرض المجسدة التكلفة وتحسن زمن انتقال الاستعلام من خلال الاستعلامات البطيئة والحسابات المستخدمة بشكل متكرر قبل الحوسبة. تتيح طرق العرض المجسدة أيضا تحويلات سهلة الاستخدام من خلال تنظيف الجداول الأساسية وإثرائها ونشر تكرارها. يمكن أن تقلل طرق العرض المجسدة من التكاليف مع توفير تجربة مبسطة للمستخدم النهائي لأنه في بعض الحالات، يمكنهم حساب التغييرات بشكل متزايد من الجداول الأساسية.

تم دعم طرق العرض المجسدة أولا في Azure Databricks مع إطلاق Delta Live Tables. عند إنشاء طريقة عرض مجسدة في مستودع Databricks SQL، يتم إنشاء مسار بلا خادم لمعالجة التحديثات إلى طريقة العرض المجسدة. يمكنك مراقبة حالة عمليات التحديث في واجهة مستخدم Delta Live Tables أو واجهة برمجة تطبيقات المسارات. راجع عرض حالة تحديث طريقة العرض المجسدة.

المتطلبات

لإنشاء طرق عرض مجسدة أو تحديثها:

  • يجب استخدام مستودع SQL pro أو بلا خادم ممكن لكتالوج Unity.

  • لتحديث طريقة عرض مجسدة، يجب أن تكون في مساحة العمل التي أنشأتها.

  • يجب أن تكون مساحة العمل الخاصة بك في منطقة تدعم مستودعات SQL بلا خادم.

للاستعلام عن طرق العرض المجسدة:

  • يجب أن تكون مالك طريقة العرض المجسدة، أو أن تكون على SELECT طريقة العرض المجسدة، جنبا إلى جنب مع USE SCHEMA والديها.USE CATALOG
  • يجب استخدام أحد موارد الحوسبة التالية:
    • مستودع SQL
    • واجهات Delta Live Tables
    • حساب وضع الوصول المشترك
    • وضع وصول مستخدم واحد على Databricks Runtime 15.4 وما فوق، طالما تم تمكين مساحة العمل للحساب بلا خادم. راجع التحكم في الوصول الدقيق على حساب مستخدم واحد.
    • فقط إذا كنت مالك العرض المجسد: مورد حساب وضع وصول مستخدم واحد يقوم بتشغيل Databricks Runtime بين 14.3 و15.3.

للتعرف على القيود الأخرى على استخدام طرق العرض المجسدة، راجع القيود.

إنشاء طريقة عرض مجسدة

تستخدم عمليات عرض CREATE Databricks SQL المجسدة مستودع Databricks SQL لإنشاء البيانات وتحميلها في طريقة العرض المجسدة. يعد إنشاء طريقة عرض مجسدة عملية متزامنة، ما يعني أن CREATE MATERIALIZED VIEW الأمر يحظر حتى يتم إنشاء طريقة العرض المجسدة وانتهاء تحميل البيانات الأولي. يتم إنشاء مسار Delta Live Tables بلا خادم تلقائيا لكل طريقة عرض مجسدة ل Databricks SQL. عند تحديث طريقة العرض المجسدة، يعالج مسار Delta Live Tables التحديث.

لإنشاء طريقة عرض مجسدة، استخدم العبارة CREATE MATERIALIZED VIEW . لإرسال عبارة إنشاء، استخدم محرر SQL في واجهة مستخدم Azure Databricks أو Databricks SQL CLI أو واجهة برمجة تطبيقات Databricks SQL.

يمكنك تحديد قناة وقت التشغيل حيث يتم تشغيل عبارة الإنشاء باستخدام TBLPROPERTIES عبارة مع تعيين القيمة إلى "PREVIEW" أو "CURRENT". القيمة الافتراضية هي "CURRENT". لمزيد من المعلومات حول قنوات Delta Live Tables، راجع قنوات وقت تشغيل Delta Live Tables. للحصول على تفاصيل حول بناء الجملة والمعلمات، راجع إنشاء طريقة عرض مجسدة.

إشعار

المستخدم الذي ينشئ طريقة عرض مجسدة هو مالك طريقة العرض المجسدة ويحتاج إلى الحصول على الأذونات التالية:

  • SELECT امتياز على الجداول الأساسية المشار إليها بواسطة طريقة العرض المجسدة.
  • USE CATALOG وامتيازات USE SCHEMA على الكتالوج والمخطط الذي يحتوي على جداول المصدر للعرض المجسد.
  • USE CATALOG وامتيازات USE SCHEMA على الكتالوج الهدف والمخطط للعرض المجسد.
  • CREATE TABLE وامتيازات CREATE MATERIALIZED VIEW على المخطط الذي يحتوي على طريقة العرض المجسدة.

ينشئ المثال التالي طريقة العرض mv1 المجسدة من الجدول base_table1الأساسي :

CREATE MATERIALIZED VIEW mv1
AS SELECT
  date, sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

تحميل البيانات من الأنظمة الخارجية

توصي Databricks بتحميل البيانات الخارجية باستخدام Lakehouse Federation لمصادر البيانات المدعومة. للحصول على معلومات حول تحميل البيانات من مصادر غير معتمدة من قبل Lakehouse Federation، راجع خيارات تنسيق البيانات.

تحديث طريقة عرض مجسدة

تقوم REFRESH العملية بتحديث طريقة العرض المجسدة لتعكس أحدث التغييرات في الجدول الأساسي. تكون العملية متزامنة بشكل افتراضي، ما يعني أن الأمر يحظر حتى تكتمل عملية التحديث. لتحديث طريقة عرض مجسدة، استخدم العبارة REFRESH MATERIALIZED VIEW . راجع تحديث (طريقة العرض المجسدة أو جدول البث) للحصول على تفاصيل حول بناء جملة SQL والمعلمات لهذا الأمر. لمعرفة المزيد حول أنواع طرق العرض المجسدة التي يمكن تحديثها بشكل متزايد، راجع التحديث التزايدي لطرق العرض المجسدة.

لإرسال عبارة تحديث، استخدم محرر SQL في واجهة مستخدم Azure Databricks، أو دفتر ملاحظات مرفق بمستودع SQL، أو Databricks SQL CLI، أو واجهة برمجة تطبيقات Databricks SQL.

يمكن REFRESH للمالك فقط العرض المجسد.

يقوم المثال التالي بتحديث طريقة العرض المجسدة mv1 :

REFRESH MATERIALIZED VIEW mv1;

كيف يتم تحديث طرق عرض Databricks SQL المجسدة؟

تقوم طرق العرض المجسدة تلقائيا بإنشاء مسارات Delta Live Tables بدون خادم واستخدامها لمعالجة عمليات التحديث. تتم إدارة التحديث بواسطة مسار Delta Live Tables ويتم مراقبة التحديث بواسطة مستودع Databricks SQL المستخدم لإنشاء طريقة العرض المجسدة. يمكن تحديث طرق العرض المجسدة باستخدام مسار Delta Live Tables الذي يعمل على جدول زمني. راجع وضع المسار المشغل مقابل وضع التدفق المستمر.

إشعار

لا يمكن لوقت تشغيل Delta Live Tables الكشف عن التغييرات في مصادر البيانات غير التابعة ل Delta. لا يزال يتم تحديث الجدول بانتظام ولكن مع فاصل تشغيل افتراضي أعلى لمنع إعادة الحساب المفرط من إبطاء أي معالجة تزايدية تحدث على الحساب.

بشكل افتراضي، يتم تنفيذ عمليات التحديث بشكل متزامن. يمكنك أيضا تعيين عملية تحديث لتحدث بشكل غير متزامن. يمكن تعيين هذا باستخدام أمر التحديث. راجع تحديث (طريقة عرض مجسدة أو جدول دفق) السلوك المقترن بكل نهج كما يلي:

  • متزامن: يمنع التحديث المتزامن العمليات الأخرى من المتابعة حتى اكتمال التحديث. إذا كانت النتيجة مطلوبة للخطوة التالية، مثل عند تسلسل عمليات التحديث في أدوات التنسيق مثل وظائف Databricks، فاستخدم تحديثا متزامنا. لتنسيق طرق العرض المجسدة مع وظيفة، استخدم نوع مهمة SQL . راجع جدولة مهام سير العمل وتنسيقها.
  • غير متزامن: يبدأ التحديث غير المتزامن مهمة خلفية في حساب Delta Live Tables عند بدء تحديث طريقة العرض المجسدة، ما يسمح للأمر بالعودة قبل اكتمال تحميل البيانات. يمكن أن يوفر نوع التحديث هذا التكلفة لأن العملية لا تحتوي بالضرورة على سعة الحوسبة في المستودع حيث يتم بدء الأمر. إذا أصبح التحديث تعطلا ولم يتم تشغيل أي مهام أخرى، يمكن إيقاف تشغيل المستودع بينما يستخدم التحديث حسابا متوفرا آخر. بالإضافة إلى ذلك، تدعم التحديثات غير المتزامنة بدء عمليات متعددة بالتوازي.

يمكن تحديث بعض الاستعلامات بشكل متزايد. راجع التحديث المتزايد لطرق العرض المجسدة. إذا تعذر إجراء تحديث تزايدي، يتم إجراء تحديث كامل بدلا من ذلك.

جدولة تحديثات طريقة العرض المجسدة

يمكنك تكوين طريقة عرض Databricks SQL المجسدة للتحديث تلقائيا استنادا إلى جدول زمني محدد. لتعيين جدول زمني، قم بأحد الإجراءات التالية:

عند إنشاء جدول زمني، يتم تكوين مهمة Databricks جديدة تلقائيا لمعالجة التحديث.

لعرض الجدول الزمني، قم بأحد الإجراءات التالية:

  • قم بتشغيل العبارة DESCRIBE EXTENDED من محرر SQL في واجهة مستخدم Azure Databricks.
  • استخدم مستكشف الكتالوج لعرض طريقة العرض المجسدة. يتم سرد الجدول في علامة التبويب نظرة عامة ، ضمن حالة التحديث. راجع ما هو مستكشف الكتالوج؟.

عرض حالة تحديث طريقة العرض المجسدة

إشعار

نظرا لأن البنية الأساسية لبرنامج ربط العمليات التجارية Delta Live Tables تدير تحديثات العرض المجسدة، فهناك زمن انتقال يتم تكبده بواسطة وقت بدء التشغيل للمسار. قد يكون هذا الوقت بالثوان إلى الدقائق، بالإضافة إلى الوقت المطلوب لإجراء التحديث.

يمكنك عرض حالة تحديث طريقة العرض المجسدة عن طريق عرض المسار الذي يدير طريقة العرض المجسدة في واجهة مستخدم Delta Live Tables أو عن طريق عرض معلومات التحديث التي تم إرجاعها بواسطة DESCRIBE EXTENDED الأمر ل طريقة العرض المجسدة.

يمكنك أيضا عرض محفوظات التحديث لعرض مجسد عن طريق الاستعلام عن سجل أحداث Delta Live Tables. راجع عرض محفوظات التحديث لعرض مجسد.

عرض حالة التحديث في واجهة مستخدم Delta Live Tables

بشكل افتراضي، لا يكون مسار Delta Live Tables الذي يدير طريقة عرض مجسدة مرئيا في واجهة مستخدم Delta Live Tables. لعرض البنية الأساسية لبرنامج ربط العمليات التجارية في واجهة مستخدم Delta Live Tables، يجب الوصول مباشرة إلى الارتباط إلى صفحة تفاصيل المسار. للوصول إلى الارتباط:

  • انسخ الارتباط الموضح في صف التحديث الأخير للجدول الذي تم إرجاعه بواسطة العبارة DESCRIBE EXTENDED والصقه.
  • في علامة تبويب دورة حياة البيانات للعرض المجسد، انقر فوق Pipelines ثم انقر فوق ارتباط البنية الأساسية لبرنامج ربط العمليات التجارية.

بالنسبة للأوامر غير المتزامنة REFRESH المرسلة باستخدام محرر SQL في واجهة مستخدم Azure Databricks، يمكنك عرض حالة التحديث باتباع الارتباط الموضح في لوحة النتائج .

إيقاف تحديث نشط

لإيقاف تحديث نشط في واجهة مستخدم Delta Live Tables، في صفحة Pipeline details انقر فوق Stop لإيقاف تحديث البنية الأساسية لبرنامج ربط العمليات التجارية. يمكنك أيضا إيقاف التحديث باستخدام Databricks CLI أو POST /api/2.0/pipelines/{pipeline_id}/إيقاف العملية في واجهة برمجة تطبيقات البنية الأساسية لبرنامج ربط العمليات التجارية.

تحديث تعريف طريقة عرض مجسدة

لتحديث تعريف طريقة عرض مجسدة، يجب أولا إسقاط، ثم إعادة إنشاء طريقة العرض المجسدة.

إسقاط طريقة عرض مجسدة

إشعار

لإرسال الأمر لإسقاط طريقة عرض مجسدة، يجب أن تكون مالك طريقة العرض المجسدة هذه.

لإسقاط طريقة عرض مجسدة ، استخدم عبارة DROP VIEW . لإرسال عبارة DROP ، يمكنك استخدام محرر SQL في واجهة مستخدم Azure Databricks أو Databricks SQL CLI أو واجهة برمجة تطبيقات Databricks SQL. المثال التالي يسقط طريقة العرض المجسدة mv1 :

DROP MATERIALIZED VIEW mv1;

وصف طريقة عرض مجسدة

لاسترداد الأعمدة وأنواع البيانات لعرض مجسد، استخدم العبارة DESCRIBE . لاسترداد الأعمدة وأنواع البيانات وبيانات التعريف مثل المالك والموقع ووقت الإنشاء وحالة التحديث لعرض مجسد، استخدم DESCRIBE EXTENDED. لإرسال عبارة DESCRIBE ، استخدم محرر SQL في واجهة مستخدم Azure Databricks أو Databricks SQL CLI أو واجهة برمجة تطبيقات Databricks SQL.

تغيير مالك طريقة عرض مجسدة

يمكنك تغيير مالك طريقة عرض مجسدة إذا كنت مسؤول metastore ومسؤول مساحة عمل. تقوم طرق العرض المجسدة تلقائيا بإنشاء واستخدام خطوط أنابيب Delta Live Tables لمعالجة التغييرات. استخدم الخطوات التالية لتغيير مالك طرق العرض المجسدة:

  • في علامة تبويب دورة حياة البيانات للعرض المجسد، انقر فوق Pipelines ثم انقر فوق ارتباط البنية الأساسية لبرنامج ربط العمليات التجارية.
  • قائمة كباب انقر فوق قائمة kebab على يمين اسم المسار وانقر فوق Permissions. يؤدي ذلك إلى فتح مربع حوار الأذونات.
  • انقر فوق x إلى يمين اسم المالك الحالي لإزالة المالك الحالي.
  • ابدأ الكتابة لتصفية قائمة المستخدمين المتوفرين. انقر فوق المستخدم الذي يجب أن يكون مالك المسار الجديد.
  • انقر فوق حفظ لحفظ التغييرات وإغلاق مربع الحوار.

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

التحكم في الوصول إلى طرق العرض المجسدة

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

منح امتيازات إلى طريقة عرض مجسدة

لمنح حق الوصول إلى طريقة عرض مجسدة GRANT ، استخدم عبارة :

GRANT
  privilege_type [, privilege_type ] ...
  ON <mv_name> TO principal;

يمكن أن يكون privilege_type:

  • SELECT - يمكن SELECT للمستخدم العرض المجسد.
  • REFRESH - يمكن REFRESH للمستخدم العرض المجسد. يتم تشغيل التحديثات باستخدام أذونات المالك.

ينشئ المثال التالي طريقة عرض مجسدة ويمنح امتيازات التحديد والتحديث للمستخدم:

CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;

إبطال الامتيازات من طريقة عرض مجسدة

لإبطال الوصول من طريقة عرض مجسدة، استخدم العبارة REVOKE :

REVOKE
  privilege_type [, privilege_type ]
  ON <name> FROM principal;

عندما SELECT يتم إبطال الامتيازات الموجودة في جدول أساسي من مالك طريقة العرض المجسدة أو أي مستخدم آخر تم منحه SELECT امتيازات إلى طريقة العرض المجسدة، أو يتم إسقاط الجدول الأساسي، لا يزال مالك طريقة العرض المجسدة أو المستخدم الذي تم منحه حق الوصول قادرا على الاستعلام عن طريقة العرض المجسدة. ومع ذلك، يحدث السلوك التالي:

  • لم يعد REFRESH بإمكان مالك طريقة العرض المجسدة أو غيره ممن فقدوا الوصول إلى طريقة عرض مجسدة أن يصبحوا عرض مجسدا، وستصبح طريقة العرض المجسدة قديمة.
  • إذا كان تلقائيا مع جدول زمني، يفشل المجدول REFRESH التالي أو لا يتم تشغيله.

يلغي المثال التالي الامتياز SELECT من mv1:

REVOKE SELECT ON mv1 FROM user1;

تمكين موجز بيانات التغيير

يلزم تغيير موجز البيانات على الجداول الأساسية لطرق العرض المجسدة، باستثناء حالات استخدام متقدمة معينة. لتمكين تغيير موجز البيانات على جدول أساسي، قم بتعيين delta.enableChangeDataFeed خاصية الجدول باستخدام بناء الجملة التالي:

ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

عرض محفوظات التحديث لعرض مجسد

لعرض حالة REFRESH العمليات على طريقة عرض مجسدة، بما في ذلك التحديثات الحالية والماضية، استعلم عن سجل أحداث Delta Live Tables:

SELECT
  *
FROM
  event_log(TABLE(<fully-qualified-table-name>))
WHERE
  event_type = "update_progress"
ORDER BY
  timestamp desc;

استبدل <fully-qualified-table-name> بالاسم المؤهل بالكامل للعرض المجسد، بما في ذلك الكتالوج والمخطط.

راجع ما هو سجل أحداث Delta Live Tables؟.

القيود

  • للحصول على متطلبات الحوسبة ومساحة العمل، راجع المتطلبات.
  • لا تدعم طرق العرض المجسدة أعمدة الهوية أو المفاتيح البديلة.
  • إذا كانت طريقة العرض المجسدة تستخدم مجموع تجميع عبر NULLعمود -قادر وتبقى القيم فقط NULL في هذا العمود، فإن القيمة التجميعية الناتجة عن طرق العرض المجسدة هي صفر بدلا من NULL.
  • لا يمكنك قراءة موجز بيانات التغيير من طريقة عرض مجسدة.
  • قد تتضمن الملفات الأساسية التي تدعم طرق العرض المجسدة بيانات من جداول المصدر (بما في ذلك معلومات التعريف الشخصية المحتملة) التي لا تظهر في تعريف طريقة العرض المجسدة. تتم إضافة هذه البيانات تلقائيا إلى التخزين الأساسي لدعم التحديث المتزايد لطرق العرض المجسدة. نظرا لأن الملفات الأساسية لعرض مجسد قد تخاطر بكشف البيانات من الجداول الأولية وليس جزءا من مخطط العرض المجسد، توصي Databricks بعدم مشاركة التخزين الأساسي مع المستهلكين غير الموثوقين في المراحل النهائية. على سبيل المثال، افترض أن تعريف طريقة العرض المجسدة يتضمن عبارة COUNT(DISTINCT field_a) . على الرغم من أن تعريف طريقة العرض المجسدة يتضمن العبارة التجميعية COUNT DISTINCT فقط، فإن الملفات الأساسية ستحتوي على قائمة بالقيم الفعلية ل field_a.