Klauzula Kolumna mask
Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowszy tylko wykaz aparatu Unity
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Określa funkcję, która jest stosowana do kolumny za każdym razem, gdy wiersze są pobierane z tabeli. Wszystkie przyszłe zapytania z tej kolumny otrzymają wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego, aby zdecydować, czy zredagować wartość.
Maski kolumn można dodawać, gdy:
- Utwórz tabelę przy użyciu polecenia CREATE TABLE.
- Dodaj kolumny do tabeli za pomocą polecenia ALTER TABLE ... DODAJ KOLUMNĘ.
- Trwa zmienianie kolumny za pomocą polecenia ALTER TABLE ... ZMIEŃ KOLUMNĘ.
Ważne
Maska jest stosowana natychmiast po pobraniu każdego wiersza ze źródła danych. Wszystkie wyrażenia, predykaty lub kolejność są stosowane po maskowaniu. Na przykład dołączenie między zamaskowaną kolumną względem innej kolumny z innej tabeli spowoduje użycie zamaskowanych wartości dla porównania sprzężenia.
Aby uzyskać więcej informacji na temat używania masek kolumn, zobacz Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.
Składnia
MASK func_name [ USING COLUMNS ( other_column_name [, ...] ) ]
Parametry
-
Skalarna funkcja zdefiniowanej przez użytkownika SQL z co najmniej jednym parametrem.
Pierwszy parametr funkcji zdefiniowanej przez użytkownika SQL mapuje wartość 1:1 z zamaskowaną kolumną. Typ maskowanej kolumny musi być rzutowany do typu parametru UDF SQL. Jeśli
func_name
wymaga więcej parametrów, argumenty muszą być podane przez klauzulęUSING COLUMNS
.Zwracany typ funkcji musi być rzutowany na typ danych maskowanej kolumny.
-
Opcjonalnie określa dodatkowe kolumny tabeli zamaskowanej kolumny, które mają być przekazywane do
func_name
elementu . Każdyother_column_name
element musi być rzutowalny do odpowiedniego parametru .func_name
Użyj maski kolumny, aby selektywnie anonimizować wartość
column_identifier
na podstawie użytkownika wykonującego zapytanie względemtable_name
wartości , wartościcolumn_identifier
i opcjonalnegoother_column
.
Przykłady
Więcej przykładów można znaleźć w temacie Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.
-- 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