Klausa kolom mask
Berlaku untuk: Databricks SQL Databricks Runtime 12.2 LTS dan di atas Unity Catalog saja
Penting
Fitur ini ada di Pratinjau Publik.
Menentukan fungsi yang diterapkan ke kolom setiap kali baris diambil dari tabel. Semua kueri di masa mendatang dari kolom tersebut akan menerima hasil evaluasi fungsi tersebut di atas kolom sebagai pengganti nilai asli kolom. Ini dapat berguna untuk tujuan kontrol akses terperintah di mana fungsi dapat memeriksa identitas atau keanggotaan grup pengguna yang memanggil untuk memutuskan apakah akan meredakan nilai.
Anda dapat menambahkan masker kolom saat Anda:
- Buat tabel menggunakan CREATE TABLE.
- Tambahkan kolom ke tabel dengan ALTER TABLE ... TAMBAHKAN KOLOM.
- Mengubah kolom dengan ALTER TABLE ... UBAH KOLOM.
Penting
Masker diterapkan segera setelah setiap baris diambil dari sumber data. Ekspresi, predikat, atau pengurutan apa pun diterapkan setelah masking. Misalnya, menggabungkan antara kolom bertopeng terhadap kolom lain dari tabel lain akan menggunakan nilai bertopeng untuk perbandingan gabungan.
Untuk informasi selengkapnya tentang cara menggunakan masker kolom lihat Memfilter data tabel sensitif menggunakan filter baris dan masker kolom.
Sintaks
MASK func_name [ USING COLUMNS ( other_column_name [, ...] ) ]
Parameter
-
SQL UDF skalar dengan setidaknya satu parameter.
Parameter pertama peta UDF SQL 1:1 dengan kolom bertopeng. Jenis kolom bertopeng harus dapat dicor ke jenis parameter SQL UDF. Jika
func_name
memerlukan lebih banyak parameter, argumen harus disediakan olehUSING COLUMNS
klausa.Jenis pengembalian fungsi harus dapat ditransmisikan ke jenis data kolom bertopeng.
-
Secara opsional menentukan kolom tambahan dari tabel kolom bertopeng untuk diteruskan ke
func_name
. Masing-masingother_column_name
harus dicor ke parameter yang sesuai darifunc_name
.Gunakan masker kolom untuk secara selektif menganonimkan
column_identifier
nilai berdasarkan pengguna yang menjalankan kueri terhadaptable_name
, nilaicolumn_identifier
dan opsionalother_column
.
Contoh
Anda dapat menemukan contoh lainnya di Memfilter data tabel sensitif menggunakan filter baris dan masker kolom.
-- 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