Функция current_recipient
Область применения: Databricks SQL Databricks Runtime 14.2 и более поздних версий
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Возвращает значение свойства, связанное с указанным ключом свойства для текущего получателя данных в контексте delta Sharing. Эта функция позволяет поставщикам данных динамически управлять доступом к данным на основе свойств конкретного получателя.
Синтаксис
current_recipient(key)
Аргументы
key
STRING
Выражение, указывающее ключ свойства получателя. Свойства получателя включают предопределенные свойства, начиная с'databricks.'
настраиваемых свойств. См. сведения об управлении свойствами получателей
Возвраты
STRING
.
Примечания.
Эта функция должна использоваться в определении представления при создании общего представления поставщиком данных. Обратите внимание, что созданное представление предназначено только для общего доступа: поставщик данных не может запрашивать представление напрямую, так как оценка функции завершится ошибкой из-за отсутствия контекста общего доступа.
Эта функция может быть успешно оценена только в том случае, если получатель данных запрашивает разностное представление общего доступа.
Примеры
-- provider creates view with row filtering
> CREATE VIEW acme.default.my_view AS
SELECT * FROM acme.default.my_table
WHERE country = current_recipient('country');
-- provider creates view with column masking
> CREATE VIEW acme.default.my_view AS
SELECT
CASE
WHEN current_recipient('country') = 'US' THEN pii
ELSE 'REDACTED'
END AS pii
FROM acme.default.my_table;
-- set recipient property and share view to the recipient
> ALTER SHARE my_share ADD VIEW acme.default.my_view;
> ALTER RECIPIENT cdc SET PROPERTIES ('country' = 'US');
-- Test recipient by mocking the context
> SET RECIPIENT cdc;
> SELECT * FROM acme_shared.default.my_view;
-- Grant access to shre to recipient
> GRANT SELECT ON SHARE my_share TO RECIPIENT cdc;
-- recipient queries the view, results should be filtered by recipient’s property
> CREATE CATALOG acme_shared USING SHARE acme.my_share;
> SELECT * FROM acme_shared.default.my_view;