Modellieren von Beziehungen in Power BI DesktopModel relationships in Power BI Desktop

Dieser Artikel ist an Modellierer von Import-Daten gerichtet, die mit Power BI Desktop arbeiten.This article targets Import data modelers working with Power BI Desktop. Es geht um ein wichtiges Thema beim Entwurf von Modellen, das von essenzieller Bedeutung für die Bereitstellung intuitiver, präziser und optimaler Modelle ist.It's an important model design topic that's essential to delivering intuitive, accurate, and optimal models.

Eine ausführlichere Erläuterung zum optimalen Modellentwurf, einschließlich Tabellenrollen und Beziehungen, finden Sie im Artikel Informationen zum Sternschema und der Wichtigkeit für Power BI.For a deeper discussion on optimal model design, including table roles and relationships, see the Understand star schema and the importance for Power BI article.

Zweck von BeziehungenRelationship purpose

Einfach gesagt: Power BI-Beziehungen geben Filter, die auf die Spalten von Modelltabellen angewendet wurden, an andere Modelltabellen weiter.Put simply, Power BI relationships propagate filters applied on the columns of model tables to other model tables. Filter werden so lange weitergegeben, wie ein Beziehungspfad verfolgt werden kann, woraus die Weitergabe an mehrere Tabellen resultieren kann.Filters will propagate so long as there's a relationship path to follow, which can involve propagation to multiple tables.

Beziehungspfade sind deterministisch, d. h., Filter werden immer auf die gleiche Weise und ohne zufällige Variation weitergegeben.Relationship paths are deterministic, meaning that filters are always propagated in the same way and without random variation. Beziehungen können jedoch deaktiviert werden, oder ihr Filterkontext wird durch Modellberechnungen geändert, die bestimmte DAX-Funktionen verwenden.Relationships can, however, be disabled, or have filter context modified by model calculations that use particular DAX functions. Weitere Informationen finden Sie weiter unten in diesem Artikel im Thema Relevante DAX-Funktionen.For more information, see the Relevant DAX functions topic later in this article.

Wichtig

Es ist wichtig zu verstehen, dass Modellbeziehungen keine Datenintegrität erzwingen.It's important to understand that model relationships do not enforce data integrity. Weitere Informationen finden Sie weiter unten in diesem Artikel im Thema Beziehungsauswertung.For more information, see the Relationship evaluation topic later in this article. In diesem Thema wird erläutert, wie sich Modellbeziehungen verhalten, wenn Integritätsprobleme bei Ihren Daten auftreten.This topics explains how model relationships behave when there are data integrity issues with your data.

Betrachten wir anhand eines animierten Beispiels, wie Beziehungen Filter weitergeben.Let's see how relationships propagate filters with an animated example.

Animiertes Beispiel der Weitergabe von Filtern durch Beziehungen

In diesem Beispiel besteht das Modell aus vier Tabellen: Category, Product, Year und Sales.In this example, the model consists of four tables: Category, Product, Year, and Sales. Die Tabelle Category bezieht sich auf die Tabelle Product und die Tabelle Product auf die Tabelle Sales.The Category table relates to the Product table, and the Product table relates to the Sales table. Die Tabelle Year bezieht sich auch auf die Tabelle Sales.The Year table also relates to the Sales table. Alle Beziehungen sind 1:n-Beziehungen (Näheres hierzu erfahren Sie später in diesem Artikel).All relationships are one-to-many (the details of which are described later in this article).

Eine – möglicherweise von einem Power BI-Kartenvisual generierte – Abfrage ruft die Gesamtverkaufsmenge für Verkaufsaufträge ab, die für die einzelne Kategorie Cat-A und für das einzelne Jahr CY2018 eingegangen sind.A query—possibly generated by a Power BI card visual—requests the total sales quantity for sales orders made for a single category, Cat-A, and for a single year, CY2018. Aus diesem Grund sehen Sie, dass Filter auf die Tabellen Category und Year angewendet werden.It's why you can see filters applied on the Category and Year tables. Der Filter für die Tabelle Category wird an die Tabelle Product weitergegeben, um zwei Produkte der Kategorie Cat-A zu isolieren.The filter on the Category table propagates to the Product table to isolate two products that are assigned to the category Cat-A. Anschließend werden die Filter der Tabelle Product an die Tabelle Sales weitergegeben, um zwei Verkaufszeilen für diese Produkte zu isolieren.Then the Product table filters propagate to the Sales table to isolate just two sales rows for these products. Diese zwei Verkaufszeilen stellen die Verkäufe von Produkten der Kategorie Cat-A dar.These two sales rows represent the sales of products assigned to category Cat-A. Die kombinierte Menge beträgt 14 Einheiten.Their combined quantity is 14 units. Gleichzeitig wird der Filter der Tabelle Year weitergegeben, um die Tabelle Sales weiter zu filtern. Daraus resultiert nur eine Verkaufszeile für Produkte, die der Kategorie Cat-A zugewiesen sind und im Jahr CY2018 bestellt wurden.At the same time, the Year table filter propagates to further filter the Sales table, resulting in just the one sales row that is for products assigned to category Cat-A and that was ordered in year CY2018. Der von der Abfrage zurückgegebene Mengenwert beträgt 11 Einheiten.The quantity value returned by the query is 11 units. Beachten Sie Folgendes: Wenn mehrere Filter auf eine Tabelle angewendet werden (wie z. B. auf die Tabelle Sales in diesem Beispiel), ist es immer eine AND-Operation, die erfordert, dass alle Bedingungen erfüllt sind.Note that when multiple filters are applied to a table (like the Sales table in this example), it's always an AND operation, requiring that all conditions must be true.

