Anwenden von m:n-Beziehungen in Power BI DesktopApply many-many relationships in Power BI Desktop

Mithilfe der Beziehungen mit m:n-Kardinalität in Power BI Desktop können Sie Tabellen verknüpfen, die eine m:n-Kardinalität verwenden.With relationships with a many-many cardinality in Power BI Desktop, you can join tables that use a cardinality of many-to-many. Sie können einfacher und intuitiver Datenmodelle erstellen, die zwei oder mehr Datenquellen enthalten können.You can more easily and intuitively create data models that contain two or more data sources. Beziehungen mit m:n-Kardinalität sind Teil der umfangreicheren Funktionen der Zusammengesetzten Modelle in Power BI Desktop.Relationships with a many-many cardinality are part of the larger composite models capabilities in Power BI Desktop.

m:n-Beziehung im Bereich „Beziehung bearbeiten“ in Power BI Desktop

Beziehungen mit m:n-Kardinalität in Power BI Desktop bestehen aus einer von drei miteinander in Beziehung stehenden Funktionen:A relationship with a many-many cardinality in Power BI Desktop is composed of one of three related features:

  • Zusammengesetzte Modelle: Bei einem zusammengesetzten Modell kann ein Bericht zwei oder mehr Datenverbindungen beinhalten, einschließlich DirectQuery- oder Importverbindungen in beliebiger Kombination.Composite models: A composite model allows a report to have two or more data connections, including DirectQuery connections or Import, in any combo. Weitere Informationen finden Sie unter Verwenden zusammengesetzter Modelle in Power BI Desktop.For more information, see Use composite models in Power BI Desktop.

  • Beziehungen mit einer m:n-Kardinalität: Mithilfe zusammengesetzter Modelle können Sie Beziehungen mit m:n-Kardinalität zwischen Tabellen erstellen.Relationships with a many-many cardinality: With composite models, you can establish relationships with a many-many cardinality between tables. Bei diesem Ansatz entfallen die Anforderungen für eindeutige Werte in Tabellen.This approach removes requirements for unique values in tables. Zudem sind vorherige Problemumgehungen hinfällig, wie z.B. die Einführung neuer Tabellen zum Einrichten von Beziehungen.It also removes previous workarounds, such as introducing new tables only to establish relationships. Im vorliegenden Artikel wird das Feature ausführlich erläutert.The feature is described further in this article.

  • Speichermodus: Sie können nun angeben, welche Visuals eine Abfrage in Back-End-Datenquellen erfordern.Storage mode: You can now specify which visuals require a query to back-end data sources. Visuals, für die keine Abfrage nötig ist, werden importiert, auch wenn diese auf DirectQuery basieren.Visuals that don't require a query are imported even if they're based on DirectQuery. Mit diesem Feature kann die Leistung verbessert und die Auslastung des Back-Ends verringert werden.This feature helps improve performance and reduce back-end load. Zuvor initiierten sogar einfache Visuals wie Slicer Abfragen, die an Back-End-Quellen gesendet wurden.Previously, even simple visuals, such as slicers, began queries that were sent to back-end sources. Weitere Informationen erhalten Sie unter Storage mode in Power BI Desktop (Speichermodus in Power BI Desktop).For more information, see Storage mode in Power BI Desktop.

Zweck einer Beziehung mit m:n-KardinalitätWhat a relationship with a many-many cardinality solves

Bevor Beziehungen mit m:n-Kardinalität verfügbar waren, wurde die Beziehung zwischen zwei Tabellen in Power BI definiert.Before relationships with a many-many cardinality became available, the relationship between two tables was defined in Power BI. Mindestens eine der Tabellenspalten, die an der Beziehung beteiligt war, musste eindeutige Werte enthalten.At least one of the table columns involved in the relationship had to contain unique values. Häufig hat jedoch keine Spalte eindeutige Werte enthalten.Often, though, no columns contained unique values.

