Anwenden von m:n-Beziehungen in Power BI Desktop

Mit Beziehungen mit einer vielen zu vielen Kardinalität in Power BI Desktop können Sie Tabellen verknüpfen, die eine Kardinalität von vielen zu vielen verwenden. Sie können einfacher und intuitiver Datenmodelle erstellen, die zwei oder mehr Datenquellen enthalten können. Beziehungen mit einer vielen zu vielen Kardinalität sind Teil der größeren zusammengesetzten Modelle in Power BI Desktop.

A many-to-many relationship in the

Eine Beziehung mit einer vielen zu vielen Kardinalität in Power BI Desktop besteht aus einem der drei verwandten Features:

  • Zusammengesetzte Modelle: Bei einem zusammengesetzten Modell kann ein Bericht zwei oder mehr Datenverbindungen beinhalten, einschließlich DirectQuery- oder Importverbindungen in beliebiger Kombination. Weitere Informationen finden Sie unter Verwenden zusammengesetzter Modelle in Power BI Desktop.

  • Beziehungen mit einer vielen zu vielen Kardinalität: Mit zusammengesetzten Modellen können Sie Beziehungen mit einer vielen zu vielen Kardinalität zwischen Tabellen einrichten. Bei diesem Ansatz entfallen die Anforderungen für eindeutige Werte in Tabellen. Zudem sind vorherige Problemumgehungen hinfällig, wie z.B. die Einführung neuer Tabellen zum Einrichten von Beziehungen. Im vorliegenden Artikel wird das Feature ausführlich erläutert.

  • Speichermodus: Sie können nun angeben, welche Visuals eine Abfrage in Back-End-Datenquellen erfordern. Visuals, für die keine Abfrage nötig ist, werden importiert, auch wenn diese auf DirectQuery basieren. Mit diesem Feature kann die Leistung verbessert und die Auslastung des Back-Ends verringert werden. Zuvor initiierten sogar einfache Visuals wie Slicer Abfragen, die an Back-End-Quellen gesendet wurden. Weitere Informationen erhalten Sie unter Storage mode in Power BI Desktop (Speichermodus in Power BI Desktop).

Was eine Beziehung mit einer vielen zu vielen Kardinalität löst

Bevor Beziehungen mit einer vielen zu vielen Kardinalität verfügbar wurden, wurde die Beziehung zwischen zwei Tabellen in Power BI definiert. Mindestens eine der Tabellenspalten, die an der Beziehung beteiligt war, musste eindeutige Werte enthalten. Häufig hat jedoch keine Spalte eindeutige Werte enthalten.

Angenommen, zwei Tabellen verfügten über eine Spalte mit der Bezeichnung „Land/Region“. Jedoch waren die Werte für „Land/Region“ in keiner Tabelle eindeutig. Solche Tabellen konnten nur über eine Problemumgehung miteinander verknüpft werden. Eine Möglichkeit zur Umgehung des Problems bestand darin, zusätzliche Tabellen mit den erforderlichen eindeutigen Werten einzufügen. Mit Beziehungen mit einer vielen zu vielen Kardinalität können Sie solche Tabellen direkt verknüpfen, wenn Sie eine Beziehung mit einer Kardinalität von vielen zu vielen verwenden.

Verwenden von Beziehungen mit einer vielen zu vielen Kardinalität

Wenn Sie eine Beziehung zwischen zwei Tabellen in Power BI definieren, müssen Sie die Kardinalität der Beziehung definieren. Die Beziehung zwischen „Produktverkäufen“ (ProductSales) und „Produkt“ kann beispielsweise mithilfe der Spalten „Produktverkäufe[Produkt-Code]“ und „Produkt[Produkt-Code]“ als n:1 definiert werden. Die Beziehung wird auf diese Weise definiert, weil es für jedes Produkt viele Verkäufe gibt und die Spalte „ProductCode“ in der Tabelle „Product“ eindeutig ist. Wenn Sie die Kardinalität einer Beziehung als n:1, 1:n oder 1:1 definieren, überprüft Power BI, ob die ausgewählte Kardinalität den tatsächlichen Daten auch entspricht.

