Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Столбец
применяется к:
Databricks SQL
Databricks Runtime 12.2 LTS и новее
только Unity Catalog
Указывает функцию, которая применяется к столбцу всякий раз, когда строки извлекаются из таблицы. Все последующие запросы из этого столбца получают результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для детализированного управления доступом, где функция может проверить идентификацию или членство в группах вызывающего пользователя, чтобы определить, следует ли скрыть значение.
Вы можете добавлять маски для столбцов, когда:
- Создайте таблицу с помощью CREATE TABLE.
- Добавьте столбцы в таблицу с ALTER TABLE ... ДОБАВИТЬ COLUMN.
- Изменение столбца с помощью ALTER TABLE ... ALTER COLUMN.
Внимание
Маска применяется, как только каждая строка извлекается из источника данных. Все выражения, предикаты или упорядочение применяются после маскирования. Например, объединение маскированного столбца с другим столбцом из другой таблицы будет использовать маскированные значения для сравнения соединения.
Дополнительные сведения об использовании масок столбцов см. в таблицах Azure Databricks.
Синтаксис
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Параметры
-
Скалярный UDF SQL с по крайней мере одним параметром.
Первый параметр SQL UDF сопоставляется 1:1 с маскированным столбцом. Тип маскированного столбца должен быть приводим к типу параметра SQL UDF. Если
func_nameтребует больше параметров, аргументы должны быть предоставлены предложениемUSING COLUMNS.Возвращаемый тип функции должен быть преобразуемым в тип данных маскированного столбца.
-
При необходимости указывает дополнительные столбцы таблицы с маскированным столбцом для передачи в
func_name. Каждое из нихother_column_nameдолжно быть приведение к соответствующему параметруfunc_name.Используйте маску столбца, чтобы выборочно анонимизировать значение
column_identifierна основе пользователя, выполняющего запрос кtable_name, значениюcolumn_identifierи необязательномуother_column. constant_literal
Указывает постоянный параметр с типом, соответствующим параметру функции. Поддерживаются следующие типы:
STRINGчисловой (INTEGER,FLOAT,DOUBLEDECIMAL...),BOOLEAN, .INTERVALNULL
Примеры
Дополнительные примеры можно найти в таблицах 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