Angenommen, zwei Tabellen verfügten über eine Spalte mit der Bezeichnung „Land/Region“.For example, two tables might have had a column labeled Country. Jedoch waren die Werte für „Land/Region“ in keiner Tabelle eindeutig.The values of Country weren't unique in either table, though. Solche Tabellen konnten nur über eine Problemumgehung miteinander verknüpft werden.To join such tables, you had to create a workaround. Eine Möglichkeit zur Umgehung des Problems bestand darin, zusätzliche Tabellen mit den erforderlichen eindeutigen Werten einzufügen.One workaround might be to introduce extra tables with the needed unique values. Mithilfe der Beziehungen mit m:n-Kardinalität können Sie solche Tabellen direkt miteinander verknüpfen, indem Sie eine Beziehung mit m:n-Kardinalität verwenden.With relationships with a many-many cardinality, you can join such tables directly, if you use a relationship with a cardinality of many-to-many.

Verwenden von Beziehungen mit m:n-KardinalitätUse relationships with a many-many cardinality

Wenn Sie eine Beziehung zwischen zwei Tabellen in Power BI definieren, müssen Sie die Kardinalität der Beziehung definieren.When you define a relationship between two tables in Power BI, you must define the cardinality of the relationship. Die Beziehung zwischen den Tabellen „ProductSales“ und „Product“ kann beispielsweise mithilfe der Spalten „ProductSales[ProductCode]“ und „Product[ProductCode]“ als n:1 definiert werden.For example, the relationship between ProductSales and Product—using columns ProductSales[ProductCode] and Product[ProductCode]—would be defined as Many-1. 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.We define the relationship in this way, because each product has many sales, and the column in the Product table (ProductCode) is unique. 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.When you define a relationship cardinality as Many-1, 1-Many, or 1-1, Power BI validates it, so the cardinality that you select matches the actual data.

Die folgende Abbildung zeigt beispielsweise ein einfaches Modell:For example, take a look at the simple model in this image:

Tabellen „ProductSales und „Product“ in der Beziehungsansicht in Power BI Desktop

Nehmen Sie nun an, dass die Tabelle Product wie im Folgenden dargestellt nur zwei Zeilen anzeigt:Now, imagine that the Product table displays just two rows, as shown:

Visual der Tabelle „Product“ mit zwei Zeilen in 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.Also imagine that the Sales table has just four rows, including a row for a product C. Because of a referential integrity error, the product C row doesn't exist in the Product table.

Visual der Tabelle „Sales“ mit vier Zeilen in 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:The ProductName and Price (from the Product table), along with the total Qty for each product (from the ProductSales table), would be displayed as shown:

Visual mit den Spalten „ProductName“, „Price“ und „Qty“ in 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:As you can see in the preceding image, a blank ProductName row is associated with sales for product C. This blank row accounts for the following:

  • Alle Zeilen in der Tabelle ProductSales, für die keine zugehörige Zeile in der Tabelle Product vorhanden ist.Any rows in the ProductSales table for which no corresponding row exists in the Product table. Es besteht ein Problem mit der referenziellen Integrität, das sich in diesem Beispiel auf Produkt C auswirkt.There's a referential integrity issue, as we see for product C in this example.

  • Zeilen in der Tabelle ProductSales, bei denen die Fremdschlüsselspalte NULL ist.Any rows in the ProductSales table for which the foreign key column is null.

Aus diesen Gründen deckt die leere Zeile in beiden Fällen Verkäufe ab, bei denen ProductName und Price unbekannt sind.For these reasons, the blank row in both cases accounts for sales where the ProductName and Price are unknown.

