Cláusula de mask
de columna
Se aplica a: Databricks SQL Databricks Runtime 12.2 LTS y versiones posteriores Solo Unity Catalog
Importante
Esta característica está en versión preliminar pública.
Especifica una función que se aplica a una columna cada vez que se capturan filas de la tabla. Todas las consultas futuras desde esa columna recibirán el resultado de evaluar esa función sobre la columna en lugar del valor original de la columna. Esto puede ser útil para fines de control de acceso específicos en los que la función puede inspeccionar la identidad o las pertenencias a grupos del usuario que realiza la invocación para decidir si expurga el valor.
Puede agregar máscaras de columna cuando:
- Cree una tabla mediante CREATE TABLE.
- Agrega columnas a una tabla con ALTER TABLE … ADD COLUMN.
- Modifica una columna con ALTER TABLE ... ALTER COLUMN.
Importante
La máscara se aplica en cuanto se captura cada fila del origen de datos. Las expresiones, predicados u ordenación se aplican después del enmascaramiento. Por ejemplo, la combinación entre la columna enmascarada en otra columna de otra tabla usará los valores enmascarados para la comparación de combinación.
Para más información sobre cómo usar máscaras de columna, consulte Filtrado de datos confidenciales de tabla con filtros de fila y máscaras de columna.
Sintaxis
MASK func_name [ USING COLUMNS ( other_column_name [, ...] ) ]
Parámetros
-
Una UDF de SQL escalar con al menos un parámetro.
El primer parámetro de la UDF de SQL se asigna 1:1 con la columna enmascarada. El tipo de columna enmascarada debe convertirse al tipo de parámetro UDF de SQL. Si
func_name
requiere más parámetros, la cláusulaUSING COLUMNS
debe proporcionar argumentos.El tipo de valor devuelto de la función debe convertirse al tipo de datos de la columna enmascarada.
-
Opcionalmente, especifica columnas adicionales de la tabla de la columna enmascarada que se va a pasar a
func_name
. Cadaother_column_name
debe convertirse al parámetro correspondiente defunc_name
.Use una máscara de columna para anonimizar selectivamente el valor de
column_identifier
en función del usuario que ejecuta una consulta entable_name
, el valor decolumn_identifier
y losother_column
opcionales.
Ejemplos
Puede encontrar más ejemplos en Filtrado de datos de tabla confidenciales mediante filtros de fila y máscaras de columna.
-- 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