🎯 Situation

Un directeur commercial nous a demandé de construire un seul dashboard Power BI pour toute l'équipe de ventes — 5 directeurs régionaux et 25 commerciaux. L'exigence : chaque personne voit les données de sa propre région, les directeurs voient leur région plus les données individuelles de leurs commerciaux, et le VP voit tout. Même rapport. Même dataset. Vues complètement différentes selon qui se connecte.

👉 La Row-Level Security (RLS) dans Power BI filtre les données au niveau de la ligne selon qui consulte le rapport. Le filtre est appliqué automatiquement — l'utilisateur ne voit jamais de sélecteur de filtre. Il voit juste ses données. Un rapport sert toute l'organisation, chaque personne avec le périmètre approprié.

⚠️ Challenge

🔒 RLS statique — le cas le plus simple

  • Créer un rôle dans Power BI Desktop : Gérer les rôles → Nouveau rôle
  • Ajouter un filtre DAX sur la table : [Région] = 'Nord'
  • Ajouter les utilisateurs spécifiques à ce rôle dans Power BI Service
  • Fonctionne pour les petites équipes avec des régions stables
  • Pas de table de correspondance nécessaire — juste des valeurs codées en dur par rôle

👤 RLS dynamique — passe à l'échelle avec l'organisation

  • Créer une table de correspondance : colonnes [EmailUtilisateur] et [Région]
  • La charger dans le dataset Power BI
  • Écrire un filtre DAX : [Région] IN VALUES(Cartographie[Région]) où Cartographie filtre sur USERPRINCIPALNAME()
  • Quand un nouveau commercial arrive, ajouter une ligne à la table de correspondance — le rapport se met à jour automatiquement
  • Passe à 500 utilisateurs sans aucun changement au rapport

🔍 Analyse

Le DAX exact pour la RLS dynamique :

-- In the Region filter on the Sales table:
[Region] IN
    CALCULATETABLE(
        VALUES(UserRegionMap[Region]),
        FILTER(UserRegionMap, UserRegionMap[UserEmail] = USERPRINCIPALNAME())
    )

Ce filtre unique, appliqué comme un rôle, restreint dynamiquement chaque visuel du rapport aux régions mappées à l'email de l'utilisateur connecté. Le compte VP est mappé à toutes les régions. Un directeur régional est mappé à une. Un commercial à un seul territoire.

Une erreur courante : les filtres RLS sont appliqués APRÈS les calculs de mesures DAX. Cela signifie qu'une mesure comme [Revenu Total] déjà filtrée par RLS affichera uniquement le revenu de l'utilisateur — pas le total. Si vous voulez afficher 'mon revenu vs total entreprise', vous avez besoin d'une mesure spécifique qui supprime le filtre RLS avec ALL(). C'est le problème de débogage RLS le plus fréquent.

✓️ Bonne pratique

Trois étapes de déploiement :

  • Construire et tester dans Power BI Desktop — utiliser 'Voir en tant que rôle' pour simuler chaque type d'utilisateur avant de publier
  • Publier dans Power BI Service, puis aller dans le dataset → Sécurité → assigner les utilisateurs ou groupes de sécurité à chaque rôle
  • Tester à nouveau dans Service avec 'Tester en tant que rôle' — confirmer que le périmètre des données est correct avant de partager avec les utilisateurs

💡 Synthèse

La RLS est l'une des fonctionnalités Power BI à plus haute valeur pour toute organisation avec des besoins d'accès aux données différents entre les équipes. Un rapport remplace cinq. Un dataset sert tout le monde. La gestion se résume à une table de correspondance avec une ligne par utilisateur — mise à jour quand l'équipe change.

👉 Un seul dashboard. Chaque personne voit uniquement ses données. Pas de sélecteurs de filtres. Pas de rapports séparés.

C'est la RLS — et ça prend un après-midi à construire.