Getrennte TabellenDisconnected tables

Es ist ungewöhnlich, dass eine Modelltabelle nicht mit einer anderen Modelltabelle verknüpft ist.It's unusual that a model table isn't related to another model table. Eine solche Tabelle in einem gültigen Modellentwurf kann als getrennte Tabelle bezeichnet werden.Such a table in a valid model design can be described as a disconnected table. Eine getrennte Tabelle ist nicht für die Weitergabe von Filtern an andere Modelltabellen vorgesehen.A disconnected table isn't intended to propagate filters to other model tables. Stattdessen wird sie verwendet, um „Benutzereingaben“ (möglicherweise mit einem Slicervisual) zu akzeptieren, sodass der Eingabewert auf sinnvolle Weise für Modellberechnungen verwendet werden kann.Instead, it's used to accept "user input" (perhaps with a slicer visual), allowing model calculations to use the input value in a meaningful way. Stellen Sie sich beispielsweise eine getrennte Tabelle vor, in die ein Bereich von Währungskurswerten geladen wird.For example, consider a disconnected table that is loaded with a range of currency exchange rate values. Solange ein Filter angewendet wird, um nach einem einzelnen Kurswert zu filtern, kann der Wert von einem Measureausdruck verwendet werden, um Verkaufswerte zu konvertieren.As long as a filter is applied to filter by a single rate value, the value can be used by a measure expression to convert sales values.

Der What-if-Parameter von Power BI Desktop ist ein Feature, das eine getrennte Tabelle erstellt.The Power BI Desktop what-if parameter is a feature that creates a disconnected table. Weitere Informationen finden Sie im Artikel Erstellen und Verwenden eines Was-wäre-wenn-Parameters zum Visualisieren von Variablen in Power BI Desktop.For more information, see the Create and use a What if parameter to visualize variables in Power BI Desktop article.

BeziehungseigenschaftenRelationship properties

In einer Modellbeziehung ist eine Spalte in einer Tabelle mit einer Spalte in einer anderen Tabelle verknüpft.A model relationship relates one column in a table to one column in a different table. (Auf einen speziellen Fall trifft diese Anforderung nicht zu, und zwar nur auf mehrspaltige Beziehungen in DirectQuery-Modellen.(There's one specialized case where this requirement isn't true, and it applies only to multi-column relationships in DirectQuery models. Weitere Informationen finden Sie im Artikel zur DAX-Funktion COMBINEVALUES.)For more information, see the COMBINEVALUES DAX function article.)

Hinweis

Es ist nicht möglich, eine Spalte mit einer anderen Spalte in derselben Tabelle zu verknüpfen.It's not possible to relate a column to a different column in the same table. Dies wird manchmal mit der Möglichkeit verwechselt, eine Fremdschlüsseleinschränkung für relationale Datenbanken zu definieren, bei der die Tabelle auf sich selbst verweist.This is sometimes confused with the ability to define a relational database foreign key constraint that is table self-referencing. Mit diesem Konzept der relationalen Datenbank können Beziehungen zwischen übergeordneten und untergeordneten Elementen gespeichert werden (Beispiel: Jeder Mitarbeiterdatensatz ist mit einem „berichtet an mich“-Mitarbeiter verknüpft).This relational database concept can be used to store parent-child relationships (for example, each employee record is related to a "reports to" employee). Das auf diesem Beziehungstyp basierende Generieren einer Modellhierarchie kann nicht durch Erstellen von Modellbeziehungen gelöst werden.Generating a model hierarchy based on this type of relationship can't be solved by creating model relationships. Informationen hierzu finden Sie im Artikel Über- und untergeordnete Funktionen.To achieve this, see the Parent and Child functions article.

KardinalitätCardinality

Jede Modellbeziehung muss mit einem Kardinalitätstyp definiert werden.Each model relationship must be defined with a cardinality type. Es gibt vier Kardinalitätstypoptionen, die die Dateneigenschaften der „von“- und „zu“-verknüpften Spalten darstellen.There are four cardinality type options, representing the data characteristics of the "from" and "to" related columns. Die „Eins“-Seite bedeutet, dass die Spalte eindeutige Werte enthält; die „Zwei“-Seite bedeutet, dass die Spalte doppelte Werte enthalten kann.The "one" side means the column contains unique values; the "two" side means the column can contain duplicate values.

Hinweis

Wenn bei einer Datenaktualisierung versucht wird, doppelte Werte in eine „Eins“-Seiten-Spalte zu laden, wird die gesamte Datenaktualisierung nicht durchgeführt.If a data refresh operation attempts to load duplicate values into a "one" side column, the entire data refresh will fail.

Die vier Optionen – und ihre Kurzschreibweisen – werden in der folgenden Aufzählung beschrieben:The four options—together with their shorthand notations—are described in the following bulleted list:

  • Eins-zu-viele (1:*)One-to-many (1:*)
  • Viele-zu-eins (*:1)Many-to-one (*:1)
  • Eins-zu-eins (1:1)One-to-one (1:1)
  • Viele-zu-viele (*:*)Many-to-many (*:*)

