Delen via


Kolom mask-clausule

nl-NL: Van toepassing op:gemarkeerd als ja Databricks SQL gemarkeerd als ja Databricks Runtime 12.2 LTS en hoger gemarkeerd als ja alleen Unity Catalog

Hiermee geeft u een functie op die wordt toegepast op een kolom wanneer rijen worden opgehaald uit de tabel. Alle volgende query's van die kolom ontvangen het resultaat van het evalueren van die functie ten opzichte van de kolom in plaats van de oorspronkelijke waarde van de kolom. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of de waarde moet worden bewerkt.

U kunt kolommaskers 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. Als u bijvoorbeeld een gemaskeerde kolom koppelt aan een andere kolom uit een andere tabel, worden de gemaskeerde waarden gebruikt voor de joinvergelijking.

Zie Gevoelige tabelgegevens filteren met rijfilters en kolommaskersvoor meer informatie over het gebruik van kolommaskers.

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 kolom. Het type van de gemaskeerde kolom moet overzetbaar zijn naar het SQL UDF-parametertype. Als func_name meer parameters vereist, moeten argumenten worden opgegeven door de USING COLUMNS-component.

    Het retourtype van de functie moet te casten zijn naar het gegevenstype van de gemaskeerde kolom.

  • other_column_name

    Optioneel geeft u extra kolommen op van de tabel met gemaskeerde kolommen die moeten worden doorgegeven aan func_name. Elk other_column_name moet omgezet kunnen worden naar de bijbehorende parameter van func_name.

    Gebruik een kolommasker 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 specificeert u een constante parameter met een 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 tabelgegevens filteren met behulp van rijfilters en kolommaskers.

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