Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Coluna
Aplica-se a:
Databricks SQL
Databricks Runtime 12.2 LTS e superior
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:
- Crie uma tabela usando CREATE TABLE.
- Adicionar colunas a uma tabela com ALTER TABLE ... ADICIONE COLUMN.
- Alterando uma coluna com ALTER TABLE ... ALTER COLUMN.
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
-
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_nameexigir mais parâmetros, os argumentos devem ser fornecidos pela cláusulaUSING 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
NULLde 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. -
Opcionalmente, especifica colunas adicionais da tabela da coluna mascarada para passar para
func_name. Cadaother_column_namedeve ser convertível para o parâmetro correspondente defunc_name.Utilize uma máscara de coluna para anonimizar de forma seletiva o valor de
column_identifiercom base no utilizador que executa uma consulta contratable_name, o valor decolumn_identifiere o opcionalother_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