مشاركة عبر


تصفية بيانات الجدول الحساسة باستخدام عوامل تصفية الصفوف وأقنعة الأعمدة

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

ما هي عوامل تصفية الصفوف؟

تسمح لك عوامل تصفية الصفوف بتطبيق عامل تصفية على جدول بحيث تقوم الاستعلامات بإرجاع الصفوف التي تفي بمعايير التصفية فقط. يمكنك تنفيذ عامل تصفية صف كدالة معرفة من قبل مستخدم SQL (UDF). يتم دعم Python وSc scala UDFs أيضا، ولكن فقط عندما يتم تضمينها في SQL UDFs.

ما هي أقنعة الأعمدة؟

تتيح لك أقنعة الأعمدة تطبيق دالة إخفاء على عمود جدول. يتم تقييم دالة الإخفاء في وقت تشغيل الاستعلام، واستبدال كل مرجع من العمود الهدف بنتائج دالة الإخفاء. بالنسبة لمعظم حالات الاستخدام، تحدد أقنعة الأعمدة ما إذا كنت تريد إرجاع قيمة العمود الأصلية أو تنقيحها استنادا إلى هوية المستخدم الذي يستدعي. أقنعة الأعمدة هي تعبيرات مكتوبة باسم SQL UDFs أو ك Python أو Scala UDFs التي يتم تضمينها في SQL UDFs.

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

ما الفرق بين عوامل التصفية هذه وطرق العرض الديناميكية؟

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

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

من ناحية أخرى، يؤدي إقران عامل تصفية صف أو قناع عمود إلى جدول هدف إلى تطبيق المنطق المقابل مباشرة على الجدول نفسه دون إدخال أسماء جداول جديدة. يمكن أن تستمر الاستعلامات اللاحقة في الرجوع مباشرة إلى الجدول الهدف باستخدام اسمه الأصلي.

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

قبل البدء

لإضافة عوامل تصفية الصفوف وأقنعة الأعمدة إلى الجداول، يجب أن يكون لديك:

يجب عليك أيضا تلبية المتطلبات التالية:

  • لتعيين دالة تضيف عوامل تصفية الصفوف أو أقنعة الأعمدة إلى جدول، يجب أن يكون لديك EXECUTE الامتياز على الدالة وعلى USE SCHEMA المخطط وعلى USE CATALOG الكتالوج الأصل.
  • إذا كنت تقوم بإضافة عوامل تصفية أو أقنعة عند إنشاء جدول جديد، فيجب أن يكون لديك الامتياز CREATE TABLE على المخطط.
  • إذا كنت تقوم بإضافة عوامل تصفية أو أقنعة إلى جدول موجود ، فيجب أن تكون مالك الجدول أو لديك كل من MODIFY الامتيازات و SELECT على الجدول.

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

  • مستودع SQL.

  • وضع الوصول المشترك على Databricks Runtime 12.2 LTS أو أعلى.

  • وضع وصول مستخدم واحد على Databricks Runtime 15.4 LTS أو أعلى.

    لا يمكنك قراءة عوامل تصفية الصفوف أو أقنعة الأعمدة باستخدام حساب مستخدم واحد على Databricks Runtime 15.3 أو أدناه.

    للاستفادة من تصفية البيانات المتوفرة في Databricks Runtime 15.4 LTS وما فوق، يجب عليك أيضا التحقق من تمكين مساحة العمل للحساب بلا خادم، لأن وظيفة تصفية البيانات التي تدعم عوامل تصفية الصفوف وأقنعة الأعمدة تعمل على الحوسبة بلا خادم. لذلك قد يتم تحصيل رسوم منك مقابل موارد الحوسبة بلا خادم عند استخدام حساب مستخدم واحد لقراءة الجداول التي تستخدم عوامل تصفية الصفوف أو أقنعة الأعمدة. راجع التحكم في الوصول الدقيق على حساب مستخدم واحد.

تطبيق عامل تصفية صف