Manchmal werden die Tabellen durch zwei Spalten verknüpft, von denen jedoch keine eindeutig ist.Sometimes the tables are joined by two columns, yet neither column is unique. Betrachten Sie beispielsweise die folgenden beiden Tabellen:For example, consider these two tables:

  • 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.The Sales table displays sales data by State, and each row contains the sales amount for the type of sale in that state. Zu diesen Bundesstaaten zählen z.B. Kalifornien, Washington und Texas (CA, WA, TX).The states include CA, WA, and TX.

    Tabelle „Sales“ mit dem Umsatz nach Bundesstaaten in Power BI Desktop

  • Die Tabelle CityData enthält Daten zu Städten, wie etwa Einwohnerzahl und Bundesstaat (z. B. CA, WA und New York).The CityData table displays data on cities, including the population and state (such as CA, WA, and New York).

    Tabelle „Sales“ mit „City“, „State“ und „Population“ in Power BI Desktop

Beide Tabellen enthalten also eine Spalte für State.A column for State is now in both tables. Es liegt nun nahe, in einem Bericht die Gesamtumsätze pro Bundesstaat mit der Gesamtbevölkerung der einzelnen Bundesstaaten zu kombinieren.It's reasonable to want to report on both total sales by state and total population of each state. Dabei gibt es jedoch ein Problem: In keiner Tabelle ist die Spalte State eindeutig.However, a problem exists: the State column isn't unique in either table.

Die bisherige ProblemumgehungThe previous workaround

Vor dem Power BI Desktop-Release vom Juli 2018 konnten Benutzer keine direkte Beziehung zwischen diesen Tabellen erstellen.Before the July 2018 release of Power BI Desktop, you couldn't create a direct relationship between these tables. Eine gängige Problemumgehung bestand aus den folgenden Schritten:A common workaround was to:

  • Eine dritte Tabelle wurde erstellt, die ausschließlich die eindeutigen IDs von „State“ enthielt.Create a third table that contains only the unique State IDs. Für die Tabelle galt eine oder alle der folgenden Optionen:The table could be any or all of:

    • Eine berechnete Tabelle, die mithilfe von DAX (Data Analysis Expressions) definiert wurdeA calculated table (defined by using Data Analysis Expressions [DAX]).
    • Eine Tabelle, die auf einer Abfrage basiert, die im Abfrage-Editor definiert wurde, und in der die eindeutigen IDs enthalten sein können, die aus einer der Tabellen abgerufen wurden.A table based on a query that's defined in Query Editor, which could display the unique IDs drawn from one of the tables.
    • Eine Kombination aus beidem.The combined full set.
  • Anschließend wurde mithilfe herkömmlicher n:1-Beziehungen eine Beziehung zwischen den beiden ursprünglichen Tabellen und der neuen Tabelle hergestellt.Then relate the two original tables to that new table by using common Many-1 relationships.

Dabei konnte die Tabelle für die Problemumgehung sichtbar bleiben.You could leave the workaround table visible. Oder die Tabelle konnte ausgeblendet werden, damit sie nicht in der Liste Felder angezeigt wurde.Or you may hide the workaround table, so it doesn't appear in the Fields list. 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.If you hide the table, the Many-1 relationships would commonly be set to filter in both directions, and you could use the State field from either table. Die spätere Kreuzfilterung wurde an die andere Tabelle weitergegeben.The later cross filtering would propagate to the other table. Dieser Ansatz wird in der folgenden Abbildung veranschaulicht:That approach is shown in the following image:

Ausgeblendete Tabelle „State“ in der Beziehungsansicht in 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:A visual that displays State (from the CityData table), along with total Population and total Sales, would then appear as follows:

Screenshot einer Tabelle mit Daten zu „State“, „Population“ und „Sales“

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).Because the state from the CityData table is used in this workaround, only the states in that table are listed, so TX is excluded. 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).Also, unlike Many-1 relationships, while the total row includes all Sales (including those of TX), the details don't include a blank row covering such mismatched rows. Analog dazu gäbe es keine leere Zeile für alle Sales-Werte, bei denen der Wert für State NULL lautet.Similarly, no blank row would cover Sales for which there's a null value for the State.

Angenommen, Sie fügen dem Visual auch die Spalte „City“ hinzu.Suppose you also add City to that visual. 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.Although the population per City is known, the Sales shown for City simply repeats the Sales for the corresponding State. Zu diesem Szenario kann es kommen, wenn die Spaltengruppierung, wie in der folgenden Abbildung gezeigt, mit keinem aggregierten Measure verknüpft ist:This scenario normally occurs when the column grouping is unrelated to some aggregate measure, as shown here:

„State“, „City Population“ und „Sales“ in 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.Let's say you define the new Sales table as the combination of all States here, and we make it visible in the Fields list. Dasselbe Visual würde State (in der neuen Tabelle), die Gesamtbevölkerung für Population und den Gesamtumsatz für Sales anzeigen:The same visual would display State (on the new table), the total Population, and total Sales:

Visual mit „State“, „Population“ und „Sales“ in Power BI Desktop

Sie sehen, dass TX (inklusive Daten für Sales, jedoch ohne Daten für Population) und New York (inklusive Daten für Population, jedoch ohne Daten für Sales) enthalten wären.As you can see, TX—with Sales data but unknown Population data—and New York—with known Population data but no Sales data—would be included. Diese Umgehung ist nicht ideal und führt zu vielen Problemen.This workaround isn't optimal, and it has many issues. Für Beziehungen mit m:n-Kardinalität werden die daraus resultierenden Probleme wie im folgenden Abschnitt beschrieben behoben.For relationships with a many-many cardinality, the resulting issues are addressed, as described in the next section.

Verwenden von Beziehungen mit m:n-Kardinalität anstelle einer ProblemumgehungUse a relationship with a many-many cardinality instead of the workaround

Mit der Power BI Desktop-Version vom Juli 2018 können Sie Tabellen direkt miteinander verknüpfen, ohne auf die oben beschriebene Problemumgehung zurückgreifen zu müssen.With the July 2018 version of Power BI Desktop, you can directly relate tables, such as the ones we described earlier, without having to resort to similar workarounds. Die Kardinalität einer Beziehung kann nun auf m:n festgelegt werden.It's now possible to set the relationship cardinality to many-to-many. Diese Einstellung gibt an, dass keine der Tabellen eindeutige Werte enthält.This setting indicates that neither table contains unique values. Dennoch können Sie für diese Beziehungen weiterhin steuern, welche Tabelle die andere Tabelle filtern soll.For such relationships, you may still control which table filters the other table. Alternativ können Sie mit einer bidirektionalen Filterung auch festlegen, dass sich die Tabellen gegenseitig filtern sollen.Or you can apply bidirectional filtering, where each table filters the other.

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 Power BI Desktop, the cardinality defaults to many-to-many when it determines neither table contains unique values for the relationship columns. 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.In such cases, a warning message confirms you want to set a relationship, and the change isn't the unintended effect of a data issue.

Wenn Sie z. B. eine direkte Beziehung zwischen „CityData“ und „Sales“ erstellen (mit Filterrichtung von „CityData“ zu „Sales“), zeigt Power BI Desktop das Dialogfeld Beziehung bearbeiten an:For example, when you create a relationship directly between CityData and Sales—where filters should flow from CityData to Sales—Power BI Desktop displays the Edit relationship dialog box:

Dialogfeld „Beziehung bearbeiten“ in Power BI Desktop

Die resultierende Beziehungsansicht würde dann die direkte m:n-Beziehung zwischen den beiden Tabellen darstellen.The resulting Relationship view would then display the direct, many-to-many relationship between the two tables. 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.The tables' appearance in the Fields list, and their later behavior when the visuals are created, are similar to when we applied the workaround. In der Problemumgehung wurde die zusätzliche Tabelle mit den eindeutigen Daten für „State“ nicht sichtbar gemacht.In the workaround, the extra table that displays the distinct State data isn't made visible. Wie oben bereits erwähnt, wird ein Visual mit den Spalten State, Population und Sales folgendermaßen angezeigt:As described earlier, a visual that shows State, Population, and Sales data would be displayed:

Tabellen „State“, „Population“ und „Sales“ in Power BI Desktop

Zwischen Beziehungen mit einer m:n-Kardinalität und den geläufigeren n:1-Beziehungen bestehen folgende wesentliche Unterschiede:The major differences between relationships with a many-many cardinality and the more typical Many-1 relationships are as follows:

  • Die angezeigten Werte enthalten keine leere Zeile, die nicht übereinstimmende Zeilen in der anderen Tabelle abdeckt.The values shown don't include a blank row that accounts for mismatched rows in the other table. Die Werte decken ebenfalls keine Zeilen ab, bei denen die Spalte, die in der anderen Tabelle der Beziehung verwendet wurde, den Wert NULL aufweist.Also, the values don't account for rows where the column used in the relationship in the other table is null.

  • Die Funktion RELATED() kann nicht verwendet werden, da mehr als eine Zeile verknüpft sein könnte.You can't use the RELATED() function, because more than one row could be related.

  • 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.Using the ALL() function on a table doesn't remove filters that are applied to other, related tables by a many-to-many relationship. Im vorherigen Beispiel würde ein Measure, das wie hier definiert wurde, keine Filter für Spalten in der verknüpften Tabelle „CityData“ entfernen:In the preceding example, a measure that's defined as shown here wouldn't remove filters on columns in the related CityData table:

    Beispiel für ein Skript

    Ein Visual mit Daten für State, Sales und Sales total würde folgendermaßen angezeigt werden:A visual showing State, Sales, and Sales total data would result in this graphic:

    Tabellenvisual

Stellen Sie aufgrund dieser Unterschiede sicher, dass die Berechnungen, die ALL(<Table>) verwenden (wie z. B. % von Gesamtsumme), die gewünschten Ergebnisse zurückgeben.With the preceding differences in mind, make sure the calculations that use ALL(<Table>), such as % of grand total, are returning the intended results.

Einschränkungen und ÜberlegungenLimitations and considerations

Bei diesem Release für Beziehungen mit einer m:n-Kardinalität und zusammengesetzte Modelle gibt es einige Einschränkungen.There are a few limitations for this release of relationships with a many-many cardinality and composite models.

Die folgenden (mehrdimensionalen) Live Connect-Quellen können nicht mit zusammengesetzten Modellen verwendet werden:The following Live Connect (multidimensional) sources can't be used with composite models:

  • SAP HANASAP HANA
  • SAP Business WarehouseSAP Business Warehouse
  • SQL Server Analysis ServicesSQL Server Analysis Services
  • Power BI-DatasetsPower BI datasets
  • Azure Analysis ServicesAzure 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.When you connect to these multidimensional sources by using DirectQuery, you can't connect to another DirectQuery source or combine it with imported data.

Die bestehenden Einschränkungen für die Verwendung von DirectQuery gelten nach wie vor, wenn Sie Beziehungen mit einer m:n-Kardinalität verwenden.The existing limitations of using DirectQuery still apply when you use relationships with a many-many cardinality. Viele Einschränkungen gelten jetzt abhängig vom Speichermodus der Tabelle für eine einzelne Tabelle.Many limitations are now per table, depending upon the storage mode of the table. 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.For example, a calculated column on an imported table can refer to other tables, but a calculated column on a DirectQuery table can still refer only to columns on the same table. Es gelten weitere Einschränkungen für das ganze Modell, wenn darin enthaltene Tabellen den Modus „DirectQuery“ aufweisen.Other limitations apply to the whole model if any tables within the model are DirectQuery. Die Funktionen „QuickInsights“ und „Q&A“ sind nicht für Modelle verfügbar, wenn darin enthaltene Tabellen den Speichermodus „DirectQuery“ aufweisen.For example, the QuickInsights and Q&A features are unavailable on a model if any table within it has a storage mode of DirectQuery.

Nächste SchritteNext steps

Weitere Informationen zu zusammengesetzten Modellen und DirectQuery finden Sie in den folgenden Artikeln:For more information about composite models and DirectQuery, see the following articles: