إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
طريقة العرض المجسدة هي طريقة عرض تتوفر فيها النتائج المحسوبة مسبقا للاستعلام ويمكن تحديثها لتعكس التغييرات في الإدخال. في كل مرة يتم فيها تحديث طريقة عرض مجسدة، تتم إعادة حساب نتائج الاستعلام لتعكس التغييرات في مجموعات البيانات الأولية. يتم دعم جميع طرق العرض المجسدة بواسطة مسار DLT. يمكنك تحديث طرق العرض المجسدة يدويا أو حسب جدول زمني.
لمعرفة المزيد حول كيفية إجراء تحديث يدوي، راجع تحديث (طريقة عرض مجسدة أو جدول دفق).
لمعرفة المزيد حول كيفية جدولة تحديث، راجع الأمثلة أو ALTER MATERIALIZED VIEW.
إشعار
يتم تشغيل عمليات الإنشاء والتحديث على طرق العرض المجسدة وجداول الدفق بواسطة مسار Delta Live Tables بلا خادم. يمكنك استخدام مستكشف الكتالوج لعرض تفاصيل حول البنية الأساسية لبرنامج ربط العمليات التجارية للنسخ الاحتياطي في واجهة المستخدم. راجع ما هو مستكشف الكتالوج؟.
بناء الجملة
{ CREATE OR REPLACE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] }
view_name
[ column_list ]
[ view_clauses ]
[schedule_clause]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ , table_constraint ] [...])
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] schedule_clause |
WITH { ROW FILTER clause } } [...]
schedule_clause
{ EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
CRON cron_string [ AT TIME ZONE timezone_id ] }
المعلمات
REPLACE
إذا تم تحديده، فسيستبدل طريقة العرض ومحتواها إذا كانت موجودة بالفعل.
إذا لم يكن موجودا
إنشاء طريقة العرض إذا لم تكن موجودة. إذا كانت طريقة عرض بهذا الاسم موجودة بالفعل، يتم تجاهل العبارة
CREATE MATERIALIZED VIEW.يمكنك تحديد واحد على الأكثر من
IF NOT EXISTSأوOR REPLACE.-
اسم طريقة العرض التي تم إنشاؤها حديثا. يجب أن يكون اسم طريقة العرض المؤهل بالكامل فريدا.
column_list
تسمية الأعمدة في نتيجة الاستعلام الخاصة بطريقة العرض اختياريا. إذا قمت بتوفير قائمة أعمدة، يجب أن يتطابق عدد الأسماء المستعارة للعمود مع عدد التعبيرات في الاستعلام. إذا لم يتم تحديد قائمة أعمدة، يتم اشتقاق الأسماء المستعارة من نص طريقة العرض.
-
يجب أن تكون أسماء الأعمدة فريدة وأن تعين إلى أعمدة الإخراج للاستعلام.
column_type
تحديد نوع بيانات العمود. لا تدعم طرق العرض المجسدة جميع أنواع البيانات التي يدعمها Azure Databricks.
column_comment
قيمة حرفية اختيارية
STRINGتصف اسم العمود. يجب تحديد هذا الخيار معcolumn_type. إذا لم يتم تحديد نوع العمود، يتم تخطي تعليق العمود.column_constraint
إضافة مفتاح أساسي إعلامي أو قيد مفتاح خارجي إعلامي إلى العمود في طريقة عرض مجسدة. إذا لم يتم تحديد نوع العمود، يتم تخطي قيد العمود.
-
إضافة دالة قناع عمود إلى إخفاء البيانات الحساسة. تتلقى جميع الاستعلامات اللاحقة من هذا العمود نتيجة تقييم تلك الدالة فوق العمود بدلا من القيمة الأصلية للعمود. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للدالة فحص هوية المستخدم الذي يستدعي أو عضويات المجموعة لتحديد ما إذا كان يجب تنقيح القيمة أم لا. إذا لم يتم تحديد نوع العمود، يتم تخطي قناع العمود.
-
table_constraint
إضافة مفتاح أساسي إعلامي أو قيد مفتاح خارجي إعلامي إلى الجدول في طريقة عرض مجسدة. إذا لم يتم تحديد نوع العمود، يتم تخطي قيد الجدول.
view_clauses
حدد التقسيم والتعليقات والخصائص المعرفة من قبل المستخدم وجدول تحديث للعرض المجسد الجديد اختياريا. يمكن تحديد كل عبارة فرعية مرة واحدة فقط.
-
قائمة اختيارية بأعمدة الجدول لتقسيم الجدول حسبها.
view_comment التعليق
STRINGقيمة حرفية لوصف الجدول.-
تعيين خاصية واحدة أو أكثر من الخصائص المعرفة من قبل المستخدم اختياريا.
استخدم هذا الإعداد لتحديد قناة وقت تشغيل Delta Live Tables المستخدمة لتشغيل هذه العبارة. تعيين قيمة الخاصية
pipelines.channelإلى"PREVIEW"أو"CURRENT". القيمة الافتراضية هي"CURRENT". لمزيد من المعلومات حول قنوات Delta Live Tables، راجع قنوات وقت تشغيل Delta Live Tables. جدولة [ تحديث ] schedule_clause
EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }لجدولة تحديث يحدث بشكل دوري، استخدم
EVERYبناء الجملة. إذاEVERYتم تحديد بناء الجملة، يتم تحديث جدول الدفق أو طريقة العرض المجسدة بشكل دوري في الفاصل الزمني المحدد استنادا إلى القيمة المتوفرة، مثلHOURأو .WEEKSHOURSDAYDAYSWEEKيسرد الجدول التالي قيم العدد الصحيح المقبولة لnumber.وحدة الوقت قيمة عدد صحيح HOUR or HOURS1 <= H <= 72 DAY or DAYS1 <= D <= 31 WEEK or WEEKS1 <= W <= 8 إشعار
الأشكال المفردة والجمعية للوحدة الزمنية المضمنة مكافئة دلاليا.
CRON cron_string [ AT TIME ZONE timezone_id ]لجدولة تحديث باستخدام قيمة كوارتز كرون . يتم قبول time_zone_values صالحة.
AT TIME ZONE LOCALغير مدعم.إذا
AT TIME ZONEلم يكن موجودا، يتم استخدام المنطقة الزمنية للجلسة. إذاAT TIME ZONEلم يكن موجودا ولم يتم تعيين المنطقة الزمنية لجلسة العمل، يتم طرح خطأ.SCHEDULEمكافئ دلاليا لSCHEDULE REFRESH.
عبارة WITH ROW FILTER
إضافة دالة عامل تصفية صف إلى الجدول. تتلقى جميع الاستعلامات اللاحقة من هذا الجدول مجموعة فرعية من الصفوف التي تقيم الدالة لها القيمة المنطقية TRUE. يمكن أن يكون هذا مفيدا لأغراض التحكم في الوصول الدقيقة حيث يمكن للوظيفة فحص الهوية أو عضويات المجموعة للمستخدم الذي يستدعي لتحديد ما إذا كان سيتم تصفية صفوف معينة أم لا.
-
-
استعلام يقوم بإنشاء طريقة العرض من الجداول الأساسية أو طرق العرض الأخرى.
الأذونات المطلوبة
المستخدم الذي ينشئ طريقة عرض مجسدة (MV) هو مالك MV ويحتاج إلى الحصول على الأذونات التالية:
SELECTامتياز على الجداول الأساسية المشار إليها بواسطة MV.USE CATALOGامتياز على الكتالوج الأصل والامتيازUSE SCHEMAعلى المخطط الأصل.CREATE MATERIALIZED VIEWامتياز على مخطط MV.
لكي يتمكن المستخدم من تحديث MV، فإنه يتطلب:
USE CATALOGامتياز على الكتالوج الأصل والامتيازUSE SCHEMAعلى المخطط الأصل.- ملكية MV أو
REFRESHالامتياز على MV. - يجب أن يكون لمالك MV الامتياز
SELECTعلى الجداول الأساسية المشار إليها بواسطة MV.
لكي يتمكن المستخدم من الاستعلام عن MV، فإنه يتطلب:
USE CATALOGامتياز على الكتالوج الأصل والامتيازUSE SCHEMAعلى المخطط الأصل.SELECTامتياز على طريقة العرض المجسدة.
عوامل تصفية الصفوف وأقنعة الأعمدة
تتيح لك عوامل تصفية الصفوف تحديد دالة تنطبق كعامل تصفية كلما جلب فحص الجدول صفوفا. تضمن عوامل التصفية هذه أن الاستعلامات اللاحقة ترجع فقط الصفوف التي تقيم لها دالة تقييم عامل التصفية إلى true.
تتيح لك أقنعة الأعمدة إخفاء قيم العمود كلما جلب فحص الجدول صفوفا. ستتلقى جميع الاستعلامات المستقبلية التي تتضمن هذا العمود نتيجة تقييم الدالة عبر العمود، واستبدال القيمة الأصلية للعمود.
لمزيد من المعلومات حول كيفية استخدام عوامل تصفية الصفوف وأقنعة الأعمدة، راجع تصفية بيانات الجدول الحساسة باستخدام عوامل تصفية الصفوف وأقنعة الأعمدة.
إدارة عوامل تصفية الصفوف وأقنعة الأعمدة
يجب إضافة عوامل تصفية الصفوف وأقنعة الأعمدة على طرق العرض المجسدة من خلال العبارة CREATE .
سلوك
- تحديث كمحدد: عندما
REFRESH MATERIALIZED VIEWتقوم العبارة بتحديث طريقة عرض مجسدة، يتم تشغيل دالات تصفية الصف مع حقوق المحدد (كمالك الجدول). وهذا يعني أن تحديث الجدول يستخدم سياق الأمان للمستخدم الذي أنشأ طريقة العرض المجسدة. - الاستعلام: أثناء تشغيل معظم عوامل التصفية مع حقوق المحدد، فإن الوظائف التي تتحقق من سياق المستخدم (مثل
CURRENT_USERوIS_MEMBER) هي استثناءات. تعمل هذه الدالات كمستدعي. يفرض هذا الأسلوب أمان البيانات الخاصة بالمستخدم وعناصر التحكم في الوصول استنادا إلى سياق المستخدم الحالي. - عند إنشاء طرق عرض مجسدة عبر جداول المصدر التي تحتوي على عوامل تصفية الصفوف وأقنعة الأعمدة، يكون تحديث طريقة العرض المجسدة دائما تحديثا كاملا. يقوم التحديث الكامل بإعادة معالجة جميع البيانات المتوفرة في المصدر بأحدث التعريفات. وهذا يضمن تقييم نهج الأمان في جداول المصدر وتطبيقها باستخدام أحدث البيانات والتعريفات.
الملاحظة
استخدم DESCRIBE EXTENDEDأو INFORMATION_SCHEMAأو أو مستكشف الكتالوج لفحص عوامل تصفية الصفوف وأقنعة الأعمدة الموجودة التي تنطبق على طريقة عرض مجسدة معينة. تسمح هذه الوظيفة للمستخدمين بمراجعة ومراجعة الوصول إلى البيانات ومقاييس الحماية على طرق العرض المجسدة.
القيود
- عندما تحتوي طريقة العرض المجسدة التي
sumتحتوي على تجميع فوق عمود NULL-able على آخر قيمة غير NULL تمت إزالتها من هذا العمود - وبالتالي تبقى القيم فقطNULLفي هذا العمود - ترجع القيمة التجميعية الناتجة لعرض العرض المجسد صفرا بدلا منNULL. - لا يتطلب مرجع العمود اسما مستعارا. تتطلب التعبيرات المرجعية غير العمودية اسما مستعارا، كما في المثال التالي:
- سمح:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1 - غير مسموح به:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- سمح:
NOT NULLيجب تحديد يدويا جنبا إلى جنب معPRIMARY KEYلكي تكون عبارة صالحة.- لا تدعم طرق العرض المجسدة أعمدة الهوية أو المفاتيح البديلة.
- لا تدعم
OPTIMIZEطرق العرض المجسدة والأوامرVACUUM. تتم الصيانة تلقائيا. - لا تدعم طرق العرض المجسدة التوقعات لتحديد قيود جودة البيانات.
الأمثلة
-- Create a materialized view if it doesn't exist
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create and schedule a materialized view to be refreshed daily at midnight.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
COMMENT 'Daily sales numbers'
SCHEDULE CRON '0 0 0 * * ? *'
AS SELECT date AS date, sum(sales) AS sumOfSales
FROM table1
GROUP BY date;
-- Sets the runtime channel to "PREVIEW"
> CREATE MATERIALIZED VIEW mv_preview
TBLPROPERTIES(pipelines.channel = "PREVIEW")
AS SELECT * FROM RANGE(10)
-- Create a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id int NOT NULL,
full_name string,
movie_title string,
CONSTRAINT movie_pk PRIMARY KEY(member_id)
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create or replace the materialized view to remove the table constraint and add a partition
> CREATE OR REPLACE MATERIALIZED VIEW subscribed_movies
PARTITIONED BY (member_id)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create a materialized view with a row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
id int,
name string,
region string,
ssn string MASK catalog.schema.ssn_mask_fn
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT id, name, region, ssn
FROM employees;