Bonjour à tous,
Me voilà un peu plus que novice sur Power BI, et je fais face à une embûche liée à la gestion des rôles sous Power BI.
Je souhaite mettre en place une gestion de rôles
automatique basée sur la fonction DAX userprincipalname() faisant écho aux adresse mail utilisées pour se connecter aux services de Power BI. Toutefois, mon modèle de données me bloque dans mon avancée.
Je vous explique mon problème :
J'ai une table organisation qui regroupe chaque utilisateur (nom prénom, email) et les différents niveaux de hiérarchie de l'organisation répartis sur plusieurs colonnes (niveau 1, niveau 2 ...).
Voici un tableau récapitulatif de mes données :
IDNom PrénomEmailDépartement inférieurDépartement des opérationsPôleRôle
On part du principe que l'ID Utilisateur et l'Email sont uniques. Ici, la hiérarchie de l'organisation se dessine de la manière suivante : Pôle > Département des opérations > Département.
Je souhaite donc que chaque utilisateur ait accès aux données associées à son rôle, ainsi qu'à celles sous sa hiérarchie.
Par exemple, en reprenant le tableau précédent, je souhaite que l'utilisateur 5 ait accès aux données de la DO 2 (car il possède le rôle de DO et que la DO 2 est celle dans laquelle il se trouve), et de tous les niveaux inférieurs, donc les données des DPT 3 et DPT 4.
Je pourrai utiliser la fonction userprincipalname() de la même manière que sur le lien suivant Premiers éléments de solution, mais étant donné que je souhaite gérer mes rôles d'accès sur plusieurs colonnes différentes, contrairement à l'exemple du lien où tous les rôles se situent sur un même niveau de hiérarchie, je n'ai pas pu l'adapter.
Je me suis essayé au DAX mais n'ai pas réussi à aboutir et c'est là que j'aimerais avoir de l'aide.
J'ai créé un rôle Power BI par Rôle sur mon organisation, puis j'ai essayé de récupérer le périmètre en question pour chaque utilisateur (grâce à son adresse mail).
Ainsi, pour le rôle DPT, je filtre ma table organisation sur l'utilisateur en cours grâce à la fonction userprincipalname(), puis je récupère le département en question, comme suit :
'Organisation'[DPT] = CALCULATETABLE (
FIRSTNONBLANK (
SELECTCOLUMNS (
'Organisation',
"DPT",
'Organisation Managériale'[DPT]
)
,[DPT]
)
,userprincipalname() ='Organisation'[email]
)
Je fais donc face à un problème : j'ai l'impression que le filtre que j'utilise dans ma fonction CALCULATETABLE (userprincipalname() ='Organisation'[email]) s'applique de manière générale. Je récupère bien le département associé à l'utilisateur, mais lorsque je regarde le détail de mes données en testant le rôle, je n'accède qu'aux données de son niveau (niveau utilisateur) et non de son périmètre dont il est responsable.
J'ai essayé d'être le plus clair et complet possible. Il se peut néanmoins que vous ne compreniez pas certains points. N'hésitez pas à me poser des questions pour plus d'informations ou divers éclaircissements.
Toute aide est la bienvenue !
Bien cordialement,
Clément M
------------------------------
Clement M
------------------------------