Leitfaden zu 1:1-BeziehungenOne-to-one relationship guidance

Dieser Artikel ist an Modellierer von Daten gerichtet, die mit Power BI Desktop arbeiten.This article targets you as a data modeler working with Power BI Desktop. Er bietet einen Leitfaden für die Arbeit mit 1:1-Modellbeziehungen.It provides you with guidance on working with one-to-one model relationships. Eine 1:1-Beziehung kann erstellt werden, wenn beide Tabellen jeweils eine Spalte mit gemeinsamen und eindeutigen Werten enthalten.A one-to-one relationship can be created when both tables each contain a column of common and unique values.

Hinweis

Dieser Artikel enthält jedoch keine Einführung zu Modellbeziehungen.An introduction to model relationships is not covered in this article. 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.If you're not completely familiar with relationships, their properties or how to configure them, we recommend that you first read the Model relationships in Power BI Desktop article.

Außerdem sollten Sie mit dem Sternschemadesign gut vertraut sein.It's also important that you have an understanding of star schema design. Weitere Informationen finden Sie im Artikel Informationen zum Sternschema und der Wichtigkeit für Power BI.For more information, see Understand star schema and the importance for Power BI.

Es gibt zwei Szenarien, die 1:1-Beziehungen umfassen:There are two scenarios that involve one-to-one relationships:

  • Degenerierte Dimensionen: Sie können eine degenerierte Dimension aus einer Faktentabelle ableiten.Degenerate dimensions: You can derive a degenerate dimension from a fact-type table.

  • Tabellenübergreifende Zeilendaten: Eine einzelne Geschäftsentität oder ein einzelnes Objekt wird in Form von zwei (oder mehr) Modelltabellen geladen, möglicherweise weil die zugehörigen Daten aus verschiedenen Datenspeichern stammen.Row data spans across tables: A single business entity or subject is loaded as two (or more) model tables, possibly because their data is sourced from different data stores. Dieses Szenario kann bei Dimensionstabellen häufig vorkommen.This scenario can be common for dimension-type tables. Beispielsweise können die Details zum Hauptprodukt in einem operativen Vertriebssystem gespeichert werden, während ergänzende Produktdetails in einer anderen Quelle abgelegt sind.For example, master product details are stored in an operational sales system, and supplementary product details are stored in a different source.

    Es ist jedoch unüblich, zwei Faktentabellen mit einer 1:1-Beziehung zu verknüpfen.It's unusual, however, that you'd relate two fact-type tables with a one-to-one relationship. Das liegt daran, dass beide Faktentabellen dieselbe Dimensionalität und Granularität aufweisen müssten.It's because both fact-type tables would need to have the same dimensionality and granularity. Außerdem würde jede Faktentabelle eindeutige Spalten benötigen, damit die Modellbeziehung erstellt werden kann.Also, each fact-type table would need unique columns to allow the model relationship to be created.

Degenerierte DimensionenDegenerate dimensions

Wenn Spalten aus einer Faktentabelle zum Filtern oder Gruppieren verwendet werden, können Sie erwägen, sie in einer separaten Tabelle zur Verfügung zu stellen.When columns from a fact-type table are used for filtering or grouping, you can consider making them available in a separate table. Auf diese Weise trennen Sie die zum Filtern oder Gruppieren verwendeten Spalten von denjenigen, die zum Zusammenfassen von Faktenzeilen verwendet werden.This way, you separate columns used for filter or grouping, from those columns used to summarize fact rows. Durch diese Trennung wird Folgendes erreicht:This separation can:

  • Verringern des SpeicherplatzesReduce storage space
  • Vereinfachen der ModellberechnungenSimplify model calculations
  • Verbessern der AbfrageleistungContribute to improved query performance
  • Höhere Benutzerfreundlichkeit im Bereich Felder für Ihre BerichtsautorenDeliver a more intuitive Fields pane experience to your report authors

Betrachten wir eine Quelltabelle, in der Details zu Verkaufsaufträgen in zwei Spalten gespeichert werden.Consider a source sales table that stores sales order details in two columns.

Tabellenzeilen für eine Vertriebstabelle

