Fonction current_recipient
S’applique à : Databricks SQL Databricks Runtime 14.2 et versions ultérieures
Important
Cette fonctionnalité est disponible en préversion publique.
Renvoie la valeur de propriété associée à la clé de propriété spécifiée pour le destinataire des données actuels dans un contexte Delta Sharing. Cette fonction permet aux données providers de contrôler l'accès aux données de manière dynamique, en fonction des propriétés spécifiques du destinataire.
current_recipient(key)
key
Expression
STRING
spécifiant une clé de propriété du destinataire. Les propriétés du destinataire incluent des propriétés prédéfinies commençant par'databricks.'
et des propriétés personnalisées. Consulter Gérer les propriétés du destinataire
STRING
.
Vous devez utiliser cette fonction dans une définition d’affichage quand le fournisseur de données crée un affichage partagé. Notez que l’affichage créé est destiné au partage uniquement : le fournisseur de données ne peut pas interroger l’affichage directement, car l’évaluation de la fonction est impossible en raison du contexte de partage manquant.
Cette fonction ne peut être correctement évaluée que lorsque le destinataire des données interroge un affichage Delta Sharing.
-- 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;