Partilhar via


Coluna mask cláusula

Aplica-se a:assinalado com sim Databricks SQL assinalado com sim Databricks Runtime 12.2 LTS e superior assinalado com sim apenas no Catálogo Unity

Especifica uma função que é aplicada a uma coluna sempre que linhas são buscadas na tabela. Todas as consultas subsequentes dessa coluna recebem o resultado da avaliação dessa função sobre a coluna no lugar do valor original da coluna. Isso pode ser útil para fins de controle de acesso refinado, onde a função pode inspecionar a identidade ou as associações de grupo do usuário que invoca para determinar se o valor deve ser redigido.

Você pode adicionar máscaras de coluna quando:

Importante

A máscara é aplicada assim que cada linha é obtida da fonte de dados. Quaisquer expressões, predicados ou ordens são aplicadas após a mascaragem. Por exemplo, juntar a coluna mascarada a outra coluna de outra tabela usará os valores mascarados para a comparação de associação.

Para obter mais informações sobre como usar máscaras de coluna, consulte Tabelas do Azure Databricks.

Sintaxe

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

Parâmetros

  • func_name

    Um SQL UDF escalar com pelo menos um parâmetro.

    O primeiro parâmetro do SQL UDF mapeia 1:1 com a coluna mascarada. O tipo da coluna mascarada deve ser convertível para o tipo de parâmetro SQL UDF. Se func_name exigir mais parâmetros, os argumentos devem ser fornecidos pela cláusula USING COLUMNS.

    O tipo de retorno da função deve ser compatível com o tipo de dados da coluna mascarada.

    Importante

    Se o tipo de dado da coluna mascarada não corresponder exatamente ao tipo de parâmetro da função, o valor da coluna é implicitamente cast. Com desativado, valores que não podem ser lançados são silenciosamente convertidos para ANSI_MODE, o que pode produzir resultados inesperados NULL de mascaramento. Os tipos de parâmetros UDF devem corresponder aos tipos de dados das colunas que lhes são passadas. Veja comportamento de desajustamento dos tipos de dados.

  • nome_de_outra_coluna

    Opcionalmente, especifica colunas adicionais da tabela da coluna mascarada para passar para func_name. Cada other_column_name deve ser convertível para o parâmetro correspondente de func_name.

    Utilize uma máscara de coluna para anonimizar de forma seletiva o valor de column_identifier com base no utilizador que executa uma consulta contra table_name, o valor de column_identifier e o opcional other_column.

  • constant_literal

    Especifica um parâmetro constante com o tipo correspondendo a um parâmetro de função. Os seguintes tipos são suportados: STRING, numérico (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, , INTERVALNULL.

Exemplos

Você pode encontrar mais exemplos nas tabelas do Azure Databricks. Para exemplos que demonstram a USING COLUMNS cláusula, veja Máscara de coluna com colunas adicionais (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