Oszlop mask klauzula

A következőkre vonatkozik:pipa jelöléssel igen Databricks SQL pipa jelöléssel igen Databricks Runtime 12.2 LTS és újabb pipa jelöléssel igen kizárólag a Unity Catalog esetén

Azon oszlopra alkalmazott függvényt ad meg, amely az táblából történő sorok lekérdezésekor érvényesül. Az oszlop minden további lekérdezése megkapja a függvény kiértékelésének eredményét az oszlopon az oszlop eredeti értéke helyett. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, ahol a függvény megvizsgálhatja az invokáló felhasználó identitását vagy csoporttagságát annak megállapításához, hogy az értéket újra kívánja-e használni.

Oszlopmaszkokat akkor vehet fel, ha:

Fontos

A maszkot a rendszer azonnal alkalmazza, amint minden sort lekért az adatforrásból. Maszkolás után minden kifejezést, predikátumot és rendezést alkalmazunk. A maszkolt oszlop és egy másik tábla oszlopai közötti illesztés például a maszkolt értékeket használja az illesztés összehasonlításához.

Az oszlopmaszkok használatáról további információt az Azure Databricks-táblákban talál.

Szükséges jogosultságok

Ha olyan függvényt szeretne hozzárendelni, amely oszlopmaszkot ad hozzá egy táblához, rendelkeznie kell a EXECUTE jogosultsággal a függvényen, USE SCHEMA a sémán és USE CATALOG a szülőkatalóguson.

Ha új tábla létrehozásakor oszlopmaszkot ad hozzá, akkor rendelkeznie kell a CREATE TABLE séma jogosultságával.

Ha egy meglévő táblán oszlopmaszkot vesz fel vagy távolít el, akkor a tábla tulajdonosának kell lennie, vagy rendelkeznie kell a MANAGE táblában lévő jogosultságokkal és SELECT jogosultságokkal.

Ha ugyanez az utasítás a táblázatsémát is módosítja (például új oszlopot ad hozzá maszkkal), akkor a táblán is szüksége van a MODIFY jogosultságra.

Szintaxis

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

Paraméterek

  • func_name

    Skaláris SQL UDF legalább egy paraméterrel.

    Az SQL UDF első paramétere 1:1-et képez le a maszkolt oszlopmal. A maszkolt oszlop típusának az SQL UDF paramétertípusára kell átírhatónak lennie. Ha func_name több paramétert igényel, az argumentumokat a USING COLUMNS záradéknak kell megadnia.

    A függvény visszatérési típusának átalakíthatónak kell lennie a maszkolt oszlop adattípusára.

    Fontos

    Ha a maszkolt oszlop adattípusa nem egyezik meg pontosan a függvényparaméter típusával, az oszlop értéke implicit módon lesz vetve. A ANSI_MODE letiltott értékeket a rendszer csendesen átalakítja a nem leadható értékekre NULL, ami váratlan maszkolási eredményeket eredményezhet. Az UDF-paramétertípusoknak meg kell egyezniük a nekik átadott oszlopok adattípusával. Lásd az adattípus eltérési viselkedését.

  • egyéb_oszlop_név

    Opcionálisan megadja a maszkolt oszlop táblájának további oszlopait is, amelyeket át szeretne adni.func_name Mindegyik other_column_name-nak cast-olhatónak kell lennie a megfelelő func_name paraméterre.

    Oszlopmaszk használatával szelektíven anonimizálhatja a column_identifier értékét attól függően, hogy a felhasználó lekérdezést hajt végre a table_name, a column_identifier értéke és az opcionális other_columnalapján.

  • constant_literal

    Állandó paramétert ad meg egy függvényparaméternek megfelelő típussal. A következő típusok támogatottak: STRING, numerikus (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, INTERVAL, NULL.

Példák

További példákat az Azure Databricks-táblákban talál. A záradékot bemutató példákért lásd: USING COLUMNSOszlopmaszk további oszlopokkal (USING COLUMNS).

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

Limitations