In der Spalte OrderNumber wird die Auftragsnummer gespeichert, die Spalte OrderLineNumber enthält eine Reihe von Auftragspositionen.The OrderNumber column stores the order number, and the OrderLineNumber column stores a sequence of lines within the order.

Beachten Sie im folgenden Modelldiagramm, dass die Spalten für Auftragsnummern und Auftragspositionsnummern nicht in die Tabelle Sales geladen wurden.In the following model diagram, notice that the order number and order line number columns haven't been loaded to the Sales table. Stattdessen wurden ihre Werte verwendet, um eine Ersatzschlüssel-Spalte namens SalesOrderLineID zu erstellen.Instead, their values were used to create a surrogate key column named SalesOrderLineID. (Der Schlüsselwert wird berechnet, indem die Auftragsnummer mit 1000 multipliziert und anschließend die Auftragspositionsnummer addiert wird.)(The key value is calculated by multiplying the order number by 1000, and then adding the order line number.)

Ein Modellschaubild, das zwei Tabellen zeigt. „Sales“ und „Sales Order“.

Die Tabelle Sales Order bietet Berichtsautoren in drei Spalten zahlreiche Möglichkeiten: Sales Order, Sales Order Line und Line Number.The Sales Order table provides a rich experience for report authors with three columns: Sales Order, Sales Order Line, and Line Number. Dies schließt auch eine Hierarchie ein.It also includes a hierarchy. Diese Tabellenressourcen unterstützen Berichtdesigns, die eine Filterung, Gruppierung oder die Möglichkeit zum Drilldown für Aufträge und Auftragspositionen bereitstellen müssen.These table resources support report designs that need to filter, group by, or drill down through orders and order lines.

Da die Tabelle Sales Order aus den Verkaufsdaten abgeleitet wird, sollte in jeder Tabelle dieselbe Anzahl von Zeilen vorhanden sein.As the Sales Order table is derived from the sales data, there should be exactly the same number of rows in each table. Außerdem sollte es übereinstimmende Werte zwischen jeder SalesOrderLineID-Spalte geben.Further, there should be matching values between each SalesOrderLineID column.

Tabellenübergreifende ZeilendatenRow data spans across tables

Betrachten wir ein Beispiel mit zwei Dimensionstabellen, die über eine 1:1-Beziehung verknüpft sind: Product und Product Category.Consider an example involving two one-to-one related dimension-type tables: Product, and Product Category. Jede Tabelle repräsentiert importierte Daten und umfasst eine Spalte SKU (Stock-Keeping Unit, Lagermengeneinheit), die eindeutige Werte enthält.Each table represents imported data and has a SKU (Stock-Keeping Unit) column containing unique values.

Nachfolgend wird ein partielles Modelldiagramm der beiden Tabellen gezeigt.Here's a partial model diagram of the two tables.

Ein Modelldiagramm mit zwei Tabellen.

Die erste Tabelle heißt Product und enthält drei Spalten: Color, Product und SKU.The first table is named Product, and it contains three columns: Color, Product, and SKU. Die zweite Tabelle heißt Product Category und enthält zwei Spalten: Category und SKU.The second table is named Product Category, and it contains two columns: Category, and SKU. Die zwei SKU-Spalten sind über eine 1:1-Beziehung verknüpft.A one-to-one relationship relates the two SKU columns. Die Beziehung wird in beide Richtungen gefiltert – dies ist bei 1:1-Beziehungen immer der Fall.The relationship filters in both directions, which is always the case for one-to-one relationships.

Damit die Funktionsweise der Weitergabe der Beziehungsfilter besser beschrieben werden kann, wurde das Modellschaubild so angepasst, dass die Tabellenzeilen angezeigt werden.To help describe how the relationship filter propagation works, the model diagram has been modified to reveal the table rows. Alle Beispiele in diesem Artikel basieren auf diesen Daten.All examples in this article are based on this data.

Hinweis

Im Modellschaubild in Power BI Desktop können Tabellenzeilen nicht angezeigt werden.It's not possible to display table rows in the Power BI Desktop model diagram. In diesem Artikel wurde das nur getan, um die die Beispiele besser verständlich zu machen.It's done in this article to support the discussion with clear examples.

