Freigeben über


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.

Abbildung eines Modells mit drei Tabellen. Das Format wird im folgenden Absatz beschrieben.

Die erste Tabelle heißt Customer., und sie enthält drei Spalten: Country-Region, Customerund CustomerCode. Die zweite Tabelle heißt Productund enthält drei Spalten: Color, Productund SKU. Die dritte Tabelle heißt Salesund enthält vier Spalten: CustomerCode, OrderDate, Quantityund 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.

Diagramm, das zeigt, dass das Modell jetzt die Tabellenzeilen aufdeckt. Die Zeilendetails werden im folgenden Absatz beschrieben.

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, CustomerCustomer-1, Country-RegionUnited States
    • CustomerCode CUST-02, CustomerCustomer-2, Country-RegionAustralia
  • Die Tabelle Product enthält drei Zeilen:
    • SKU CL-01, ProductT-shirt, ColorGreen
    • SKU CL-02, ProductJeans, ColorBlue
    • SKU AC-01, ProductHat, ColorBlue
  • Die Tabelle Sales hat drei Zeilen:
    • OrderDate January 1 2019, CustomerCodeCUST-01, SKUCL-01, Quantity10
    • OrderDate February 2 2019, CustomerCodeCUST-01, SKUCL-02, Quantity20
    • OrderDate March 3 2019, CustomerCodeCUST-02, SKUCL-01, Quantity30

Betrachten Sie nun die folgende Berichtsseite.

Diagramm mit der Berichtsseite mit drei visuellen Elementen. Die Details sind im folgenden Absatz beschrieben.

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.

Diagramm mit einem Modell, in dem die Beziehung zwischen den Tabellen „Product“ und „Sales“ jetzt bidirektional ist

Der Slicer „Product“ listet jetzt eine einzige Option auf: T-shirt. Diese Option stellt das einzige Produkt dar, das an australische Kunden verkauft wird.

Diagramm mit der Berichtsseite, die drei Visuals enthält, mit „Product“ als Legende. Die Details werden im folgenden Abschnitt erläutert.

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.

Diagramm mit dem Filterbereich für den Slicer „Product“, der jetzt nach „Total Quantity is not blank“ gefiltert ist

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.

Diagramm eines Tabellenvisuals mit zwei Produkten. In der Spalte „Different Countries Sold“ befindet sich „Jeans“ an Position 1 und „T-shirt“ an Position 2.

Weitere Informationen zu diesem Artikel finden Sie in den folgenden Ressourcen: