Leitfaden zu bidirektionalen Beziehungen
Dieser Artikel zielt auf Sie als Datenmodellierer ab, der mit Power BI Desktop arbeitet. Er bietet Empfehlungen dazu, wann bidirektionale Modellbeziehungen erstellt werden sollten. Eine bidirektionale Beziehung ist eine Beziehung, in der in beide Richtungen gefiltert wird.
Hinweis
Dieser Artikel enthält jedoch keine Einführung zu Modellbeziehungen. Wenn Sie sich bisher noch wenig mit Beziehungen, ihren Eigenschaften und ihrer Konfiguration beschäftigt haben, sollten Sie sich zuerst den Artikel Modellieren von Beziehungen in Power BI Desktop durchlesen.
Außerdem sollten Sie mit dem Sternschemadesign gut vertraut sein. Weitere Informationen finden Sie im Artikel Informationen zum Sternschema und der Wichtigkeit für Power BI.
Im Allgemeinen wird empfohlen, die Verwendung bidirektionaler Beziehungen zu minimieren. Dies liegt daran, dass sie sich negativ auf die Leistung von Modellabfragen auswirken und möglicherweise verwirrende Erfahrungen für Die Berichtsbenutzer bereitstellen können.
Es gibt jedoch drei Szenarien, in denen bidirektionale Filterung bestimmte Anforderungen lösen kann:
Besondere Modellbeziehungen
Bidirektionale Beziehungen spielen beim Erstellen der folgenden beiden besonderen Modellbeziehungen eine wichtige Rolle:
- 1:1-Beziehung: Alle 1:1-Beziehungen müssen bidirektional sein, eine anderweitige Konfiguration ist nicht möglich. Im Allgemeinen empfiehlt es sich nicht, diese Arten von Beziehungen zu erstellen. Eine ausführliche Erläuterung und alternative Entwurfsmuster finden Sie im Leitfaden zu 1:1-Beziehungen.
- m:n: Wenn zwei Dimensionstabellen miteinander in Beziehung gesetzt werden sollen, ist eine Überbrückungstabelle erforderlich. Um sicherzustellen, dass Filter über diese Überbrückungstabelle hinweg weitergegeben werden, ist ein bidirektionaler Filter erforderlich. Weitere Informationen finden Sie im Leitfaden zu m:n-Beziehungen.
Sliceroptionen „mit Daten“
Bidirektionale Beziehungen können Slicer bereitstellen, die Optionen auf das Vorhandensein von Daten beschränken. (Wenn Sie mit Excel PivotTables und Slicers vertraut sind, entspricht dies dem Standardverhalten beim Abrufen von Daten aus einem Power BI-Semantikmodell oder einem Analysis Services-Modell.) Um dieses Konzept zu verstehen, sehen Sie sich zunächst das folgende Modelldiagramm an.
Die erste Tabelle heißt Customer
., und sie enthält drei Spalten: Country-Region
, Customer
und CustomerCode
. Die zweite Tabelle heißt Product
und enthält drei Spalten: Color
, Product
und SKU
. Die dritte Tabelle heißt Sales
und enthält vier Spalten: CustomerCode
, OrderDate
, Quantity
und SKU
. Bei den Tabellen Customer
und Product
handelt es sich um Dimensionstabellen, und jede Tabelle verfügt über eine 1:n-Beziehung mit der Tabelle Sales
. Jede Beziehung filtert nur in eine Richtung.
Um die Funktionsweise der bidirektionalen Filterung besser zu beschreiben, wurde das Modellschaubild so angepasst, dass die Tabellenzeilen angezeigt werden. Alle Beispiele in diesem Artikel basieren auf diesen Daten.
In der folgenden Aufzählung werden die Details zu den Zeilen der drei Tabellen erläutert:
- Die Tabelle
Customer
enthält zwei Zeilen:CustomerCode
CUST-01,Customer
Customer-1,Country-Region
United StatesCustomerCode
CUST-02,Customer
Customer-2,Country-Region
Australia
- Die Tabelle
Product
enthält drei Zeilen:SKU
CL-01,Product
T-shirt,Color
GreenSKU
CL-02,Product
Jeans,Color
BlueSKU
AC-01,Product
Hat,Color
Blue
- Die Tabelle
Sales
hat drei Zeilen:OrderDate
January 1 2019,CustomerCode
CUST-01,SKU
CL-01,Quantity
10OrderDate
February 2 2019,CustomerCode
CUST-01,SKU
CL-02,Quantity
20OrderDate
March 3 2019,CustomerCode
CUST-02,SKU
CL-01,Quantity
30
Betrachten Sie nun die folgende Berichtsseite.
Die Seite besteht aus zwei Slicern und einem Kartenvisual. Der erste Slicer basiert auf dem Feld Country-Region
und enthält zwei Optionen: Australia und United States. Zurzeit wird nach „Australia“ segmentiert. Der zweite Slicer basiert auf dem Feld Product
und enthält drei Optionen: Hat, Jeans und T-shirt. Es sind keine Elemente ausgewählt (was bedeutet, dass keine Produkte gefiltert werden). Das Kartenvisual zeigt eine Menge von 30 an.
Wenn Berichtsbenutzende nach „Australia“ segmentieren, sollten Sie den Slicer „Product“ so begrenzen, dass Optionen angezeigt werden, die sich auf Verkäufe in Australien beziehen. Das ist gemeint, wenn von der Anzeige von Sliceroptionen „mit Daten“ die Rede ist. Sie können dieses Verhalten erreichen, indem Sie die Beziehung zwischen den Tabellen Product
und Sales
so festlegen, dass eine Filterung in beide Richtungen erfolgt.
Der Slicer „Product“ listet jetzt eine einzige Option auf: T-shirt. Diese Option stellt das einzige Produkt dar, das an australische Kunden verkauft wird.
Zunächst sollten Sie sorgfältig prüfen, ob dieses Design für Ihre Berichtsbenutzer geeignet ist. Für einige Berichtsbenutzer kann dieses Verhalten verwirrend sein, weil sie nicht verstehen, warum Sliceroptionen dynamisch ein- oder ausgeblendet werden, wenn sie mit anderen Slicern interagieren.
Wenn Sie Sliceroptionen „mit Daten“ anzeigen, empfiehlt sich die Einrichtung von bidirektionalen Beziehungen nicht. Bidirektionale Beziehungen erfordern mehr Verarbeitung und können sich negativ auf die Abfrageleistung auswirken – insbesondere, wenn die Anzahl bidirektionaler Beziehungen im Modell zunimmt.
Es gibt eine bessere Möglichkeit, dasselbe Ergebnis zu erzielen: Statt bidirektionale Filter zu verwenden, können Sie einen visuellen Filter direkt auf den Produkt-Slicer anwenden.
Nehmen wir nun an, dass die Beziehung zwischen den Tabellen Product
und Sales
nicht mehr in beide Richtungen filtert. Der Tabelle Sales
wurde die folgende Definition der Maßnahme hinzugefügt.
Total Quantity = SUM(Sales[Quantity])
Um die Product-Sliceroptionen „mit Daten“ anzuzeigen, muss die Tabelle einfach mit dem Measure Total Quantity
und der Bedingung „is not blank“ gefiltert werden.
Analysen zwischen Dimensionen
Ein anderes Szenario, an dem bidirektionale Beziehungen beteiligt sind, behandelt eine Faktentabelle wie eine Überbrückungstabelle. Auf diese Weise wird die Analyse von Dimensionstabellendaten innerhalb des Filterkontexts einer anderen Dimensionstabelle unterstützt.
Überlegen Sie, wie sich anhand des Beispielmodells in diesem Artikel die folgenden Fragen beantworten lassen:
- Wie viele Farben wurden an australische Kunden verkauft?
- In wie vielen Ländern/Regionen wurden Jeans gekauft?
Beide Fragen können beantwortet werden, ohne dass die Daten in der Faktentabelle zur Überbrückung zusammengefasst werden müssen. Allerdings muss eine Weitergabe der Filter von einer Dimensionstabelle in die andere erfolgen. Sobald die Filter Daten über die Faktentabelle weitergeben, lässt sich eine Zusammenfassung der Spalten einer Dimensionstabelle mithilfe der DAX-Funktion DISTINCTCOUNT – sowie eventuell der DAX-Funktionen MIN und MAX – erreichen.
Da sich die Faktentabelle wie eine Überbrückungstabelle verhält, können Sie den Leitfaden zu m:n-Beziehungen anwenden, um zwei Dimensionstabellen in Beziehung zu setzen. Es muss mindestens eine Beziehung eingerichtet werden, um das Filtern in beide Richtungen zu ermöglichen. Weitere Informationen finden Sie im Leitfaden zu m:n-Beziehungen.
Wie in diesem Artikel bereits erläutert, wirkt sich dieser Entwurf wahrscheinlich negativ auf die Leistung aus, und die Benutzer sind möglicherweise durch Sliceroptionen „mit Daten“ verwirrt. Daher empfehlen wir stattdessen die Aktivierung der bidirektionalen Filterung in einer Measuredefinition mithilfe der DAX-Funktion CROSSFILTER. Mit der CROSSFILTER-Funktion können Sie die Filterrichtungen während der Auswertung eines Ausdrucks ändern oder sogar die Beziehung deaktivieren.
Betrachten Sie die folgende Maßdefinition, die der Sales
-Tabelle hinzugefügt wurde. In diesem Beispiel wurde die Modellbeziehung zwischen den Tabellen Customer
und Sales
zur Filterung in nur einer Richtung eingerichtet.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Bei der Auswertung des Measures Different Countries Sold
erfolgt für die Beziehung zwischen den Tabellen Customer
und Sales
eine Filterung in beide Richtungen.
Das folgende Tabellenvisual zeigt Statistiken zu jedem verkauften Produkt an. Die Spalte Quantity
ist einfach die Summe der Mengenwerte. Die Spalte Different Countries Sold
enthält die eindeutige Anzahl von country-region-Werten aller Kunden, die das Produkt gekauft haben.
Zugehöriger Inhalt
Weitere Informationen zu diesem Artikel finden Sie in den folgenden Ressourcen:
- Modellieren von Beziehungen in Power BI Desktop
- Informationen zum Sternschema und dessen Wichtigkeit für Power BI
- Leitfaden zu 1:1-Beziehungen
- Leitfaden zu m:n-Beziehungen
- Leitfaden zur Problembehandlung bei Beziehungen
- Haben Sie Fragen? Stellen Sie Ihre Frage in der Fabric Community
- Vorschläge? Einbringen von Ideen zur Verbesserung von Fabric