Wenn Sie in Power BI Desktop eine Beziehung erstellen, erkennt der Designer den Kardinalitätstyp automatisch und legt ihn fest.When you create a relationship in Power BI Desktop, the designer will automatically detect and set the cardinality type. Der Designer fragt das Modell ab, um zu ermitteln, welche Spalten eindeutige Werte enthalten.The designer queries the model to know which columns contain unique values. Bei Importmodelle verwendet der Designer interne Speicherstatistiken; bei DirectQuery-Modellen sendet er Abfragen zur Profilerstellung an die Datenquelle.For Import models, it uses internal storage statistics; for DirectQuery models it sends profiling queries to the data source. Manchmal kann er jedoch daneben liegen.Sometimes, however, it can get it wrong. Das kann passieren, wenn Tabellen noch mit Daten geladen werden müssen oder wenn Spalten, von denen Sie erwarten, dass sie doppelte Werte enthalten, derzeit eindeutige Werte enthalten.It happens because tables are yet to be loaded with data, or because columns that you expect to contain duplicate values currently contain unique values. In beiden Fällen können Sie den Kardinalitätstyp aktualisieren, sofern alle Spalten der 1-Seite eindeutige Werte enthalten (oder noch Datenzeilen in die Tabelle geladen werden müssen).In either case, you can update the cardinality type as long as any "one" side columns contain unique values (or the table is yet to be loaded with rows of data).

Die 1:n- und n:1-Kardinalitätsoptionen sind im Wesentlichen identisch und auch die gängigsten Kardinalitätstypen.The One-to-many and Many-to-one cardinality options are essentially the same, and they're also the most common cardinality types.

Beim Konfigurieren einer 1:n- oder n:1-Beziehung wählen Sie den Wert aus, der der Reihenfolge entspricht, in der Sie die Spalten verknüpft haben.When configuring a One-to-many or Many-to-one relationship, you'll choose the one that matches the order in which you related the columns. Überlegen Sie, wie Sie die Beziehung zwischen der Tabelle Product und der Tabelle Sales mithilfe der in beiden Tabellen vorhandenen Spalte ProductID konfigurieren würden.Consider how you would configure the relationship from the Product table to the Sales table by using the ProductID column found in each table. Der Kardinalitätstyp wäre 1:n, da die Spalte ProductID in der Tabelle Product eindeutige Werte enthält.The cardinality type would be One-to-many, as the ProductID column in the Product table contains unique values. Wenn Sie die Tabellen in umgekehrter Richtung verknüpfen würden – Sales zu Product – wäre die Kardinalität n:1.If you related the tables in the reverse direction, Sales to Product, then the cardinality would be Many-to-one.

Eine 1:1-Beziehung bedeutet, dass beide Spalten eindeutige Werte enthalten.A One-to-one relationship means both columns contain unique values. Dieser Kardinalitätstyp ist nicht gängig und weist aufgrund der Speicherung redundanter Daten eher auf einen suboptimalen Modellentwurf hin.This cardinality type isn't common, and it likely represents a suboptimal model design because of the storage of redundant data. Weitere Informationen zur Verwendung dieses Kardinalitätstyps finden Sie im Leitfaden zu 1:1-Beziehungen.For more information on using this cardinality type, see One-to-one relationship guidance.

Eine m:n-Beziehung bedeutet, dass beide Spalten doppelte Werte enthalten können.A Many-to-many relationship means both columns can contain duplicate values. Dieser Kardinalitätstyp wird selten verwendet.This cardinality type is infrequently used. Er ist in der Regel nützlich, wenn komplexe Modellanforderungen entworfen werden.It's typically useful when designing complex model requirements. Hinweise zur Verwendung dieses Kardinalitätstyps finden Sie unter Leitfaden zu m:n-Beziehungen.For guidance on using this cardinality type, see Many-to-many relationship guidance.

Hinweis

Der m:n-Kardinalitätstyp wird für Modelle, die für den Power BI-Berichtsserver entwickelt werden, derzeit nicht unterstützt.The Many-to-many cardinality type isn't currently supported for models developed for Power BI Report Server.

Tipp

In der Power BI Desktop-Modellansicht können Sie den Kardinalitätstyp einer Beziehung interpretieren, indem Sie sich die Indikatoren (1 oder *) auf beiden Seiten der Beziehungslinie ansehen.In Power BI Desktop model view, you can interpret a relationship's cardinality type by looking at the indicators (1 or *) on either side of the relationship line. Um zu ermitteln, welche Spalten verknüpft sind, müssen Sie die Beziehungslinie auswählen (oder den Cursor darüber bewegen), um die Spalten hervorzuheben.To determine which columns are related, you'll need to select—or hover the cursor over—the relationship line to highlight the columns.

KreuzfilterrichtungCross filter direction

Jede Modellbeziehung muss mit einer Kreuzfilterrichtung definiert werden.Each model relationship must be defined with a cross filter direction. Ihre Auswahl bestimmt die Richtung(en), in der/die Filter weitergegeben werden.Your selection determines the direction(s) that filters will propagate. Die möglichen Kreuzfilteroptionen sind vom Kardinalitätstyp abhängig.The possible cross filter options are dependent on the cardinality type.

