current_recipient
Función
Se aplica a:Databricks SQL Databricks Runtime 14.2 y versiones posteriores
Importante
Esta característica está en versión preliminar pública.
Devuelve el valor de propiedad asociado a la clave de propiedad especificada para el destinatario de datos actual en un contexto de Delta Sharing. Esta función permite a los datos providers controlar dinámicamente el acceso a los datos en función de las propiedades específicas del destinatario.
Sintaxis
current_recipient(key)
Argumentos
key
Expresión
STRING
que especifica una clave de propiedad de destinatario. Las propiedades del destinatario incluyen propiedades predefinidas que empiezan por'databricks.'
y propiedades personalizadas. Vea Administración de las propiedades del destinatario
Devoluciones
STRING
.
Notas
Esta función se debe usar en una definición de vista cuando el proveedor de datos crea una vista compartida. Tenga en cuenta que la vista creada solo es para uso compartido: el proveedor de datos no puede consultar la vista directamente porque se producirá un error en la evaluación de la función debido a que falta el contexto de uso compartido.
Esta función solo se puede evaluar correctamente cuando el destinatario de los datos consulta una vista de uso compartido diferencial.
Ejemplos
-- 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;