Im Modellschaubild werden nun die Tabellenzeilen angezeigt.

In der folgenden Aufzählung werden die Details zu den Zeilen der zwei Tabellen erläutert:The row details for the two tables are described in the following bulleted list:

  • Die Tabelle Product enthält drei Zeilen:The Product table has three rows:
    • SKU: CL-01, Product: T-shirt, Color: GreenSKU CL-01, Product T-shirt, Color Green
    • SKU: CL-02, Product: Jeans, Color: BlueSKU CL-02, Product Jeans, Color Blue
    • SKU: AC-01, Product: Hat, Color: BlueSKU AC-01, Product Hat, Color Blue
  • Die Tabelle Product Category umfasst zwei Zeilen:The Product Category table has two rows:
    • SKU: CL-01, Category: ClothingSKU CL-01, Category Clothing
    • SKU: AC-01, Category: AccessoriesSKU AC-01, Category Accessories

Beachten Sie, dass die Tabelle Product Category keine Zeile für die Produkt-SKU CL-02 enthält.Notice that the Product Category table doesn't include a row for the product SKU CL-02. Wir werden die Konsequenzen dieser fehlenden Zeile später in diesem Artikel diskutieren.We'll discuss the consequences of this missing row later in this article.

Im Bereich Fields finden Berichtsautoren produktbezogene Felder in zwei Tabellen: Product und Product Category.In the Fields pane, report authors will find product-related fields in two tables: Product and Product Category.

Der Bereich „Fields“ zeigt beide Tabellen erweitert an, und die Spalten werden als Felder aufgelistet, mit „Product“ und „Product Category“ als Legende.

Schauen wir uns an, was passiert, wenn Felder aus beiden Tabellen zu einem Tabellenvisual hinzugefügt werden.Let's see what happens when fields from both tables are added to a table visual. In diesem Beispiel ist die Tabelle Product die Quelle für die SKU-Spalte.In this example, the SKU column is sourced from the Product table.

Ein Tabellenvisual mit vier Spalten: „SKU“, „Product“, „Color“ und „Category“.

Beachten Sie, dass der Category-Wert für die Produkt-SKU CL-02 LEER ist.Notice that the Category value for product SKU CL-02 is BLANK. Dies liegt daran, dass für dieses Produkt in der Tabelle Product Category keine Zeile vorhanden ist.It's because there's no row in the Product Category table for this product.

EmpfehlungenRecommendations

Es wird empfohlen, das Erstellen von 1:1-Modellbeziehungen nach Möglichkeit zu vermeiden, wenn sich Zeilendaten über Modelltabellen erstrecken.When possible, we recommend you avoid creating one-to-one model relationships when row data spans across model tables. Die Gründe für diese Empfehlung sind folgende:It's because this design can:

  • Dieses Design kann den Bereich Fields unübersichtlich machen, weil mehr Tabellen als nötig aufgeführt werden.Contribute to Fields pane clutter, listing more tables than necessary
  • Für die Berichtsautoren ist es bei diesem Design schwieriger, nach verwandten Feldern zu suchen, da diese über mehrere Tabellen verteilt sind.Make it difficult for report authors to find related fields, because they're distributed across multiple tables
  • Das Design schränkt die Möglichkeit zum Erstellen von Hierarchien ein, weil die Ebenen auf Spalten aus derselben Tabelle basieren müssen.Limit the ability to create hierarchies, as their levels must be based on columns from the same table
  • Dieses Design kann zu unerwarteten Ergebnissen führen, wenn die Zeilen zwischen den Tabellen nicht vollständig übereinstimmen. Produce unexpected results when there isn't a complete match of rows between the tables

Bestimmte Empfehlungen unterscheiden sich in Abhängigkeit davon, ob es sich um eine quellgruppeninterne oder quellgruppenübergreifende 1:1-Beziehung handelt.Specific recommendations differ depending on whether the one-to-one relationship is intra source group or cross source group. Weitere Informationen zur Beziehungsauswertung finden Sie unter Modellbeziehungen in Power BI Desktop (Beziehungsauswertung).For more information about relationship evaluation, see Model relationships in Power BI Desktop (Relationship evaluation).