KardinalitätstypCardinality type KreuzfilteroptionenCross filter options
1:n (oder n:1)One-to-many (or Many-to-one) EinfachSingle
BeideBoth
1:1One-to-one BeideBoth
M:nMany-to-many Einzeln (Tabelle1 zu Tabelle2)Single (Table1 to Table2)
Einzeln (Tabelle2 zu Tabelle1)Single (Table2 to Table1)
BeideBoth

Einzelne Kreuzfilterrichtung bedeutet „einzelne Richtung“ und Beide bedeutet „beide Richtungen“.Single cross filter direction means "single direction", and Both means "both directions". Eine Beziehung, die in beide Richtungen filtert, wird häufig als bidirektional beschrieben.A relationship that filters in both directions is commonly described as bi-directional.

Bei 1:n-Beziehungen verläuft die Kreuzfilterrichtung immer von der „Eins“-Seite und optional von der „Viele“-Seite (bidirektional).For One-to-many relationships, the cross filter direction is always from the "one" side, and optionally from the "many" side (bi-directional). Bei 1:1-Beziehungen verläuft die Kreuzfilterrichtung immer von beiden Tabellen.For One-to-one relationships, the cross filter direction is always from both tables. Schließlich kann bei m:n-Beziehungen die Kreuzfilterrichtung von einer der Tabellen oder von beiden verlaufen.Lastly, for the Many-to-many relationships, cross filter direction can be from either one of the tables, or from both tables. Beachten Sie: Wenn der Kardinalitätstyp eine „Eins“-Seite enthält, werden Filter immer von dieser Seite weitergegeben.Notice that when the cardinality type includes a "one" side, that filters will always propagate from that side.

Wenn die Kreuzfilterrichtung auf Beide festgelegt ist, steht eine weitere Eigenschaft zur Verfügung.When the cross filter direction is set to Both, an additional property is available. Diese kann eine bidirektionale Filterung anwenden, wenn Sicherheitsregeln auf Zeilenebene erzwungen werden.It can apply bi-directional filtering when row-level security (RLS) rules are enforced. Weitere Informationen zur Sicherheit auf Zeilenebene finden Sie im Artikel Einschränken des Datenzugriffs mit Sicherheit auf Zeilenebene (RLS) für Power BI Desktop.For more information about RLS, see the Row-level security (RLS) with Power BI Desktop article.

Die Kreuzfilterrichtung der Beziehung – einschließlich Deaktivierung der Filterweitergabe – kann auch durch eine Modellberechnung geändert werden.Modifying the relationship cross filter direction—including the disabling of filter propagation—can also be done by a model calculation. Hierzu wird die DAX-Funktion CROSSFILTER verwendet.It's achieved by using the CROSSFILTER DAX function.

Bidirektionale Beziehungen können sich negativ auf die Leistung auswirken.Bi-directional relationships can impact negatively on performance. Außerdem kann der Versuch, eine bidirektionale Beziehung zu konfigurieren, zu mehrdeutigen Filterweitergabe-Pfaden führen.Further, attempting to configure a bi-directional relationship could result in ambiguous filter propagation paths. In diesem Fall kann Power BI Desktop die Beziehungsänderung möglicherweise nicht committen, sodass Sie eine Fehlermeldung erhalten.In this case, Power BI Desktop may fail to commit the relationship change and will alert you with an error message. Manchmal kann Power BI Desktop Ihnen jedoch ermöglichen, mehrdeutige Beziehungspfade zwischen Tabellen zu definieren.Sometimes, however, Power BI Desktop may allow you to define ambiguous relationship paths between tables. Rangfolgeregeln, die sich auf die Erkennung von Mehrdeutigkeiten und Pfadauflösung auswirken, werden weiter unten in diesem Artikel im Thema Rangfolgeregeln beschrieben.Precedence rules that affect ambiguity detection and path resolution are described later in this article in the Precedence rules topic.

Sie sollten die bidirektionale Filterung nur bei Bedarf verwenden.We recommend using bi-directional filtering only as needed. Weitere Informationen finden Sie im Leitfaden zu bidirektionalen Beziehungen.For more information, see Bi-directional relationship guidance.

Tipp

In der Power BI Desktop-Modellansicht können Sie die Kreuzfilterrichtung einer Beziehung anhand der entlang der Beziehungslinie verlaufenden Pfeilspitze(n) interpretieren.In Power BI Desktop model view, you can interpret a relationship's cross filter direction by noticing the arrowhead(s) along the relationship line. Eine einzelne Pfeilspitze stellt einen in Richtung der Pfeilspitze verlaufenden Einzelrichtungsfilter dar; eine doppelte Pfeilspitze stellt eine bidirektionale Beziehung dar.A single arrowhead represents a single-direction filter in the direction of the arrowhead; a double arrowhead represents a bi-directional relationship.

Diese Beziehung aktivierenMake this relationship active

Zwischen zwei Modelltabellen kann nur ein einziger aktiver Filterweitergabe-Pfad vorhanden sein.There can only be one active filter propagation path between two model tables. Es ist jedoch möglich, zusätzliche Beziehungspfade einzuführen, obwohl alle diese Beziehungen als inaktiv konfiguriert werden müssen.However, it's possible to introduce additional relationship paths, though these relationships must all be configured as inactive. Inaktive Beziehungen können nur während der Auswertung einer Modellberechnung aktiviert werden.Inactive relationships can only be made active during the evaluation of a model calculation. Hierzu wird die DAX-Funktion USERELATIONSHIP verwendet.It is achieved by using the USERELATIONSHIP DAX function.