لإنشاء عامل تصفية صف، يمكنك كتابة دالة (UDF) لتعريف نهج التصفية ثم تطبيقها على جدول. يمكن أن يحتوي كل جدول على عامل تصفية صف واحد فقط. يقبل عامل تصفية الصف صفرا أو أكثر من معلمات الإدخال حيث ترتبط كل معلمة إدخال بعمود واحد من الجدول المقابل.

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

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوج كتالوج.
  2. استعرض الجدول الذي تريد تصفيته أو ابحث عنه.
  3. في علامة التبويب نظرة عامة ، انقر فوق عامل تصفية الصف: إضافة عامل تصفية.
  4. في مربع الحوار إضافة عامل تصفية الصف، حدد الكتالوج والمخطط الذي يحتوي على دالة التصفية، ثم حدد الدالة.
  5. في مربع الحوار الموسع، اعرض تعريف الدالة وحدد أعمدة الجدول التي تطابق الأعمدة المضمنة في عبارة الدالة.
  6. انقر فوق إضافة.

لإزالة عامل التصفية من الجدول، انقر فوق عامل تصفية الصف fx وانقر فوق إزالة.

SQL

لإنشاء عامل تصفية صف ثم إضافته إلى جدول موجود، استخدم CREATE FUNCTION الدالة وطبقها باستخدام ALTER TABLE. يمكنك أيضا تطبيق دالة عند إنشاء جدول باستخدام CREATE TABLE.

  1. إنشاء عامل تصفية الصف:

    CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...)
    RETURN {filter clause whose output must be a boolean};
    
  2. تطبيق عامل تصفية الصف على جدول باستخدام اسم عمود:

    ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<column_name>, ...);
    

أمثلة بناء جملة إضافية:

  • تطبيق عامل تصفية الصف على جدول باستخدام قيمة حرفية ثابتة تطابق معلمة دالة:

    ALTER TABLE <table_name> SET ROW FILTER <function_name> ON (<constant_literal>, ...);
    
  • إزالة عامل تصفية صف من جدول:

    ALTER TABLE <table_name> DROP ROW FILTER;
    
  • تعديل عامل تصفية صف:

    Run a DROP FUNCTION statement to drop the existing function, or use CREATE OR REPLACE FUNCTION to replace it.
    
  • حذف عامل تصفية صف:

    ALTER TABLE <table_name> DROP ROW FILTER;
    DROP FUNCTION <function_name>;
    

    إشعار

    يجب تنفيذ ALTER TABLE ... DROP ROW FILTER الأمر قبل إسقاط الدالة. إذا لم تفعل ذلك، فسيكون الجدول في حالة يتعذر الوصول إليها.

    إذا تعذر الوصول إلى الجدول بهذه الطريقة، فغير الجدول وأفلت مرجع عامل تصفية الصف المعزول باستخدام ALTER TABLE <table_name> DROP ROW FILTER;.

راجع أيضا عبارة ROW FILTER.

أمثلة تصفية الصفوف

ينشئ هذا المثال دالة SQL المعرفة من قبل المستخدم التي تنطبق على أعضاء المجموعة admin في المنطقة US.

عند تطبيق هذه الدالة النموذجية على sales الجدول، يمكن لأعضاء admin المجموعة الوصول إلى كافة السجلات في الجدول. إذا تم استدعاء الدالة بواسطة غير مسؤول، يفشل RETURN_IF الشرط ويتم region='US' تقييم التعبير، وتصفية الجدول لإظهار السجلات في US المنطقة فقط.

CREATE FUNCTION us_filter(region STRING)
RETURN IF(IS_ACCOUNT_GROUP_MEMBER('admin'), true, region='US');

تطبيق الدالة على جدول كعامل تصفية صف. ثم ترجع الاستعلامات اللاحقة sales من الجدول مجموعة فرعية من الصفوف.

CREATE TABLE sales (region STRING, id INT);
ALTER TABLE sales SET ROW FILTER us_filter ON (region);

تعطيل عامل تصفية الصف. ثم تقوم استعلامات المستخدم المستقبلية من sales الجدول بإعادة كافة الصفوف في الجدول.

ALTER TABLE sales DROP ROW FILTER;

إنشاء جدول باستخدام الدالة المطبقة كعامل تصفية صف كجزء من العبارة CREATE TABLE . تقوم الاستعلامات المستقبلية من sales الجدول بعد ذلك بإعادة مجموعة فرعية من الصفوف.

CREATE TABLE sales (region STRING, id INT)
WITH ROW FILTER us_filter ON (region);

تطبيق قناع عمود

لتطبيق قناع عمود، قم بإنشاء دالة (UDF) ثم قم بتطبيقها على عمود جدول.

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

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوج كتالوج.
  2. استعرض الجدول أو ابحث فيه.
  3. في علامة التبويب نظرة عامة، ابحث عن الصف الذي تريد تطبيق قناع العمود عليه وانقر فوق أيقونة تحرير القناع أيقونة التحرير .
  4. في مربع الحوار إضافة قناع عمود، حدد الكتالوج والمخطط الذي يحتوي على دالة التصفية، ثم حدد الدالة.
  5. في مربع الحوار الموسع، اعرض تعريف الدالة. إذا كانت الدالة تتضمن أي معلمات بالإضافة إلى العمود الذي يتم إخفاءه، فحدد أعمدة الجدول التي تريد تحويل معلمات الدالة الإضافية إليها.
  6. انقر فوق إضافة.

لإزالة قناع العمود من الجدول، انقر فوق قناع العمود fx في صف الجدول وانقر فوق إزالة.

SQL

لإنشاء قناع عمود وإضافته إلى عمود جدول موجود، استخدم CREATE FUNCTION دالة الإخفاء وطبقها باستخدام ALTER TABLE. يمكنك أيضا تطبيق دالة عند إنشاء جدول باستخدام CREATE TABLE.

يمكنك استخدام SET MASK لتطبيق دالة الإخفاء. MASK ضمن عبارة ، يمكنك استخدام أي من وظائف وقت التشغيل المضمنة في Azure Databricks أو استدعاء دالات أخرى معرفة من قبل المستخدم. تتضمن حالات الاستخدام الشائعة فحص هوية المستخدم الذي يقوم باستدعاء تشغيل الدالة باستخدام current_user( ) أو الحصول على المجموعات التي يكون عضوا فيها باستخدام is_account_group_member( ). للحصول على التفاصيل، راجع عبارة قناع العمود والوظائف المضمنة.

  1. إنشاء قناع عمود:

    CREATE FUNCTION <function_name> (<parameter_name> <parameter_type>, ...)
    RETURN {expression with the same type as the first parameter};
    
  2. تطبيق قناع العمود على عمود في جدول موجود:

    ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS <additional_columns>;
    

أمثلة بناء جملة إضافية:

  • تطبيق قناع العمود على عمود في جدول موجود باستخدام حرف حرفي ثابت يطابق معلمة دالة:

    ALTER TABLE <table_name> ALTER COLUMN <col_name> SET MASK <mask_func_name> USING COLUMNS (<constant_name>, ...);
    
  • إزالة قناع عمود من عمود في جدول:

    ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
    
  • تعديل قناع عمود: إما DROP الدالة الموجودة، أو استخدام CREATE OR REPLACE TABLE.

  • حذف قناع عمود:

    ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;
    DROP FUNCTION <function_name>;
    

    إشعار

    يجب تنفيذ ALTER TABLE الأمر قبل إسقاط الدالة أو سيكون الجدول في حالة يتعذر الوصول إليها.

    إذا تعذر الوصول إلى الجدول بهذه الطريقة، فغير الجدول وأفلت مرجع القناع المعزول باستخدام ALTER TABLE <table_name> ALTER COLUMN <column where mask is applied> DROP MASK;.

أمثلة قناع العمود

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

CREATE FUNCTION ssn_mask(ssn STRING)
  RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;

تطبيق الدالة الجديدة على جدول كقناع عمود. يمكنك إضافة قناع العمود عند إنشاء الجدول أو بعده.

--Create the `users` table and apply the column mask in a single step:

CREATE TABLE users (
  name STRING,
  ssn STRING MASK ssn_mask);
--Create the `users` table and apply the column mask after:

CREATE TABLE users
  (name STRING, ssn STRING);

ALTER TABLE users ALTER COLUMN ssn SET MASK ssn_mask;

تقوم الاستعلامات الموجودة في هذا الجدول الآن بإرجاع قيم الأعمدة المخفية ssn عندما لا يكون المستخدم الاستعلام عضوا في HumanResourceDept المجموعة:

SELECT * FROM users;
  James  ***-**-****

لتعطيل قناع العمود بحيث ترجع الاستعلامات القيم الأصلية في ssn العمود:

ALTER TABLE users ALTER COLUMN ssn DROP MASK;

استخدام جداول التعيين لإنشاء قائمة التحكم في الوصول

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

تثبت هذه المنهجية أنها مفيدة في معالجة العديد من حالات الاستخدام بمتطلبات مخصصة. تتضمن الأمثلة ما يلي:

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

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

أمثلة جدول التعيين

استخدم جدول تعيين للتحقق مما إذا كان المستخدم الحالي في قائمة:

USE CATALOG main;

إنشاء جدول تعيين جديد:

DROP TABLE IF EXISTS valid_users;

CREATE TABLE valid_users(username string);
INSERT INTO valid_users
VALUES
  ('fred@databricks.com'),
  ('barney@databricks.com');

إنشاء عامل تصفية جديد:

إشعار

يتم تشغيل كافة عوامل التصفية مع حقوق المحدد باستثناء الوظائف التي تتحقق من سياق المستخدم (على سبيل المثال، CURRENT_USER الدالتين و IS_MEMBER ) التي تعمل كمستدعي.

في هذا المثال، تتحقق الدالة لمعرفة ما إذا كان المستخدم الحالي في valid_users الجدول. إذا تم العثور على المستخدم، ترجع الدالة true.

DROP FUNCTION IF EXISTS row_filter;

CREATE FUNCTION row_filter()
  RETURN EXISTS(
    SELECT 1 FROM valid_users v
    WHERE v.username = CURRENT_USER()
);

يطبق المثال أدناه عامل تصفية الصف أثناء إنشاء الجدول. يمكنك أيضا إضافة عامل التصفية لاحقا باستخدام عبارة ALTER TABLE . عند تطبيق على جدول كامل، استخدم بناء الجملة ON () . لاستخدام ON (row);صف معين.

DROP TABLE IF EXISTS data_table;

CREATE TABLE data_table
  (x INT, y INT, z INT)
  WITH ROW FILTER row_filter ON ();

INSERT INTO data_table VALUES
  (1, 2, 3),
  (4, 5, 6),
  (7, 8, 9);

حدد البيانات من الجدول. يجب أن يرجع هذا البيانات فقط إذا كان المستخدم في valid_users الجدول.

SELECT * FROM data_table;

إنشاء جدول تعيين يتضمن حسابات يجب أن يكون لها حق الوصول دائما لعرض جميع الصفوف في الجدول، بغض النظر عن قيم العمود:

CREATE TABLE valid_accounts(account string);
INSERT INTO valid_accounts
VALUES
  ('admin'),
  ('cstaff');

الآن قم بإنشاء SQL UDF الذي يرجع true إذا كانت قيم جميع الأعمدة في الصف أقل من خمسة، أو إذا كان المستخدم الذي يستدعي عضوا في جدول التعيين أعلاه.

CREATE FUNCTION row_filter_small_values (x INT, y INT, z INT)
  RETURN (x < 5 AND y < 5 AND z < 5)
  OR EXISTS(
    SELECT 1 FROM valid_accounts v
    WHERE IS_ACCOUNT_GROUP_MEMBER(v.account));

وأخيرا، قم بتطبيق SQL UDF على الجدول كعامل تصفية صف:

ALTER TABLE data_table SET ROW FILTER row_filter_small_values ON (x, y, z);

الدعم والقيود

لا يتم دعم عوامل تصفية الصفوف وأقنعة الأعمدة مع جميع وظائف Azure Databricks أو على جميع موارد الحوسبة. يسرد هذا القسم الوظائف والقيود المدعومة.

