Hallo, ich bin Marcus und heute möchte ich euch in diesem Blogartikel erklären, was dynamische Sicherheit auf Zeilenebene in Power BI bedeutet und wie sie implementiert werden kann. Diese Methode bietet eine flexible Möglichkeit, Daten innerhalb von Power BI anhand der Benutzeranmeldeinformationen zu filtern und anzuzeigen.
Was ist dynamische Row-Level Security?
Im Gegensatz zur statischen Row-Level Security, bei der auf einem festen Wert gefiltert wird, verwendet die dynamische Row-Level Security variable Filterkriterien, die in Echtzeit auf die Anmeldedaten des Benutzers basieren. Das bedeutet, dass anstatt eine feste Rolle zu haben, die auf spezifische Werte filtert, die E-Mail-Adresse des aktuellen Benutzers als Grundlage verwendet wird, um Daten zu filtern. Dies wird mit Hilfe von DAX und der Funktion USERPRINCIPALNAME() umgesetzt.
Implementierung der dynamischen Row-Level Security
Schritt 1: Datenmodell vorbereiten
In unserem Beispiel verwenden wir das AdventureWorks-Datenmodell von Microsoft. Innerhalb dieses Modells gibt es eine Tabelle namens Sales Territory, die wir nach den Repräsentanten filtern möchten. Diese Tabelle enthält die E-Mail-Adressen der Vertreter.
Schritt 2: Rolle erstellen
Im Power BI Desktop erstellen wir eine neue Rolle unter Modellierung > Rollen verwalten. Diese Rolle filtert die Sales Territory-Tabelle anhand der E-Mail-Adressen.
Schritt 3: Rolle testen
Um die Rolle zu testen, wählen wir im Power BI Desktop Modellierung > Anzeigen als, wählen die erstellte Rolle aus und geben die E-Mail-Adresse eines Benutzers ein. Dadurch werden die Daten entsprechend der Rolle gefiltert.
Erweiterung der Rolle mit komplexeren DAX-Abfragen
In einem erweiterten Beispiel integrieren wir eine zusätzliche Tabelle Salesperson, die die Verkaufspersonen den Sales Territory zuordnet. Die Filterrichtung in unserem Datenmodell fließt von Sales Territory zu Salesperson, wodurch wir eine komplexere DAX-Abfrage benötigen, um die Hierarchiestruktur der Verkaufspersonen zu berücksichtigen.
DAX-Abfrage für Hierarchiestruktur
Die folgende DAX-Abfrage filtert die Salesperson-Tabelle basierend auf der E-Mail-Adresse des Benutzers und berücksichtigt dabei die Hierarchiestruktur:
CONTAINS (
FILTER (
Salesperson,
PATHCONTAINS (
Salesperson[Path],
MAXX (
FILTER (
Salesperson,
Salesperson[EmailAddress] = USERPRINCIPALNAME ()
),
Salesperson[EmployeeKey]
)
)
),
Salesperson[SalesTerritoryKey], [SalesTerritoryKey]
)
Diese Abfrage ermittelt den Schlüssel der aktuellen Verkaufsperson basierend auf ihrer E-Mail-Adresse, erstellt den Hierarchiepfad und filtert die Tabelle Sales Territory entsprechend.
Praxisbeispiel
Angenommen, wir haben eine Verkaufsperson namens Amy, die verschiedenen Sales Territory zugeordnet ist. Wenn wir die Rolle mit Amy's E-Mail-Adresse testen, werden nur die Daten für die Sales Territory angezeigt, für die sie verantwortlich ist. Dies ermöglicht eine präzise und sichere Datenvisualisierung, die sich dynamisch an die Anmeldeinformationen des Benutzers anpasst.
Fazit
Die dynamische Sicherheit auf Zeilenebene in Power BI bietet eine leistungsstarke Methode, um Daten basierend auf Benutzeranmeldeinformationen zu filtern und anzuzeigen. Durch die Verwendung von DAX können komplexe Hierarchien und Filterlogiken implementiert werden, um sicherzustellen, dass Benutzer nur auf die Daten zugreifen, die für sie relevant sind.
Wenn du Fragen oder Anmerkungen hast, hinterlasse sie gerne in den Kommentaren.
Kommentare