Quellgruppeninterne 1:1-BeziehungIntra source group one-to-one relationship

Wenn zwischen Tabellen eine quellgruppeninterne 1:1-Beziehung vorliegt, wird eine Konsolidierung der Daten in einer einzigen Modelltabelle empfohlen.When a one-to-one intra source group relationship exists between tables, we recommend consolidating the data into a single model table. Dies wird durch das Zusammenführen der Power Query-Abfragen erreicht.It's done by merging the Power Query queries.

Die folgenden Schritte zeigen eine Methodik zum Konsolidieren und Modellieren der Daten in einer 1:1-Beziehung:The following steps present a methodology to consolidate and model the one-to-one related data:

  1. Zusammenführen der Abfragen: Achten Sie beim Kombinieren der beiden Abfragen auf die Vollständigkeit der Daten in jeder Abfrage.Merge queries: When combining the two queries, give consideration to the completeness of data in each query. Wenn eine Abfrage einen vollständigen Satz von Zeilen enthält (beispielsweise eine Masterliste), führen Sie die andere Abfrage mit ihr zusammen.If one query contains a complete set of rows (like a master list), merge the other query with it. Konfigurieren Sie die Zusammenführungstransformation so, dass sie eine linke äußere Verknüpfung verwendet (die standardmäßig Verknüpfung).Configure the merge transformation to use a left outer join, which is the default join type. Dieser Verknüpfungstyp stellt sicher, dass alle Zeilen der ersten Abfrage beibehalten und mit allen übereinstimmenden Zeilen der zweiten Abfrage ergänzt werden.This join type ensures you'll keep all rows of the first query, and supplement them with any matching rows of the second query. Erweitern Sie alle erforderlichen Spalten der zweiten Abfrage in die erste Abfrage.Expand all required columns of the second query into the first query.

  2. Deaktivieren des Ladevorgangs für Abfragen: Stellen Sie sicher, dass Sie für die zweite Abfrage den Ladevorgang für Abfragen deaktivieren.Disable query load: Be sure to disable the load of the second query. Auf diese Weise werden die Ergebnisse nicht als Modelltabelle geladen.This way, it won't load its result as a model table. Diese Konfiguration verringert die Speichergröße des Datenmodells und trägt zur Übersichtlichkeit des Bereichs Fields bei.This configuration reduces the data model storage size, and helps to unclutter the Fields pane.

    In unserem Beispiel wird den Berichtsautoren im Bereich Fields jetzt eine einzelne Tabelle namens Product angezeigt.In our example, report authors now find a single table named Product in the Fields pane. Diese enthält alle produktbezogenen Felder.It contains all product-related fields.

    Der Bereich „Fields“ zeigt beide Tabellen erweitert an, und die Spalten werden als Felder aufgelistet, mit „Product“ als Legende.

  3. Ersetzen fehlender Werte: Wenn die zweite Abfrage nicht übereinstimmende Zeilen aufweist, werden in den neu eingeführten Spalten NULL-Werte angezeigt.Replace missing values: If the second query has unmatched rows, NULLs will appear in the columns introduced from it. Erwägen Sie gegebenenfalls, die NULL-Werte durch einen symbolischen Wert zu ersetzen.When appropriate, consider replacing NULLs with a token value. Das Ersetzen fehlender Werte ist besonders wichtig, wenn Berichtsautoren nach den Spaltenwerten filtern oder diese gruppieren, weil dies zu LEEREN Werten in Berichtsvisuals führen könnte.Replacing missing values is especially important when report authors filter or group by the column values, as BLANKs could appear in report visuals.

    Beachten Sie, dass die Kategorie für die Produkt-SKU CL-02 im folgenden Tabellenvisual jetzt [Undefined] lautet.In the following table visual, notice that the category for product SKU CL-02 now reads [Undefined]. In der Abfrage wurden NULL-Kategorien durch diesen symbolischen Textwert ersetzt.In the query, null categories were replaced with this token text value.

    Ein Tabellenvisual mit vier Spalten: „SKU“, „Product“, „Color“ und „Category“.

  4. Erstellen von Hierarchien: Wenn Beziehungen zwischen den Spalten der neu konsolidierten Tabelle vorliegen, erwägen Sie das Erstellen von Hierarchien.Create hierarchies: If relationships exist between the columns of the now-consolidated table, consider creating hierarchies. Auf diese Weise können Berichtsautoren Möglichkeiten für Drilldowns in Berichtsvisuals schnell erkennen.This way, report authors will quickly identify opportunities for report visual drilling.

    In unserem Beispiel können Autoren jetzt eine Hierarchie mit zwei Ebenen nutzen: Category und Product.In our example, report authors now can use a hierarchy that has two levels: Category and Product.

    Der Bereich „Fields“ zeigt beide Tabellen erweitert an, und die Spalten werden als Felder aufgelistet, mit „Products“ als Legende.