Weitere Informationen finden Sie unter Aktive und inaktive Beziehungen im Vergleich – Leitfaden.For more information, see Active vs inactive relationship guidance.

Tipp

In der Power BI Desktop-Modellansicht können Sie den aktiven oder inaktiven Status einer Beziehung interpretieren.In Power BI Desktop model view, you can interpret a relationship's active vs inactive status. Eine aktive Beziehung wird als durchgezogene Linie dargestellt, eine inaktive Beziehung als gestrichelte Linie.An active relationship is represented by a solid line; an inactive relationship is represented as a dashed line.

Referenzielle Integrität voraussetzenAssume referential integrity

Die Eigenschaft Referenzielle Integrität voraussetzen ist nur für 1:n- und 1:1-Beziehungen zwischen zwei DirectQuery-Speichermodustabellen verfügbar, die auf derselben Datenquelle basieren.The Assume referential integrity property is available only for One-to-many and One-to-one relationships between two DirectQuery storage mode tables that are based on the same data source. Wenn sie aktiviert ist, werden die beiden Tabellen von nativen Abfragen, die an die Datenquelle gesendet werden, mit einem INNER JOIN statt eines OUTER JOIN verknüpft.When enabled, native queries sent to the data source will join the two tables together by using an INNER JOIN rather than an OUTER JOIN. Die Abfrageleistung wird mit Aktivierung dieser Eigenschaft somit generell verbessert, obwohl dies von den Besonderheiten der Datenquelle abhängt.Generally, enabling this property improves query performance, though it does depend on the specifics of the data source.

Aktivieren Sie diese Eigenschaft immer, wenn zwischen den beiden Tabellen eine Fremdschlüsseleinschränkung für Datenbanken vorhanden ist.Always enable this property when a database foreign key constraint exists between the two tables. Wenn keine Fremdschlüsseleinschränkung vorhanden ist, können Sie die Eigenschaft dennoch aktivieren, sofern Sie sicher sind, dass die Datenintegrität gegeben ist.When a foreign key constraint doesn't exist, you can still enable the property as long as you're certain data integrity exists.

Wichtig

Sollte die Datenintegrität kompromittiert werden, eliminiert der INNER JOIN nicht übereinstimmende Zeilen zwischen den Tabellen.If data integrity should become compromised, the inner join will eliminate unmatched rows between the tables. Stellen Sie sich beispielsweise eine Modell-Sales-Tabelle mit einem ProductID-Spaltenwert vor, der in der verknüpften Product-Tabelle nicht vorhanden ist.For example, consider a model Sales table with a ProductID column value that did not exist in the related Product table. Die Filterweitergabe von der Product-Tabelle zur Sales-Tabelle eliminiert die Verkaufszeilen für unbekannte Produkte.Filter propagation from the Product table to the Sales table will eliminate sales rows for unknown products. Dies würde dazu führen, dass die Verkaufsergebnisse zu niedrig angegeben werden.This would result in an understatement of the sales results.

Weitere Informationen finden Sie im Artikel Anwenden der Einstellung „Referenzielle Integrität voraussetzen“ in Power BI Desktop.For more information, see the Assume referential integrity settings in Power BI Desktop article.

Relevante DAX-FunktionenRelevant DAX functions

Es gibt mehrere DAX-Funktionen, die für Modellbeziehungen relevant sind.There are several DAX functions that are relevant to model relationships. Jede Funktion wird in der folgenden Aufzählung kurz beschrieben:Each function is described briefly in the following bulleted list:

  • RELATED: Ruft den Wert von der „Eins“-Seite ab.RELATED: Retrieves the value from "one" side.
  • RELATEDTABLE: Ruft eine Tabelle mit Zeilen von der „Viele“-Seite ab.RELATEDTABLE: Retrieve a table of rows from "many" side.
  • USERELATIONSHIP: Erzwingt die Verwendung einer bestimmten inaktiven Modellbeziehung.USERELATIONSHIP: Forces the use of a specific inactive model relationship.
  • CROSSFILTER: Ändert die Kreuzfilterrichtung der Beziehung (in „einzeln“ oder „beide“) oder deaktiviert die Filterweitergabe (keine).CROSSFILTER: Modifies the relationship cross filter direction (to one or both), or it disables filter propagation (none).
  • COMBINEVALUES: Verbindet zwei oder mehr Textzeichenfolgen zu einer einzigen Textzeichenfolge.COMBINEVALUES: Joins two or more text strings into one text string. Zweck dieser Funktion ist die Unterstützung mehrspaltiger Beziehungen in DirectQuery-Modellen.The purpose of this function is to support multi-column relationships in DirectQuery models.
  • TREATAS: Wendet das Ergebnis eines Tabellenausdrucks als Filter auf Spalten aus einer nicht verknüpften Tabelle anTREATAS: Applies the result of a table expression as filters to columns from an unrelated table.
  • Übergeordnete und untergeordnete Funktionen: Eine Familie verwandter Funktionen, mit denen berechnete Spalten generiert werden können, um eine Über-/Unterordnungshierarchie zu etablieren.Parent and Child functions: A family of related functions that can be used to generate calculated columns to naturalize a parent-child hierarchy. Diese Spalten können dann zum Erstellen einer Hierarchie auf fester Ebene verwendet werden.These columns can then be used to create a fixed-level hierarchy.

