2017-05-04 1 views
1

Je dois intégrer un visuel PowerCor sur un site Web. J'ai mis en place le tableau de bord dans PowerBI Desktop, et ça a l'air bien; le trancheur de la carte de score filtre le nom de l'employé. J'aimerais que l'employé qui visite le site Web de l'entreprise ne voit que ses données dans la carte de pointage. En d'autres termes, sa présence sur le site filtrerait automatiquement la carte de pointage pour ne révéler que ses statistiques. Heureusement, ils doivent se connecter au site Web de l'entreprise en fournissant leurs informations d'identification Windows.Comment puis-je utiliser la sécurité de niveau ligne de PowerBI pour implémenter un filtre d'employés sur un site Web?

Je ne sais pas comment procéder. Je comprends que je dois utiliser la partie « sécurité » de l'onglet « Modélisation », et je l'ai (avec succès) créé un rôle explicite pour un spectateur en utilisant le code suivant:

'Table1'[Employee Name] = "John Smith" 

Bien sûr, cela ne reflète que les statistiques de John Smith lorsque je clique sur "Afficher en tant que rôles". Je ne pense pas qu'il soit pratique d'écrire explicitement un extrait de code DAX pour chaque employé, puisque mon entreprise compte plus de 3000 employés.

Est-ce que quelqu'un peut partager des instructions, ou m'en parler?

Merci d'avance.

Répondre

1

J'ai dû faire face à un problème similaire, bien que nous voyions nos tableaux de bord dans le service Power BI, c'est donc l'authentification que je connais. La base de cette forme de sécurité de niveau ligne dynamique est que l'expression écrite est évaluée pour chaque ligne de la table indiquée à True ou False.

Si votre utilisateur s'est connecté à, vous pourrez déterminer l'identité à l'aide de USERPRINCIPALNAME(). C'est l'adresse e-mail qu'ils utilisent pour se connecter au service.

Étant donné que vous affichez des données spécifiques à cet utilisateur, il est possible que vous ayez déjà envoyé un e-mail dans vos données. Si tel est le cas, et il est tout simplement un autre champ dans votre table de votre ligne de validation ressemblerait à quelque chose comme:

'Table1'[Email] = USERPRINCIPALNAME() 

Le côté gauche de l'expression fait référence à la ligne que vous faites référence, alors que le droit fournira la nom de l'utilisateur authentifié. Si vous ne l'avez pas dans vos données existantes, vous pouvez utiliser une expression DAX pour rechercher le nom de l'employé à partir d'une liste d'e-mails et de leurs noms associés.

Dans ce cas, vous n'avez qu'un rôle auquel tout le monde doit être affecté, et la logique ci-dessus déterminera les lignes qu'ils peuvent voir.

Ceci est un exemple simple dans lequel chaque employé ne peut voir que ses propres données. Le modèle peut être étendu en créant des «tables de sécurité» avec les utilisateurs et leurs enregistrements associés, puis en utilisant la fonction CONTAINS() pour vérifier l'autorisation, mais il semble que vous ayez une relation 1-à-1 avec ce que les individus peuvent voir.