Auch wenn Ihnen die Verwendung getrennter Tabellen zum Organisieren Ihrer Felder gefällt, empfehlen wir dennoch die Konsolidierung in einer einzigen Tabelle.If you like how separate tables help organize your fields, we still recommend consolidating into a single table. Sie können Ihre Felder weiterhin organisieren, verwenden stattdessen aber Anzeigeordner.You can still organize your fields, but by using display folders instead.

In unserem Beispiel steht für Berichtsautoren das Feld Category innerhalb des Anzeigeordners Marketing zur Verfügung.In our example, report authors can find the Category field within the Marketing display folder.

Der Bereich „Fields“ zeigt das Feld „Category“ innerhalb eines Ordners namens „Marketing“ an.

Sollten Sie sich dennoch entscheiden, in Ihrem Modell quellgruppeninterne 1:1-Beziehungen zu definieren, stellen Sie nach Möglichkeit sicher, dass übereinstimmende Zeilen in den Bezugstabellen vorhanden sind.Should you still decide to define one-to-one intra source group relationships in your model, when possible, ensure there are matching rows in the related tables. Wenn eine quellgruppeninterne 1:1-Beziehung als reguläre Beziehung ausgewertet wird, können Datenintegritätsprobleme dazu führen, dass Ihre Berichtsvisuals als LEER angezeigt werden.As a one-to-one intra source group relationship is evaluated as a regular relationship, data integrity issues could surface in your report visuals as BLANKs. (Ein Beispiel für eine LEERE Gruppierung finden Sie im ersten gezeigten Berichtsvisual in diesem Artikel.)(You can see an example of a BLANK grouping in the first table visual presented in this article.)

Quellgruppenübergreifende 1:1-BeziehungCross source group one-to-one relationship

Wenn zwischen Tabellen eine quellgruppenübergreifende 1:1-Beziehung vorliegt, gibt es kein alternatives Modelldesign, es sei denn, Sie führen vorab eine Konsolidierung der Daten in Ihren Datenquellen durch.When a one-to-one cross source group relationship exists between tables, there's no alternative model design—unless you pre-consolidate the data in your data sources. Power BI wertet die 1:1-Modellbeziehung als beschränkte Beziehung aus.Power BI will evaluate the one-to-one model relationship as a limited relationship. Achten Sie deshalb darauf, dass es übereinstimmende Zeilen in den Bezugstabellen gibt, da nicht übereinstimmende Zeilen aus den Abfrageergebnissen entfernt werden.Therefore, take care to ensure there are matching rows in the related tables, as unmatched rows will be eliminated from query results.

Im Folgenden wird untersucht, was geschieht, wenn Felder aus beiden Tabellen zu einem Tabellenvisual hinzugefügt werden und eine beschränkte Beziehung zwischen den Tabellen vorliegt.Let's see what happens when fields from both tables are added to a table visual, and a limited relationship exists between the tables.

Ein Tabellenvisual mit vier Spalten: „SKU“, „Product“, „Color“ und „Category“.

Die Tabelle zeigt nur zwei Zeilen an.The table displays two rows only. Die Produkt-SKU CL-02 fehlt, weil keine übereinstimmende Zeile in der Tabelle Product Category vorhanden ist.Product SKU CL-02 is missing because there's no matching row in the Product Category table.

Nächste SchritteNext steps

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