Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Clause
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures
Unity Catalog uniquement
Spécifie une fonction appliquée à une colonne chaque fois que des lignes sont extraites de la table. Toutes les requêtes suivantes de cette colonne reçoivent le résultat de l’évaluation de cette fonction sur la colonne à la place de la valeur d’origine de la colonne. Cela peut être utile à des fins de contrôle d’accès plus précis, où la fonction peut inspecter l’identité ou l’appartenance à un groupe de l’utilisateur appelant afin de décider s’il convient de modifier la valeur.
Vous pouvez ajouter des masques de colonnes lorsque vous :
- Créez une table à l’aide de CREATE TABLE.
- Ajouter des colonnes à une table avec ALTER TABLE ... ADD COLUMN.
- Modification d’une colonne avec ALTER TABLE ... ALTER COLUMN.
Importante
Le masque est appliqué dès que chaque ligne est extraite de la source de données. Les expressions, prédicats ou classements sont appliqué(e)s après le masquage. Par exemple, la jointure entre la colonne masquée et une autre colonne d’une autre table utilise les valeurs masquées pour la comparaison de jointure.
Pour plus d’informations sur l’utilisation des masques de colonne, consultez les tables Azure Databricks.
Syntaxe
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Parameters
-
Une fonction SQL scalaire définie par l’utilisateur avec au moins un paramètre.
Le premier paramètre de la fonction SQL définie par l’utilisateur effectue un mappage 1:1 avec la colonne masquée. Le type de colonne masqué doit pouvoir être converti au type de paramètre UDF SQL. Si
func_namenécessite davantage de paramètres, les arguments doivent être fournis par la clauseUSING COLUMNS.Le type de retour de la fonction doit être convertible dans le type de données de la colonne masquée.
-
Spécifie éventuellement des colonnes supplémentaires de la table de la colonne masquée à transmettre à
func_name. Chaqueother_column_namedoit être convertible dans le paramètre correspondant defunc_name.Anonymisez de manière sélective la valeur de
column_identifierà l’aide d’un masque de colonne selon l’utilisateur exécutant une requête surtable_name, la valeur decolumn_identifieret leother_columnfacultatif. constant_literal
Spécifie un paramètre constant avec le type correspondant à un paramètre de fonction. Les types suivants sont pris en charge :
STRING, numérique (INTEGER,FLOAT,DOUBLE,DECIMAL…),BOOLEAN,INTERVAL,NULL.
Exemples
Vous trouverez d’autres exemples dans les tables Azure Databricks.
-- 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