Delen via


Column mask-clausule

Van toepassing op:aangevinkt ja Databricks SQL aangevinkt ja Databricks Runtime 12.2 LTS en hoger aangevinkt ja Unity Catalog alleen

Specificeert een functie die wordt toegepast op een column wanneer rijen worden opgehaald uit de table. Alle volgende query's van die column's ontvangen het resultaat van de evaluatie van die functie over de column in plaats van de oorspronkelijke waarde van de column. Dit kan handig zijn voor fijnmazige toegangsbeheerdoeleinden where de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of de waarde moet worden bewerkt.

U kunt column maskers toevoegen wanneer u:

Belangrijk

Het masker wordt toegepast zodra elke rij wordt opgehaald uit de gegevensbron. Alle expressies, predicaten of volgorde worden toegepast na de maskering. Bijvoorbeeld, het koppelen van de gemaskeerde column met een andere column afkomstig van een andere table zal de gemaskeerde values gebruiken voor de vergelijking met de join.

Voor meer informatie over het gebruik van column maskers, zie Gevoelige table gegevens filteren met behulp van rijfilters en column maskers.

Syntaxis

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

Parameters

  • func_name

    Een scalaire SQL UDF met ten minste één parameter.

    De eerste parameter van de SQL UDF komt 1:1 overeen met de gemaskeerde column. Het type van gemaskeerde columnmoet omzetbaar zijn naar het parametertype van de SQL UDF. Als func_name meer parametersvereist, moeten argumenten worden opgegeven door de USING COLUMNS clausule.

    Het retourtype van de functie moet omkastbaar zijn naar het gegevenstype van de gemaskeerde column.

  • other_column_name

    Geeft desgewenst extra columns van de gemaskeerde column's table door te geven aan func_name. Elk other_column_name moet worden castable naar de bijbehorende parameter van func_name.

    Gebruik een column masker om de waarde van column_identifier selectief te anonimiseren op basis van de gebruiker die een query uitvoert op table_name, de waarde van column_identifier en de optionele other_column.

  • constant_literal

    Hiermee geeft u een constante parameter met het type dat overeenkomt met een functieparameter. De volgende typen worden ondersteund: STRING, numeriek (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, INTERVALNULL.

Voorbeelden

Meer voorbeelden vindt u in Gevoelige table gegevens filteren met behulp van rijfilters en column maskers.

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