La RLS dynamique
Plutôt qu'un rôle par région, une table dit qui voit quoi : une ligne par adresse e-mail et par région. Un rôle unique filtre cette table sur l'utilisateur connecté, et le modèle fait le reste. Ajouter un commercial devient une simple ligne.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
USERPRINCIPALNAME() renvoie l'adresse de l'utilisateur connecté (son identifiant Microsoft 365). Dans une RLS dynamique, une table Sécurité associe chaque adresse à ses régions, et un rôle unique filtre cette table avec [E-mail] = USERPRINCIPALNAME().
02Le simulateur
Change d'utilisateur : Inès voit le Nord, Hugo le Sud et l'Est, la direction tout.
03La mise en place
- Prépare la table Sécurité (E-mail, Région), une ligne par droit : une personne peut avoir plusieurs lignes.
- Charge-la et relie Sécurité[Région] à Clients[Région] : relation plusieurs à plusieurs, filtre de Sécurité vers Clients.
- Crée un rôle « Commercial » avec, sur la table Sécurité :
[E-mail] = USERPRINCIPALNAME(). - Teste avec Afficher en tant que > Autre utilisateur en saisissant une adresse.
- Dans le service, mets tous les lecteurs dans ce seul rôle.
-- Rôle sur la table Clients, sans relation avec Sécurité [Région] IN CALCULATETABLE( VALUES(Sécurité[Région]), Sécurité[E-mail] = USERPRINCIPALNAME() )
04À toi de jouer
Chaque commercial ses régions
L'onglet Sécurité du classeur associe chaque adresse e-mail aux régions qu'elle peut voir. Crée un rôle dynamique unique, puis vérifie ce que voit sophie@boutique.fr avec « Afficher en tant que ».
| Catégorie (vue de Sophie) | CA |
|---|---|
| Informatique | 18 095 € |
| Mobilier | 24 210 € |
| Papeterie | 13 176 € |
| Total | 55 481 € |
Résultat attendu : Sophie ne voit que le Nord et l'Est ; la direction voit tout.
Le même classeur sert pour tous les défis : 408 ventes sur 2025 et 2026, avec les tables Produits, Clients et Dates. L'onglet Lisez-moi indique les relations à créer.
Solution : Une table Sécurité reliée aux régions, un rôle qui filtre Sécurité sur l'utilisateur connecté, et le test « Afficher en tant que ».
-- Rôle « Commercial », filtre sur la table Sécurité [E-mail] = USERPRINCIPALNAME()
05Pièges à éviter
USERPRINCIPALNAME renvoie l'adresse telle qu'elle est enregistrée dans Microsoft 365. Une table qui contient « Ines@Boutique.fr » ne correspondra pas toujours : normalise les adresses en minuscules, des deux côtés avec LOWER.
USERNAME() renvoie DOMAINE\utilisateur dans Power BI Desktop et l'adresse dans le service. USERPRINCIPALNAME() renvoie l'adresse partout : c'est elle qu'il faut utiliser.
06Questions fréquentes
Comment mettre en place une RLS dynamique dans Power BI ?
USERPRINCIPALNAME() renvoie l'adresse de l'utilisateur connecté (son identifiant Microsoft 365). Dans une RLS dynamique, une table Sécurité associe chaque adresse à ses régions, et un rôle unique filtre cette table avec [E-mail] = USERPRINCIPALNAME().
Quel est le piège le plus fréquent avec la RLS dynamique ?
Les majuscules dans les adresses. USERPRINCIPALNAME renvoie l'adresse telle qu'elle est enregistrée dans Microsoft 365. Une table qui contient « Ines@Boutique.fr » ne correspondra pas toujours : normalise les adresses en minuscules, des deux côtés avec LOWER.
La fiche « La RLS dynamique » est-elle gratuite ?
Oui. La fiche, son simulateur et son défi et sa version PDF sont en accès libre et gratuit, sans inscription. Elle fait partie du cours DAX gratuit de mesetudesdecas.fr, qui compte 32 fiches.
Passez de la fiche à la mise en situation
Les études de cas de mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise : modèle de données, mesures DAX et tableau de bord Power BI, avec énoncé, corrigé et pas-à-pas du formateur.
Voir le catalogueVoir aussi le cours Power Query gratuit
Fiche V1.0 | Dernière mise à jour : 02/11/2026 | Clément Delobel, formateur Power BI et DAX