BeziehungsauswertungRelationship evaluation

Modellbeziehungen werden aus der Perspektive der Auswertung entweder als regulär oder eingeschränkt klassifiziert.Model relationships, from an evaluation perspective, are classified as either regular or limited. Es handelt sich nicht um eine konfigurierbare Beziehungseigenschaft.It's not a configurable relationship property. Sie wird tatsächlich vom Kardinalitätstyp und der Datenquelle der beiden verknüpften Tabellen abgeleitet.It is in fact inferred from the cardinality type and the data source of the two related tables. Es ist wichtig, den Auswertungstyp zu verstehen, da eine Kompromittierung der Datenintegrität Auswirkungen auf die Leistung oder sonstige Konsequenzen haben könnte.It's important to understand the evaluation type because there may be performance implications or consequences should data integrity be compromised. Diese Auswirkungen und die Konsequenzen für die Integrität werden in diesem Thema beschrieben.These implications and integrity consequences are described in this topic.

Zuerst ist eine Modellierungstheorie erforderlich, um Beziehungsauswertungen vollständig verstehen zu können.First, some modeling theory is required to fully understand relationship evaluations.

Ein Import- oder DirectQuery-Modell bezieht sämtliche Daten entweder aus dem Vertipaq-Cache oder der Quelldatenbank.An Import or DirectQuery model sources all of its data from either the Vertipaq cache or the source database. In beiden Fällen kann Power BI bestimmen, ob die „Eins“-Seite einer Beziehung vorhanden ist.In both instances, Power BI is able to determine that a "one" side of a relationship exists.

Ein zusammengesetztes Modell kann jedoch Tabellen enthalten, die unterschiedliche Speichermodi (Import, DirectQuery oder Dual) bzw. mehrere DirectQuery-Quellen verwenden.A Composite model, however, can comprise tables using different storage modes (Import, DirectQuery or Dual), or multiple DirectQuery sources. Jede Quelle (einschließlich des Vertipaq-Caches der Importdaten) wird als Quellgruppe betrachtet.Each source, including the Vertipaq cache of Import data, is considered to be a source group. Modellbeziehungen können dann als quellgruppenintern oder quellgruppenübergreifend klassifiziert werden.Model relationships can then be classified as intra source group or inter / cross source group. Eine quellgruppeninterne Beziehung bezieht sich auf zwei Tabellen innerhalb einer Quellgruppe, während sich eine quellgruppenübergreifende Beziehung auf Tabellen aus unterschiedlichen Quellgruppen bezieht.An intra source group relationship is one that relates two tables within a source group, while a inter / cross source group relationship relates tables from different source group. Beachten Sie, dass Beziehungen in Import- oder DirectQuery-Modellen immer quellgruppenintern sind.Note that relationships in Import or DirectQuery models are always intra source group.

Wir betrachten nun ein Beispiel für ein zusammengesetztes Modell.Let's see an example of a Composite model.

Beispiel für ein zusammengesetztes Modell, das aus zwei Quellgruppen besteht

In diesem Beispiel besteht das zusammengesetzte Modell aus zwei Quellgruppen: einer Vertipaq-Quellgruppe und einer DirectQuery-Quellgruppe.In this example, the Composite model consists of two source groups: a Vertipaq source group and a DirectQuery source group. Die Vertipaq-Quellgruppe enthält drei Tabellen und die DirectQuery-Quellgruppe zwei Tabellen.The Vertipaq source group contains three tables, and the DirectQuery source group contains two tables. Eine quellgruppenübergreifende Beziehung hat den Zweck, eine Tabelle in einer Vertipaq-Quellgruppe mit einer Tabelle in einer DirectQuery-Quellgruppe zu verknüpfen.One cross source group relationship exists to relate a table in the Vertipaq source group to a table in the DirectQuery source group.

Reguläre BeziehungenRegular relationships

Eine Modellbeziehung ist regulär, wenn die Abfrage-Engine die „Eins“-Seite der Beziehung bestimmen kann.A model relationship is regular when the query engine can determine the "one" side of relationship. Sie hat die Bestätigung, dass die Spalte der „Eins“-Seite eindeutige Werte enthält.It has confirmation that the "one" side column contains unique values. Alle quellgruppeninternen 1:n-Beziehungen sind reguläre Beziehungen.All One-to-many intra source group relationships are regular relationships.

Im folgenden Beispiel gibt es zwei reguläre Beziehungen, die beide mit R gekennzeichnet sind. Zu den Beziehungen gehören die 1:n-Beziehung, die in der Vertipaq-Quellgruppe enthalten ist, und die 1:n-Beziehung, die in der DirectQuery-Quelle enthalten ist.In the following example, there are two regular relationships, both marked as R. Relationships include the One-to-many relationship contained within the Vertipaq source group, and the One-to-many relationship contained within the DirectQuery source.

Beispiel für ein aus zwei Quellgruppen bestehendes zusammengesetztes Modell mit gekennzeichneten regulären Beziehungen

Für Import-Modelle, bei denen alle Daten im Vertipaq-Cache gespeichert werden, wird zum Zeitpunkt der Datenaktualisierung für jede reguläre Beziehung eine Datenstruktur erstellt.For Import models, where all data is stored in the Vertipaq cache, a data structure is created for each regular relationship at data refresh time. Die Datenstrukturen bestehen aus indizierten Zuordnungen aller „Spalte-zu-Spalte“-Werte, und sie sollen das Verknüpfen von Tabellen zur Abfragezeit beschleunigen.The data structures consist of indexed mappings of all column-to-column values, and their purpose is to accelerate joining tables at query time.

