Dela via


Kolumnsats mask

Gäller endast för: markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja i Unity Catalog

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Anger en funktion som tillämpas på en kolumn när rader hämtas från tabellen. Alla framtida frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerade åtkomstkontrollsyften där funktionen kan kontrollera identitets- eller gruppmedlemskap för den anropande användaren för att avgöra om värdet ska redigeras.

Du kan lägga till kolumnmasker när du:

Viktigt!

Masken tillämpas så snart varje rad hämtas från datakällan. Alla uttryck, predikat eller ordning tillämpas efter maskeringen. Till exempel använder koppling mellan den maskerade kolumnen mot en annan kolumn från en annan tabell de maskerade värdena för kopplingsjämförelsen.

Mer information om hur du använder kolumnmasker finns i Filtrera känsliga tabelldata med hjälp av radfilter och kolumnmasker.

Syntax

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

Parametrar

  • func_name

    En skalär SQL UDF med minst en parameter.

    Den första parametern i SQL UDF mappar 1:1 med den maskerade kolumnen. Den maskerade kolumnens typ måste vara gjutbar till SQL UDF-parametertypen. Om func_name det krävs fler parametrar måste argumenten anges av USING COLUMNS -satsen.

    Funktionens returtyp måste vara gjutbar till datatypen för den maskerade kolumnen.

  • other_column_name

    Du kan också ange ytterligare kolumner i den maskerade kolumnens tabell som ska skickas till func_name. Var och other_column_name en måste kunna castas till motsvarande parameter för func_name.

    Använd en kolumnmask för att selektivt anonymisera värdet column_identifier för baserat på att användaren kör en fråga mot table_name, värdet column_identifier för och det valfria other_column.

Exempel

Du hittar fler exempel i Filtrera känsliga tabelldata med hjälp av radfilter och kolumnmasker.

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