Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
 View Only
  • 1.  RLS dynamique

    Posted 9 days ago
    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
    ID utilisateur Nom Utilisateur Email Département Direction des opérations Pôles Rôle
    1 Toto Toto@mail.com DPT 1 DO 1 Pole 1 DPT
    2 Tata Tata@mail.com DPT 2 DO 1 Pole 1 DO
    3 Titi Titi@mail.com DPT 3 DO 2 Pole 1 Pole
    5 Tete Tete@mail.com DPT 4 DO 2 Pole 1 DO
    4 Tutu Tutu@mail.com DPT 5 DO 3 Pole 2 DPT
    6 Tyty Tyty@mail.com DPT 6 DO 4 Pole 3 DO

    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
    ------------------------------