Die folgende Abbildung zeigt beispielsweise ein einfaches Modell:

ProductSales and Product table, Relationship view, Power BI Desktop

Nehmen Sie nun an, dass die Tabelle Product wie im Folgenden dargestellt nur zwei Zeilen anzeigt:

Product table visual with two rows, Power BI Desktop

Angenommen, die Tabelle „Sales“ enthielte nur vier Zeilen, darunter die Zeile für ein Produkt C. Aufgrund eines Fehlers in der referenziellen Integrität ist die Zeile für Produkt C in der Tabelle Product nicht vorhanden.

Sales table visual with four rows, Power BI Desktop

Die Spalten ProductName und Price (aus der Tabelle Product) zusammen mit der Gesamtmenge Qty für jedes Produkt (aus der Tabelle „ProductSales“) würden nun wie folgt angezeigt:

Visual displaying the product name, price, and quantity, Power BI Desktop

Sie sehen in der vorherigen Abbildung, dass eine leere ProductName-Zeile den Verkäufen für Produkt C zugeordnet ist. Folgende Gründe können für die leere Zeile verantwortlich sein:

  • Alle Zeilen in der Tabelle ProductSales, für die keine zugehörige Zeile in der Tabelle Product vorhanden ist. Es besteht ein Problem mit der referenziellen Integrität, das sich in diesem Beispiel auf Produkt C auswirkt.

  • Zeilen in der Tabelle ProductSales, bei denen die Fremdschlüsselspalte NULL ist.

Aus diesen Gründen deckt die leere Zeile in beiden Fällen Verkäufe ab, bei denen ProductName und Price unbekannt sind.

Manchmal werden die Tabellen durch zwei Spalten verknüpft, von denen jedoch keine eindeutig ist. Betrachten Sie beispielsweise die folgenden beiden Tabellen:

  • Die Tabelle Sales stellt die Umsatzdaten nach State dar, wobei jede Zeile den Umsatzbetrag für den Typ des Umsatzes im jeweiligen Bundesstaat enthält. Zu diesen Bundesstaaten zählen z.B. Kalifornien, Washington und Texas (CA, WA, TX).

    Sales table displaying sales by state, Power BI Desktop

  • Die Tabelle CityData enthält Daten zu Städten, wie etwa Einwohnerzahl und Bundesstaat (z. B. CA, WA und New York).

    Sales table displaying city, state, and population, Power BI Desktop

Beide Tabellen enthalten also eine Spalte für State. Es liegt nun nahe, in einem Bericht die Gesamtumsätze pro Bundesstaat mit der Gesamtbevölkerung der einzelnen Bundesstaaten zu kombinieren. Dabei gibt es jedoch ein Problem: In keiner Tabelle ist die Spalte State eindeutig.

Die bisherige Problemumgehung

Vor dem Power BI Desktop-Release vom Juli 2018 konnten Benutzer keine direkte Beziehung zwischen diesen Tabellen erstellen. Eine gängige Problemumgehung bestand aus den folgenden Schritten:

  • Eine dritte Tabelle wurde erstellt, die ausschließlich die eindeutigen IDs von „State“ enthielt. Für die Tabelle galt eine oder alle der folgenden Optionen:

    • Eine berechnete Tabelle, die mithilfe von DAX (Data Analysis Expressions) definiert wurde
    • Eine Tabelle, die auf einer im Power Query-Editor definierten Abfrage basiert und in der die eindeutigen IDs enthalten sein können, die aus einer der Tabellen abgerufen wurden.
    • Eine Kombination aus beidem.
  • Anschließend wurde mithilfe herkömmlicher n:1-Beziehungen eine Beziehung zwischen den beiden ursprünglichen Tabellen und der neuen Tabelle hergestellt.

Dabei konnte die Tabelle für die Problemumgehung sichtbar bleiben. Oder die Tabelle konnte ausgeblendet werden, damit sie nicht in der Liste Felder angezeigt wurde. Bei ausgeblendeter Tabelle wurden die n:1-Beziehungen üblicherweise so festgelegt, dass in beide Richtungen gefiltert wurde. So konnte das Feld „State“ von jeder Tabelle verwendet werden. Die spätere Kreuzfilterung wurde an die andere Tabelle weitergegeben. Dieser Ansatz wird in der folgenden Abbildung veranschaulicht:

Hidden State table, Relationship view, Power BI Desktop

Ein Visual, das State (aus der Tabelle CityData) zusammen mit der Gesamtwert von Population und Sales anzeigt, würde dann wie folgt aussehen:

Screenshot shows a table with State, Population, and Sales data.

Hinweis

Da in dieser Problemumgehung der Wert für „State“ aus der Tabelle CityData verwendet wird, werden nur die State-Werte dieser Tabelle aufgeführt (weshalb TX ausgeschlossen wurde). Im Gegensatz zu n:1-Beziehungen ist zudem in den Details keine leere Zeile enthalten, die solche nicht übereinstimmenden Zeilen abdeckt. Die Zeile „Total“ enthält hingegen alle Sales-Werte (einschließlich der von TX). Analog dazu gäbe es keine leere Zeile für alle Sales-Werte, bei denen der Wert für State NULL lautet.

Angenommen, Sie fügen dem Visual auch die Spalte „City“ hinzu. Obwohl die Einwohnerzahl für jeden City-Wert bekannt ist, wird in der Sales-Spalte für „City“ nur der Sales-Wert für die entsprechende State-Spalte wiederholt. Zu diesem Szenario kann es kommen, wenn die Spaltengruppierung, wie in der folgenden Abbildung gezeigt, mit keinem aggregierten Measure verknüpft ist:

State and city population and sales, Power BI Desktop

Angenommen, Sie definieren die neue Tabelle „Sales“ als Kombination aller Werte für „States“ und machen dies in der Liste Felder sichtbar. Dasselbe Visual würde State (in der neuen Tabelle), die Gesamtbevölkerung für Population und den Gesamtumsatz für Sales anzeigen:

State, population, and sales visual, Power BI Desktop

Sie sehen, dass TX (inklusive der Daten für Verkäufe, jedoch ohne Daten für Bevölkerung) und New York (inklusive der Daten für Bevölkerung, jedoch ohne Daten für Verkäufe) enthalten wäre. Diese Umgehung ist nicht ideal und führt zu vielen Problemen. Für Beziehungen mit einer vielen zu vielen Kardinalität werden die resultierenden Probleme behandelt, wie im nächsten Abschnitt beschrieben.

Weitere Informationen zum Implementieren dieser Problemumgehung finden Sie in den Anleitungen zu vielen zu vielen Beziehungen.

Verwenden Sie eine Beziehung mit einer vielen zu vielen Kardinalität anstelle der Problemumgehung

Sie können Tabellen direkt miteinander verknüpfen, ohne auf die oben beschriebene Problemumgehung zurückgreifen zu müssen. Die Kardinalität einer Beziehung kann nun auf m:n festgelegt werden. Diese Einstellung gibt an, dass keine der Tabellen eindeutige Werte enthält. Dennoch können Sie für diese Beziehungen weiterhin steuern, welche Tabelle die andere Tabelle filtern soll. Alternativ können Sie mit einer bidirektionalen Filterung auch festlegen, dass sich die Tabellen gegenseitig filtern sollen.

In Power BI Desktop lautet die Standardeinstellung für die Kardinalität m:n, wenn festgestellt wird, dass keine der Tabellen eindeutige Werte für die Beziehungsspalten enthält. In solchen Fällen müssen Sie in einer Warnmeldung bestätigen, dass Sie eine Beziehung festlegen möchten und die Änderung nicht die unbeabsichtigte Auswirkung eines Datenproblems ist.