الميزات والتنسيقات المدعومة

قائمة الوظائف المدعومة هذه ليست شاملة. يتم سرد بعض العناصر لأنها لم تكن معتمدة أثناء المعاينة العامة.

  • يتم دعم دفاتر ملاحظات Databricks SQL وDatabricks لأحمال عمل SQL.

  • يتم دعم أوامر DML من قبل المستخدمين الذين لديهم MODIFY امتيازات. يتم تطبيق عوامل التصفية والأقنعة على البيانات التي تتم قراءتها بواسطة UPDATE عبارات و DELETE ولا يتم تطبيقها على البيانات المكتوبة (بما في ذلك INSERT).

  • تنسيقات البيانات المدعومة:

    • Delta وParquet للجداول المدارة والخارجية.
    • تنسيقات بيانات أخرى متعددة للجداول الخارجية المسجلة في كتالوج Unity باستخدام Lakehouse Federation.
  • يمكن أن تتضمن معلمات النهج تعبيرات ثابتة (سلاسل، رقمية، فواصل زمنية، منطقيات، قيم خالية).

  • يتم دعم SQL وPython وSc scala UDFs كدالات لتصفية الصفوف أو قناع العمود، طالما أنها مسجلة في كتالوج Unity. يجب التفاف Python وSc scala UDFs في SQL UDF.

  • يمكنك إنشاء طرق عرض على الجداول التي تشير إلى أقنعة الأعمدة أو عوامل تصفية الصفوف، ولكن لا يمكنك إضافة أقنعة أعمدة أو عوامل تصفية صفوف إلى طريقة عرض.

  • يتم دعم موجزات بيانات تغيير Delta Lake طالما أن المخطط متوافق مع عوامل تصفية الصفوف وأقنعة الأعمدة التي تنطبق على الجدول الهدف.

  • الجداول الخارجية مدعومة.

  • يتم دعم أخذ عينات الجدول.

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

  • تدعم طرق عرض Databricks SQL المجسدة وجداول دفق Databricks SQL عوامل تصفية الصفوف وأقنعة الأعمدة (المعاينة العامة):

    • يمكنك إضافة عوامل تصفية الصفوف وأقنعة الأعمدة إلى طريقة عرض مجسدة ل Databricks SQL أو جدول دفق. يجب القيام بذلك بشكل تعريفي عند تعريف طريقة العرض المجسدة أو جدول البث. راجع إنشاء طريقة عرض مجسدة أو إنشاء جدول دفق.
    • يمكنك تعريف طرق عرض Databricks SQL المجسدة أو جداول الدفق على الجداول التي تتضمن عوامل تصفية الصفوف وأقنعة الأعمدة.
  • تدعم طرق العرض المجسدة وجداول الدفق المعلنة والمنشرة في Delta Live Tables عوامل تصفية الصفوف أو أقنعة الأعمدة (معاينة عامة):

    • يمكنك إضافة عوامل تصفية الصفوف وأقنعة الأعمدة إلى طريقة عرض مجسدة في Delta Live Tables أو جدول دفق.
    • يمكنك تعريف طرق العرض المجسدة في Delta Live Tables أو جداول الدفق على الجداول التي تتضمن عوامل تصفية الصفوف وأقنعة الأعمدة.

    راجع نشر الجداول باستخدام عوامل تصفية الصفوف وأقنعة الأعمدة.

اعتبارات الأداء

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

  • استخدام دالات النهج البسيطة: ستؤدي دالات النهج ذات التعبيرات الأقل بشكل عام بشكل أفضل من التعبيرات الأكثر تعقيدا. تجنب استخدام جداول التعيين والاستعلامات الفرعية للتعبير لصالح دالات CASE البسيطة.
  • تقليل عدد وسيطات الدالة: لا يمكن ل Azure Databricks تحسين مراجع الأعمدة بعيدا إلى الجدول المصدر الناتج عن وسيطات دالة النهج، حتى إذا لم يتم استخدام هذه الأعمدة في الاستعلام. استخدم دالات النهج مع وسيطات أقل، حيث ستؤدي الاستعلامات من هذه الجداول بشكل عام بشكل أفضل.
  • تجنب إضافة عوامل تصفية الصفوف مع عدد كبير جدا من وموصلات AND: نظرا لأن كل جدول يدعم فقط إضافة عامل تصفية صف واحد على الأكثر، فإن النهج الشائع هو دمج وظائف النهج المطلوبة المتعددة مع AND. ومع ذلك، لكل موصل، تزيد فرص أن يتضمن الملتحمة (الملتحمة) المكونات المذكورة في مكان آخر في هذا الجدول والتي قد تؤثر على الأداء (مثل استخدام جداول التعيين). استخدم عددا أقل من الملتحمة لتحسين الأداء.
  • استخدم التعبيرات الحتمية التي لا يمكنها طرح أخطاء في نهج الجدول والاستعلامات من هذه الجداول: قد تطرح بعض التعبيرات أخطاء إذا كانت المدخلات المتوفرة غير صالحة، مثل قسمة ANSI. في مثل هذه الحالات، يجب ألا يدفع المحول البرمجي SQL العمليات مع تلك التعبيرات (مثل عوامل التصفية) إلى أسفل جدا في خطة الاستعلام، لتجنب إمكانية حدوث أخطاء مثل "القسمة على الصفر" التي تكشف عن معلومات حول القيم قبل عمليات التصفية و/أو الإخفاء. استخدم التعبيرات التي تكون حتمية ولا تطرح أخطاء أبدا، كما هو الحال try_divide في هذا المثال.
  • تشغيل استعلامات الاختبار عبر الجدول لقياس الأداء: إنشاء استعلامات واقعية تمثل حمل العمل الذي تتوقعه للجدول الخاص بك باستخدام عوامل تصفية الصفوف و/أو أقنعة الأعمدة وقياس الأداء. قم بإجراء تعديلات صغيرة على وظائف النهج ولاحظ تأثيراتها حتى تصل إلى توازن جيد بين الأداء والتعبير لمنطق التصفية والإخفاء.

القيود

  • لا تدعم إصدارات Databricks Runtime أقل من 12.2 LTS عوامل تصفية الصفوف أو أقنعة الأعمدة. تفشل أوقات التشغيل هذه بشكل آمن، مما يعني أنه إذا حاولت الوصول إلى الجداول من الإصدارات غير المدعومة من أوقات التشغيل هذه، فلن يتم إرجاع أي بيانات.
  • لا تعمل "مشاركة دلتا" مع الأمان على مستوى الصف أو أقنعة الأعمدة.
  • لا يمكنك تطبيق الأمان على مستوى الصف أو أقنعة الأعمدة على طريقة عرض.
  • لا يعمل السفر عبر الزمن مع الأمان على مستوى الصف أو أقنعة الأعمدة.
  • الوصول المستند إلى المسار إلى الملفات في الجداول ذات النهج غير معتمد.
  • لا يتم دعم نهج تصفية الصفوف أو أقنعة الأعمدة ذات التبعيات الدائرية مرة أخرى إلى النهج الأصلية.
  • النسخ العميقة والضحلة غير مدعومة.
  • MERGE لا تدعم عبارات الجداول ذات نهج تصفية الصفوف التي تحتوي على تداخل أو تجميعات أو نوافذ أو حدود أو وظائف غير محددة.
  • واجهات برمجة تطبيقات Delta Lake غير مدعومة.

تقييد حساب مستخدم واحد

لا يمكنك الوصول إلى جدول يحتوي على عوامل تصفية صفوف أو أقنعة أعمدة من مورد حساب مستخدم واحد على Databricks Runtime 15.3 أو أدناه. يمكنك استخدام وضع وصول مستخدم واحد على Databricks Runtime 15.4 LTS أو أعلى، إذا تم تمكين مساحة العمل الخاصة بك للحساب بلا خادم. لمزيد من المعلومات، راجع التحكم في الوصول الدقيق على حساب مستخدم واحد.