مشاركة عبر


عبارة العمود mask

ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 12.2 LTS وما فوق وضع علامة كتالوج Unity فقط

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

يمكنك إضافة أقنعة الأعمدة عند:

هام

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

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

بناء الجملة

MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]

المعلمات

  • func_name

    SQL UDF عددي مع معلمة واحدة على الأقل.

    المعلمة الأولى من SQL UDF تعين 1:1 مع العمود المقنع. يجب أن يكون نوع العمود المقنع قابلا للصب إلى نوع معلمة SQL UDF. إذا كان func_name يتطلب المزيد من المعلمات، يجب توفير الوسيطات بواسطة العبارة USING COLUMNS .

    يجب أن يكون نوع إرجاع الدالة قابلا للصب إلى نوع بيانات العمود المقنع.

  • other_column_name

    يحدد اختياريا أعمدة إضافية لجدول العمود المقنع لتمريرها إلى func_name. يجب أن يكون كل other_column_name منها قابلا للصب إلى المعلمة المقابلة ل func_name.

    استخدم قناع عمود لحجب قيمة column_identifier بشكل انتقائي استنادا إلى المستخدم الذي ينفذ استعلاما مقابل table_name، وقيمة column_identifier و الاختيارية other_column.

  • constant_literal

    تحديد معلمة ثابتة بنوع يطابق معلمة دالة. الأنواع التالية مدعومة: STRING، رقمية (INTEGER، ، FLOAT, DECIMAL DOUBLE...)، BOOLEAN، ، INTERVAL، . NULL

الأمثلة

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

-- Create a table with a masked column
> CREATE FUNCTION mask_ssn(ssn STRING) RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
> CREATE TABLE persons(name STRING, ssn STRING MASK mask_ssn);
> INSERT INTO persons VALUES('James', '123-45-6789';

-- As a non-member of 'HumanResourceDept'
> SELECT * FROM persons;
  James  ***-**-****

-- As a member of 'HumanResourceDept'
> SELECT * FROM persons;
  James  123-45-6789

-- Create a masking function with multiple parameters. When applied first parameter will be the column that masking function applies to
> CREATE FUNCTION mask_pii_regional(value STRING, region STRING)
  RETURN IF(is_account_group_member(region || '_HumanResourceDept'), value, 'REDACTED');

-- Create a table with a masked column. Masking function first parameter will be the column that is masked.
-- The rest of the parameters should be specified in `USING COLUMNS (<columnList>)` clause
> CREATE TABLE persons(name STRING, address STRING MASK mask_pii_regional USING COLUMNS (region), region STRING);
> INSERT INTO persons('James', '160 Spear St, San Francisco', 'US')

-- As a non-member of 'US_HumanResourceDept'
> SELECT * FROM persons;
  James | REDACTED | US

-- As a member of 'US_HumanResourceDept'
> SELECT * FROM persons;
  James | 160 Spear St, San Francisco | US