Wenn Sie z. B. eine direkte Beziehung zwischen „Stadtdaten“ (CityData) und „Verkäufen“ (Sales) erstellen (mit Filterrichtung von „Stadtdaten“ zu „Verkäufen“), zeigt der Power-BI-Desktop das Dialogfeld Beziehung bearbeiten an:

Edit relationship dialog box, Power BI Desktop

Die resultierende Beziehungsansicht würde dann die direkte m:n-Beziehung zwischen den beiden Tabellen darstellen. Die Darstellung der Tabellen in der Liste Felder und deren späteres Verhalten, wenn die Visuals erstellt wurden, ähneln den Ergebnissen, die durch die Problemumgehung erzielt wurden. In der Problemumgehung wurde die zusätzliche Tabelle mit den eindeutigen Daten für „State“ nicht sichtbar gemacht. Wie oben bereits erwähnt, wird ein Visual mit den Spalten State, Population und Sales folgendermaßen angezeigt:

State, Population, and Sales tables, Power BI Desktop

Die wichtigsten Unterschiede zwischen Beziehungen mit einer vielen zu vielen Kardinalität und die typischeren Beziehungen von "Viele-1 " sind wie folgt:

  • Die angezeigten Werte enthalten keine leere Zeile, die nicht übereinstimmende Zeilen in der anderen Tabelle abdeckt. Die Werte decken ebenfalls keine Zeilen ab, bei denen die Spalte, die in der anderen Tabelle der Beziehung verwendet wurde, den Wert NULL aufweist.

  • Die Funktion RELATED() kann nicht verwendet werden, da mehr als eine Zeile verknüpft sein könnte.

  • Mit der Funktion ALL() werden in einer Tabelle keine Filter entfernt, die auf andere verknüpfte Tabellen angewendet wurden, mit denen eine m:n-Beziehung besteht. Im vorherigen Beispiel würde ein Measure, das wie hier definiert wurde, keine Filter für Spalten in der verknüpften Tabelle „CityData“ entfernen:

    Script example

    Ein Visual mit Daten für State, Sales und Sales total würde folgendermaßen angezeigt werden:

    Table visual

Stellen Sie aufgrund dieser Unterschiede sicher, dass die Berechnungen, die ALL(<Table>) verwenden (wie z. B. % von Gesamtsumme), die gewünschten Ergebnisse zurückgeben.

Überlegungen und Einschränkungen

Es gibt einige Einschränkungen für diese Veröffentlichung von Beziehungen mit vielen zu vielen Kardinalitäts - und Zusammengesetzten Modellen.

Die folgenden (mehrdimensionalen) Live Connect-Quellen können nicht mit zusammengesetzten Modellen verwendet werden:

  • SAP HANA
  • SAP Business Warehouse
  • SQL Server Analysis Services
  • Power BI-Datasets
  • Azure Analysis Services

Wenn Sie mithilfe von DirectQuery eine Verbindung mit diesen mehrdimensionalen Quellen herstellen, können Sie keine Verbindung mit einer anderen DirectQuery-Quelle herstellen oder diese mit importierten Daten kombinieren.

Die vorhandenen Einschränkungen der Verwendung von DirectQuery gelten weiterhin, wenn Sie Beziehungen mit einer vielen zu vielen Kardinalität verwenden. Viele Einschränkungen gelten jetzt abhängig vom Speichermodus der Tabelle für eine einzelne Tabelle. Beispielsweise kann eine berechnete Spalte in einer importierten Tabelle auf andere Tabellen verweisen, wohingegen eine berechnete Spalte in einer DirectQuery-Tabelle nach wie vor nur auf Spalten in derselben Tabelle verweisen kann. Es gelten weitere Einschränkungen für das ganze Modell, wenn darin enthaltene Tabellen den Modus „DirectQuery“ aufweisen. Die Funktionen „QuickInsights“ und „Fragen&Antworten“ sind nicht für Modelle verfügbar, wenn die darin enthaltenen Tabellen den Speichermodus „DirectQuery“ aufweisen.

Nächste Schritte

Weitere Informationen zu zusammengesetzten Modellen und DirectQuery finden Sie in den folgenden Artikeln: