Bagikan melalui


Kolom mask klausa

Berlaku untuk:ditandai dengan tanda centang ya Databricks SQL ditandai dengan tanda centang ya Databricks Runtime 12.2 LTS ke atas ditandai dengan tanda centang ya Unity Catalog saja

Menentukan fungsi yang diterapkan ke kolom setiap kali baris diambil dari tabel. Semua kueri berikutnya dari kolom tersebut menerima hasil evaluasi fungsi tersebut di atas kolom sebagai pengganti nilai asli kolom. Ini dapat berguna untuk tujuan kontrol akses berbutir halus di mana fungsi dapat memeriksa identitas atau keanggotaan grup dari pengguna yang memanggil untuk menentukan apakah akan menyunting nilai tersebut.

Anda dapat menambahkan masker kolom saat Anda:

Penting

Masker diterapkan segera setelah setiap baris diambil dari sumber data. Ekspresi, predikat, atau pengurutan apa pun diterapkan setelah penyamaran. Misalnya, menggabungkan kolom bertopeng dengan kolom lain dari tabel lain akan menggunakan nilai bertopeng untuk perbandingan penggabungan.

Untuk informasi selengkapnya tentang cara menggunakan masker kolom, lihat tabel Azure Databricks.

Sintaks

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

Parameter

  • func_name

    SQL UDF skalar dengan setidaknya satu parameter.

    Parameter pertama dari UDF SQL memetakan 1:1 dengan kolom yang dimasking. Jenis kolom bertopeng harus dapat dikonversi ke jenis parameter UDF SQL. Jika func_name memerlukan lebih banyak parameter, argumen harus disediakan oleh klausa USING COLUMNS.

    Jenis pengembalian fungsi harus dapat di-casting ke jenis data kolom yang ditutupi.

  • nama_kolom_lain

    Secara opsional menentukan kolom tambahan dari tabel kolom bertopeng untuk diteruskan ke func_name. Masing-masing other_column_name harus dapat diubah ke parameter yang sesuai dari func_name.

    Gunakan masker kolom untuk menganonimkan nilai column_identifier secara selektif berdasarkan pengguna yang menjalankan kueri terhadap table_name, nilai column_identifier, dan opsi other_column.

  • constant_literal

    Menentukan parameter konstanta dengan jenis yang cocok dengan parameter fungsi. Jenis berikut didukung: STRING, numerik (INTEGER, , FLOAT,DOUBLEDECIMAL...), BOOLEAN, , . INTERVALNULL

Contoh

Anda dapat menemukan contoh lainnya dalam tabel Azure Databricks.

-- 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