Zur Abfragezeit ermöglichen reguläre Beziehungen eine Tabellenerweiterung.At query time, regular relationships permit table expansion to take place. Die Tabellenerweiterung führt zum Erstellen einer virtuellen Tabelle, indem die nativen Spalten der Basistabelle einbezogen und dann in verknüpfte Tabellen erweitert werden.Table expansion results in the creation of a virtual table by including the native columns of the base table and then expanding into related tables. Für Import-Tabellen erfolgt dies in der Abfrage-Engine, für DirectQuery-Tabellen in der nativen Abfrage, die an die Quelldatenbank gesendet wird (sofern die Eigenschaft Referenzielle Integrität voraussetzen nicht aktiviert ist).For Import tables, it's done in the query engine; for DirectQuery tables it is done in the native query sent to the source database (as long as the Assume referential integrity property isn't enabled). Die Abfrage-Engine bearbeitet dann die erweiterte Tabelle, wendet Filter an und führt eine Gruppierung nach den Werten in den Spalten der erweiterten Tabelle durch.The query engine then acts upon the expanded table, applying filters and grouping by the values in the expanded table columns.

Hinweis

Inaktive Beziehungen werden ebenfalls erweitert, auch wenn die Beziehung nicht von einer Berechnung verwendet wird.Inactive relationships are expanded also, even when the relationship isn't used by a calculation. Bidirektionale Beziehungen haben keine Auswirkung auf die Tabellenerweiterung.Bi-directional relationships have no impact on table expansion.

Bei 1:n-Beziehungen erfolgt die Tabellenerweiterung von der n- zur 1-Seite mithilfe der LEFT OUTER JOIN-Semantik.For One-to-many relationships, table expansion takes place from the "many" to the "one" sides by using LEFT OUTER JOIN semantics. Wenn kein übereinstimmender Wert in der „Viele“- und „Eins“-Seite vorhanden ist, wird der „Eins“-Seiten-Tabelle eine leere virtuelle Zeile hinzugefügt.When a matching value from the "many" to the "one" side doesn't exist, a blank virtual row is added to the "one" side table.

Die Tabellenerweiterung wird auch für quellgruppeninterne 1:1-Beziehungen durchgeführt, jedoch mithilfe der FULL OUTER JOIN-Semantik.Table expansion also occurs for One-to-one intra source group relationships, but by using FULL OUTER JOIN semantics. Dadurch wird ggf. sichergestellt, dass jeder Seite leere virtuelle Zeilen hinzugefügt werden.It ensures that blank virtual rows are added on either side, when necessary.

Die leeren virtuellen Zeilen sind eigentlich unbekannte Elemente.The blank virtual rows are effectively Unknown Members. Unbekannte Elemente stellen Verstöße gegen die referenzielle Integrität dar, wobei für den Wert der „Viele“-Seite kein entsprechender „Eins“-Seiten-Wert vorhanden ist.Unknown members represent referential integrity violations where the "many" side value has no corresponding "one" side value. Im Idealfall sollten diese leeren Zeilen nicht vorhanden sein, und sie können durch Bereinigung oder Reparatur der Quelldaten entfernt werden.Ideally these blanks should not exist, and they can be eliminated by cleansing or repairing the source data.

Wir betrachten nun anhand eines animierten Beispiels, wie die Tabellenerweiterung funktioniert.Let's see how table expansion works with an animated example.

Animiertes Beispiel der Tabellenerweiterung

In diesem Beispiel besteht das Modell aus drei Tabellen: Category, Product und Year.In this example, the model consists of three tables: Category, Product, and Sales. Die Tabelle Category ist mit einer 1:n-Beziehung mit der Tabelle Product verknüpft, und die Tabelle Product ist mit einer 1:n-Beziehung mit der Tabelle Sales verknüpft.The Category table relates to the Product table with a One-to-many relationship, and the Product table relates to the Sales table with a One-to-many relationship. Die Tabelle Category enthält zwei Zeilen, die Tabelle Product drei Zeilen und die Tabelle Sales fünf Zeilen.The Category table contains two rows, the Product table contains three rows, and the Sales tables contains five rows. Es gibt auf beiden Seiten aller Beziehungen übereinstimmende Werte, was bedeutet, dass keine Verletzungen der referenziellen Integrität vorliegen.There are matching values on both sides of all relationships meaning that there are no referential integrity violations. Eine erweiterte Tabelle zur Abfragezeit wird angezeigt.A query-time expanded table is revealed. Die Tabelle besteht aus den Spalten aller drei Tabellen.The table consists of the columns from all three tables. Es handelt sich tatsächlich um eine denormalisierte Perspektive der in den drei Tabellen enthaltenen Daten.It's effectively a denormalized perspective of the data contained in the three tables. Der Sales-Tabelle wird eine neue Zeile hinzugefügt, und sie verfügt über einen Produktionsbezeichnerwert (9), für den es keine Übereinstimmung in der Product-Tabelle gibt.A new row is added to the Sales table, and it has a production identifier value (9) that has no matching value in the Product table. Dies ist ein Verstoß gegen die referenzielle Integrität.It's a referential integrity violation. In der erweiterten Tabelle enthält die neue Zeile (leere) Werte für die Tabellenspalten Category und Product.In the expanded table, the new row has (Blank) values for the Category and Product table columns.

