Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
In diesem Tutorial arbeiten Sie die unten aufgeführten Schritte anhand eines Beispielsemantikmodells durch. Dabei lernen Sie, wie Sie die Sicherheit auf Zeilenebene in einem lokalen tabellarischen Analysis Services-Modell implementieren und dies in einem Power BI-Bericht verwenden.
Für dieses Tutorial ist die AdventureworksDW2012-Datenbank erforderlich.
Es gibt viele Artikel darüber, wie die dynamische Sicherheit auf Zeilenebene mit dem SQL Server Analysis Services-Tabellenmodell definiert wird.
Für die hier aufgeführten Schritte ist die relationale Datenbank AdventureworksDW2012 erforderlich.
Erstellen Sie in AdventureworksDW2012 wie unten gezeigt die Tabelle DimUserSecurity
. Sie können SQL Server Management Studio (SSMS) zum Erstellen der Tabelle verwenden.
Nachdem Sie die Tabelle erstellt und gespeichert haben, müssen Sie die Beziehung zwischen der Spalte SalesTerritoryID
der Tabelle DimUserSecurity
und der Spalte SalesTerritoryKey
der Tabelle DimSalesTerritory
wie unten gezeigt erstellen.
Klicken Sie in SSMS mit der rechten Maustaste auf die Tabelle DimUserSecurity und dann auf Entwurf. Klicken Sie dann auf Tabellen-Designer>Beziehungen... . Speichern Sie anschließend die Tabelle.
Fügen Sie Benutzer zur Tabelle hinzu. Klicken Sie mit der rechten Maustaste auf die Tabelle DimUserSecurity und dann auf Edit Top 200 Rows (Obere 200 Zeilen bearbeiten). Wenn Sie Benutzer hinzugefügt haben, sollte die Tabelle DimUserSecurity
ähnlich wie im folgenden Beispiel aussehen:
Sie werden in den nächsten Aufgaben zu diesen Benutzern zurückkehren.
Als Nächstes führen Sie einen inneren Join mit der Tabelle DimSalesTerritory
durch, die Details zur Region anzeigt, die dem Benutzer zugeordnet ist. Der folgende SQL-Code führt den inneren Join durch, und die folgende Abbildung zeigt, wie die Tabelle danach aussieht.
select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]
Die verknüpfte Tabelle zeigt, wer für welche Vertriebsregion zuständig ist. Dies ist aufgrund der in Schritt 2 erstellten Beziehung möglich. Sie sehen z. B., dass Rita Santos für Australien zuständig ist.
Sobald Ihr relationales Data Warehouse vorhanden ist, müssen Sie das Tabellenmodell definieren. Das Modell kann mit SQL Server Data Tools (SSDT) erstellt werden. Weitere Informationen finden Sie unter Create a New Tabular Model Project (Erstellen eines neuen Tabellenmodells).
Importieren Sie alle erforderlichen Tabellen so wie unten dargestellt in das Modell.
Nachdem Sie die erforderlichen Tabellen importiert haben, müssen Sie eine Rolle namens SalesTerritoryUsers definieren und ihr die Leseberechtigung erteilen. Klicken Sie in SSDT auf das Menü Model (Modell) und anschließend auf Roles (Rollen). Klicken Sie im Rollen-Manager auf Neu.
Fügen Sie im Rollen-Manager unter Mitglieder die Benutzer hinzu, die Sie in der Tabelle DimUserSecurity
in Aufgabe 1 definiert haben.
Fügen Sie anschließend die korrekten Funktionen für die Tabellen DimSalesTerritory
und DimUserSecurity
so wie unten in der Registerkarte Zeilenfilter gezeigt hinzu.
Die Funktion LOOKUPVALUE
gibt Werte für eine Spalte zurück, bei denen der Windows-Benutzername dem von der Funktion USERNAME
zurückgegebenen Benutzernamen entspricht. Dann können Sie die Abfragen einschränken, sodass die von LOOKUPVALUE
zurückgegebenen Werte den Werten in derselben oder einer ähnlichen Tabelle entsprechen. Geben Sie in der Spalte DAX Filter die folgende Formel ein:
=DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
In dieser Formel gibt die Funktion LOOKUPVALUE
alle Werte für die Spalte DimUserSecurity[SalesTerritoryID]
zurück, in der DimUserSecurity[UserName]
dem aktuell angemeldeten Windows-Benutzernamen entspricht und DimUserSecurity[SalesTerritoryID]
gleich DimSalesTerritory[SalesTerritoryKey]
ist.
Wichtig
Beachten Sie, dass die DAX-Funktion USERELATIONSHIP nicht unterstützt wird, wenn Sie Sicherheit auf Zeilenebene verwenden.
Mithilfe der SalesTerritoryKey
-Werte, die LOOKUPVALUE
zurückgibt, werden dann die in DimSalesTerritory
angezeigten Zeilen eingeschränkt. Es werden nur Zeilen angezeigt, in denen sich der SalesTerritoryKey
-Wert in den IDs befindet, die von der Funktion LOOKUPVALUE
zurückgegeben werden.
Fügen Sie für die Tabelle DimUserSecurity
in der Spalte DAX-Filter die folgende Formel ein:
=FALSE()
Diese Formel gibt an, dass alle Spalten nach false
aufgelöst werden sollen. Das bedeutet, dass Spalten in der Tabelle DimUserSecurity
nicht abgefragt werden können.
Nun müssen Sie das Modell verarbeiten und bereitstellen. Weitere Informationen finden Sie unter Lektion 14: Bereitstellen.
Sobald das tabellarische Modell bereitgestellt und für die Verwendung bereit ist, müssen Sie eine Datenquellenverbindung mit Ihrem lokalen tabellarischen Analysis Services-Server hinzufügen.
Sie müssen ein lokales Datengateway in Ihrer Umgebung installiert und konfiguriert haben, damit der Power BI-Dienst auf Ihren lokalen Analysedienst zugreifen kann.
Wenn das Gateway ordnungsgemäß konfiguriert wurde, müssen Sie eine Datenquellenverbindung für die Analysis Services-Tabelleninstanz erstellen. Weitere Informationen finden Sie unter Verwalten Ihrer Datenquelle – Analysis Services.
Wenn dieser Vorgang abgeschlossen ist, ist das Gateway konfiguriert und kann mit der lokalen Analysis Services-Datenquelle interagieren.
Starten Sie Power BI Desktop, und wählen Sie Daten abrufen>Datenbank aus.
Wählen Sie aus der Liste der Datenquellen die SQL Server Analysis Services-Datenbank, und klicken Sie auf Verbinden.
Geben Sie die Details zu Ihrer Analysis Services-Tabelleninstanz ein, und wählen Sie Live verbinden aus. Wählen Sie dann OK aus.
Mit Power BI funktioniert die dynamische Sicherheit nur mit einer Liveverbindung.
Sie sehen, dass sich das bereitgestellte Modell in der Analysis Services-Instanz befindet. Wählen Sie das jeweilige Modell, und klicken Sie auf OK.
Power BI Desktop zeigt nun alle verfügbaren Felder rechts neben dem Canvas im Bereich Felder an.
Wählen Sie rechts im Bereich Felder das Measure SalesAmount aus der Tabelle FactInternetSales sowie die Dimension SalesTerritoryRegion aus der Tabelle SalesTerritory aus.
Fügen Sie zunächst keine weiteren Spalten hinzu, um diesen Bericht einfach zu halten. Ändern Sie die Visualisierung in ein Ringdiagramm, um die Datendarstellung aussagekräftiger zu gestalten.
Wenn Ihr Bericht fertig ist, können Sie ihn direkt im Power BI-Portal veröffentlichen. Wählen Sie im Menüband Start in Power BI Desktop Veröffentlichen aus.
Sie haben bis jetzt einen Bericht erstellt und ihn im Power BI-Dienst veröffentlicht. Jetzt können Sie das vorherig erstellte Beispiel verwenden, um ein Szenario zum Sichern von Modellen zu veranschaulichen.
In Ihrer Rolle als Vertriebsleiterin (Sales Manager) kann sich die Benutzerin Grace die Daten von allen verschiedenen Vertriebsregionen anzeigen lassen. Grace erstellt den Bericht und veröffentlicht ihn im Power BI-Dienst. Dieser Bericht wurde in den vorherigen Aufgaben erstellt.
Nachdem Grace den Bericht veröffentlicht hat, erstellt sie nun anhand dieses Berichts im Power BI-Dienst ein Dashboard namens TabularDynamicSec. Beachten Sie in der folgenden Abbildung, dass Grace sich die Daten aus allen Vertriebsregionen anzeigen lassen kann.
Grace gibt das Dashboard jetzt für ihre Kollegin Rita frei, die für den Vertrieb in der Region Australien zuständig ist.
Wenn Rita sich im Power BI-Dienst anmeldet und das freigegebene Dashboard aufruft, das Grace erstellt hat, sollten nur Umsätze aus der Region Australien zu sehen sein.
Herzlichen Glückwunsch! Der Power BI-Dienst zeigt die dynamische Sicherheit auf Zeilenebene an, die im lokalen Analysis Services-Tabellenmodell definiert wurde. Power BI verwendet die Eigenschaft EffectiveUserName
, um die aktuellen Power BI-Benutzeranmeldeinformationen zum Ausführen der Abfragen an die lokale Datenquelle zu senden.
Bei dieser Aufgabe wird vorausgesetzt, dass Sie sich mit dem SQL Server Profiler auskennen, denn Sie müssen eine SQL Server Profiler-Ablaufverfolgung auf Ihrer lokalen SSAS-Tabelleninstanz erfassen.
Sobald der Benutzer (Rita) auf das Dashboard im Power BI-Dienst zugreift, wird die Sitzung initialisiert. Wie Sie sehen, nimmt die SalesTerritoryUsers-Rolle unmittelbar den effektiven Benutzernamen <EffectiveUserName>rita@contoso.com</EffectiveUserName>
an.
<PropertyList><Catalog>DefinedSalesTabular</Catalog><Timeout>600</Timeout><Content>SchemaData</Content><Format>Tabular</Format><AxisFormat>TupleFormat</AxisFormat><BeginRange>-1</BeginRange><EndRange>-1</EndRange><ShowHiddenCubes>false</ShowHiddenCubes><VisualMode>0</VisualMode><DbpropMsmdFlattened2>true</DbpropMsmdFlattened2><SspropInitAppName>PowerBI</SspropInitAppName><SecuredCellValue>0</SecuredCellValue><ImpactAnalysis>false</ImpactAnalysis><SQLQueryMode>Calculated</SQLQueryMode><ClientProcessID>6408</ClientProcessID><Cube>Model</Cube><ReturnCellProperties>true</ReturnCellProperties><CommitTimeout>0</CommitTimeout><ForceCommitTimeout>0</ForceCommitTimeout><ExecutionMode>Execute</ExecutionMode><RealTimeOlap>false</RealTimeOlap><MdxMissingMemberMode>Default</MdxMissingMemberMode><DisablePrefetchFacts>false</DisablePrefetchFacts><UpdateIsolationLevel>2</UpdateIsolationLevel><DbpropMsmdOptimizeResponse>0</DbpropMsmdOptimizeResponse><ResponseEncoding>Default</ResponseEncoding><DirectQueryMode>Default</DirectQueryMode><DbpropMsmdActivityID>4ea2a372-dd2f-4edd-a8ca-1b909b4165b5</DbpropMsmdActivityID><DbpropMsmdRequestID>2313cf77-b881-015d-e6da-eda9846d42db</DbpropMsmdRequestID><LocaleIdentifier>1033</LocaleIdentifier><EffectiveUserName>rita@contoso.com</EffectiveUserName></PropertyList>
Basierend auf den effektiven Anforderungen des Benutzernamens konvertiert Analysis Services die Anforderung in die tatsächliche Anmeldeinformation contoso\rita
, nachdem die lokale Active Directory-Instanz abgefragt wurde. Sobald Analysis Services die Anmeldeinformationen abgerufen hat, gibt der Dienst die Daten zurück, die der Benutzer anzeigen und auf die er zugreifen darf.
Wenn im Dashboard weitere Aktivitäten auftreten, wird im SQL Profiler eine spezifische Abfrage angezeigt, die als DAX-Abfrage wieder an das Analysis Services-Tabellenmodell zurückgegeben wird. Wenn Rita beispielsweise vom Dashboard zum zugrunde liegenden Bericht wechselt, erfolgt die folgende Abfrage.
Sie können unten auch die DAX-Abfrage sehen, die ausgeführt wird, um die Berichtsdaten aufzufüllen.
EVALUATE
ROW(
"SumEmployeeKey", CALCULATE(SUM(Employee[EmployeeKey]))
)
<PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis">``
<Catalog>DefinedSalesTabular</Catalog>
<Cube>Model</Cube>
<SspropInitAppName>PowerBI</SspropInitAppName>
<EffectiveUserName>rita@contoso.com</EffectiveUserName>
<LocaleIdentifier>1033</LocaleIdentifier>
<ClientProcessID>6408</ClientProcessID>
<Format>Tabular</Format>
<Content>SchemaData</Content>
<Timeout>600</Timeout>
<DbpropMsmdRequestID>8510d758-f07b-a025-8fb3-a0540189ff79</DbpropMsmdRequestID>
<DbPropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbPropMsmdActivityID>
<ReturnCellProperties>true</ReturnCellProperties>
<DbpropMsmdFlattened2>true</DbpropMsmdFlattened2>
<DbpropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbpropMsmdActivityID>
</PropertyList>
Die lokale Sicherheit auf Zeilenebene von Power BI ist nur bei einer Liveverbindung verfügbar.
Alle Änderungen an Daten, die nach der Modellverarbeitung vorgenommen werden, stehen unmittelbar allen Benutzern zur Verfügung, die über eine Liveverbindung aus dem Power BI-Dienst auf den Bericht zugreifen.
Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenSchulung
Modul
Implementieren der Sicherheit auf Zeilenebene - Training
Mithilfe der Sicherheit auf Zeilenebene (Row-Level Security, RLS) können Sie einen oder mehrere Berichte gezielt mit Daten für einen bestimmten Benutzer erstellen. In diesem Modul erfahren Sie, wie Sie die Sicherheit auf Zeilenebene mithilfe einer statischen oder dynamischen Methode implementieren und wie Microsoft Power BI das Testen der Sicherheit auf Zeilenebene in Power BI Desktop und im Power BI-Dienst vereinfacht.
Zertifizierung
Microsoft Certified: Power BI Data Analyst Associate - Certifications
Erfahren Sie mehr über die Methoden und Best Practices, die den geschäftlichen und technischen Anforderungen für die Modellierung, Visualisierung und Analyse von Daten mit Microsoft Power BI entsprechen.