Eingeschränkte BeziehungenLimited relationships

Eine Modellbeziehung ist eingeschränkt, wenn keine garantierte „Eins“-Seite vorhanden ist.A model relationship is limited when there's no guaranteed "one" side. Dies kann aus zwei Gründen der Fall sein:It can be the case for two reasons:

  • In der Beziehung wird ein m:n-Kardinalitätstyp verwendet (auch wenn eine oder beide Spalten eindeutige Werte enthalten)The relationship uses a Many-to-many cardinality type (even if one or both columns contain unique values)
  • Die Beziehung ist quellgruppenübergreifend (was nur bei zusammengesetzten Modellen der Fall sein kann).The relationship is cross source group (which can only ever be the case for Composite models)

Im folgenden Beispiel gibt es zwei eingeschränkte Beziehungen, die beide mit L gekennzeichnet sind. Zu den beiden Beziehungen gehören die in der Vertipaq-Quellgruppe enthaltene m:n-Beziehung und die quellgruppenübergreifende 1:n-Beziehung.In the following example, there are two limited relationships, both marked as L. The two relationships include the Many-to-many relationship contained within the Vertipaq source group, and the One-to-many cross source group relationship.

Beispiel für ein aus zwei Quellgruppen bestehendes zusammengesetztes Modell mit gekennzeichneten eingeschränkten Beziehungen

Bei Import-Modellen werden nie Datenstrukturen für eingeschränkte Beziehungen erstellt.For Import models, data structures are never created for limited relationships. Dies bedeutet, dass Tabellenverknüpfungen zur Abfragezeit aufgelöst werden müssen.This means table joins must be resolved at query time.

Tabellenerweiterungen werden nie für eingeschränkte Beziehungen durchgeführt.Table expansion never occurs for limited relationships. Tabellenverknüpfungen werden mithilfe der INNER JOIN-Semantik erzielt. Aus diesem Grund werden keine leeren virtuellen Zeilen hinzugefügt, um Verletzungen der referenziellen Integrität zu kompensieren.Table joins are achieved by using INNER JOIN semantics, and for this reason, blank virtual rows are not added to compensate for referential integrity violations.

Es gibt noch weitere Einschränkungen in Bezug auf eingeschränkte Beziehungen:There are additional restrictions related to limited relationships:

  • Die Spaltenwerte der „Eins“-Seite können nicht mit der DAX-Funktion RELATED abgerufen werden.The RELATED DAX function can't be used to retrieve the "one" side column values
  • Topologieeinschränkungen beim Erzwingen von RLSEnforcing RLS has topology restrictions

Hinweis

In der Modellansicht von Power BI Desktop kann nicht immer bestimmt werden, ob eine Modellbeziehung regulär oder eingeschränkt ist.In Power BI Desktop model view, it's not always possible to determine whether a model relationship is regular or limited. Eine m:n-Beziehung ist immer eingeschränkt, genauso wie eine 1:n-Beziehung, wenn es sich um eine quellgruppenübergreifende Beziehung handelt.A Many-to-many relationship will always be limited, as is a One-to-many relationship when it's a cross source group relationship. Sie müssen die Tabellenspeichermodi und Datenquellen überprüfen, um zu ermitteln, ob es sich um eine quellgruppenübergreifende Beziehung handelt.To determine whether it's a cross source group relationship, you'll need to inspect the table storage modes and data sources to arrive at the correct determination.

RangfolgeregelnPrecedence rules

Bidirektionale Beziehungen können mehrere – und somit mehrdeutige – Filterweitergabepfade zwischen Modelltabellen mit sich bringen.Bi-directional relationships can introduce multiple—and therefore ambiguous—filter propagation paths between model tables. In der folgenden Liste sind Rangfolgeregeln aufgeführt, die Power BI für Mehrdeutigkeitserkennung und Pfadauflösung verwendet:The following list presents precedence rules that Power BI uses for ambiguity detection and path resolution:

  1. N:1- und 1:1-Beziehungen, einschließlich eingeschränkter BeziehungenMany-to-one and One-to-one relationships, including limited relationships
  2. M:n-BeziehungenMany-to-many relationships
  3. Bidirektionale Beziehungen in umgekehrter Richtung (d. h. von der „Viele“-Seite)Bi-directional relationships, in the reverse direction (that is, from the "Many" side)

LeistungspräferenzPerformance preference

In der folgenden Liste sind die Beziehungen nach ihrer Filterweitergabe-Leistung von der höchsten bis zur niedrigsten sortiert:The following list orders filter propagation performance, from fastest to slowest performance:

  1. quellgruppeninterne 1:n-BeziehungenOne-to-many intra source group relationships
  2. M:n-KardinalitätsbeziehungenMany-to-many cardinality relationships
  3. M:n-Modellbeziehungen, die mit einer Zwischentabelle erzielt werden und mindestens eine bidirektionale Beziehung beinhaltenMany-to-many model relationships achieved with an intermediary table and that involves at least one bi-directional relationship
  4. quellgruppenübergreifende BeziehungenCross source group relationships

Nächste SchritteNext steps

Weitere Informationen zu diesem Artikel finden Sie in den folgenden Ressourcen:For more information about this article, check out the following resources: