Einstellungen für „Referenzielle Integrität voraussetzen“ in Power BI DesktopAssume referential integrity settings in Power BI Desktop

Wenn Sie mithilfe von DirectQuery eine Verbindung mit einer Datenquelle herstellen, können Sie die Option Referenzielle Integrität voraussetzen verwenden, um die Ausführung effizienterer Abfragen der Datenquelle zu ermöglichen.When connecting to a data source using DirectQuery, you can use the Assume Referential Integrity selection to enable running more efficient queries against your data source. Diese Funktion beinhaltet einige Anforderungen an die zugrunde liegenden Daten und ist nur bei Verwendung von DirectQuery verfügbar.This feature has a few requirements of the underlying data, and it is only available when using DirectQuery.

Durch Festlegen von Referenzielle Integrität voraussetzen können bei Abfragen der Datenquelle INNER JOINanstelle von OUTER JOIN-Anweisungen verwendet werden. Hierdurch wird die Effizienz der Abfragen verbessert.Setting Assume referential integrity enables queries on the data source to use INNER JOIN statements rather than OUTER JOIN, which improves query efficiency.

Anforderungen für die Verwendung von „Referenzielle Integrität voraussetzen“Requirements for using Assume referential integrity

Hierbei handelt es sich um eine erweiterte Einstellung, die nur aktiviert wird, wenn mit DirectQuery eine Verbindung mit den Daten hergestellt wird.This is an advanced setting, and is only enabled when connecting to data using DirectQuery. Die folgenden Anforderungen müssen erfüllt werden, damit Referenzielle Integrität voraussetzen ordnungsgemäß funktioniert:The following requirements are necessary for Assume referential integrity to work properly:

  • Daten in der Spalte Von der Beziehung sind nie NULL oder leer.Data in the From column in the relationship is never Null or blank
  • Für jeden Wert in der Spalte Von ist ein entsprechender Wert in der Spalte Zu vorhanden.For each value in the From column, there is a corresponding value in the To column

In diesem Kontext ist die Spalte Von das n in einer 1:n-Beziehung oder die Spalte in der ersten Tabelle einer 1:1-Beziehung.In this context, the From column is the Many in a One-to-Many relationship, or it is the column in the first table in a One-to-One relationship.

Beispiel für die Verwendung von „Referenzielle Integrität voraussetzen“Example of using Assume referential integrity

Im folgenden Beispiel wird das Verhalten von Referenzielle Integrität voraussetzen bei der Verwendung in Datenverbindungen veranschaulicht.The following example demonstrates how Assume referential integrity behaves when used in data connections. Im Beispiel wird eine Verbindung mit einer Datenquelle hergestellt, die eine Tabelle Orders, eine Tabelle Products und eine Tabelle Depots enthält.The example connects to a data source that includes an Orders table, a Products table, and a Depots table.

  1. Beachten Sie in der folgenden Abbildung mit den Tabellen Orders und Products, dass die referenzielle Integrität zwischen Orders[ProductID] und Products[ProductID] vorhanden ist.In the following image that shows the Orders table and the Products table, note that referential integrity exists between Orders[ProductID] and Products[ProductID]. Die Spalte [ProductID] in der Tabelle Orders ist nie NULL, und jeder Wert ist auch in der Tabelle Products vorhanden.The [ProductID] column in the Orders table is never Null, and every value also appears in the Products table. Daher sollte Referenzielle Integrität voraussetzen festgelegt werden, um effizientere Abfragen zu ermöglichen (durch die Verwendung dieser Einstellung werden die in Visualisierungen angezeigten Werte nicht geändert).As such, Assume Referential Integrity should be set to get more efficient queries (using this setting does not change the values shown in visuals).

  2. Beachten Sie in der nächsten Abbildung, dass zwischen Orders[DepotID] und Depots[DepotID] keine referenzielle Integrität vorhanden ist, da DepotID gleich NULL für einige Orders ist.In the next image, notice that no referential integirty exists between Orders[DepotID] and Depots[DepotID], because the DepotID is Null for some Orders. Daher sollte Referenzielle Integrität voraussetzen nicht festgelegt werden.As such, Assume Referential Integrity should not be set.

  3. Schließlich besteht in den folgenden Tabellen keine referenzielle Integrität zwischen Orders[CustomerID] und Customers[CustID]. CustomerID enthält einige Werte (in diesem Fall CustX), die nicht in der Tabelle Customers enthalten sind.Finally, no referential integrity between Orders[CustomerID] and Customers[CustID] in the following tables; the CustomerID contains some values (in this case, CustX) that do not exist in the Customers table. Daher sollte Referenzielle Integrität voraussetzen nicht festgelegt werden.As such, Assume Referential Integrity should not be set.

Festlegen von „Referenzielle Integrität voraussetzen“Setting Assume referential integrity

Um dieses Feature auszuwählen, aktivieren Sie das Kontrollkästchen neben Referenzielle Integrität voraussetzen, wie in der folgenden Abbildung dargestellt.To enable this feature, select the checkbox next to Assume Referential Integrity as shown in the following image.

Bei Auswahl dieser Option wird die Einstellung anhand der Daten überprüft, um sicherzustellen, dass weder NULL noch nicht übereinstimmende Zeilen vorhanden sind.When selected, the setting is validated against the data to ensure there are no Null or mismatched rows. Aber bei einer sehr großen Anzahl von Werten ist die Überprüfung keine Garantie dafür, dass keine Probleme mit der referenziellen Integrität auftreten.However, for cases with a very large number of values, the validation is not a guarantee that there are no referential integrity issues.

Darüber hinaus wird die Überprüfung während der Bearbeitung der Beziehung durchgeführt und spiegelt daher nicht die nachfolgenden Änderungen an den Daten wider.In addition, the validation occurs at the time of editing the relationship, and does not reflect any subsequent changes to the data.

Was geschieht, wenn Sie „Referenzielle Integrität voraussetzen“ fälschlicherweise festlegen?What happens if you incorrectly set Assume referential integrity?

Wenn Sie Referenzielle Integrität voraussetzen festlegen, obwohl Probleme mit der referenziellen Integrität in den Daten vorliegen, führt dies nicht zu Fehlern.If you set Assume Referential Integrity when there are referential integrity issues in the data will not result in errors. Die Folge sind allerdings deutliche Inkonsistenzen in den Daten.However, it will result in apparent inconsistencies in the data. Bei der Beziehung mit der oben beschriebenen Tabelle Depots hätte dies zum Beispiel folgende Auswirkungen:For example, in the case of the relationship to the Depots table described above, it would result in the following:

  • Ein visuelles Element, in dem die gesamte Bestellmenge angezeigt wird, würde den Wert 40 anzeigen.A visual showing the total Order Qty would show a value of 40
  • Ein visuelles Element, in dem der Gesamtwert für Bestellmenge nach Depotstadt angezeigt wird, würde lediglich den Gesamtwert 30 anzeigen, da die Bestell-ID 1, deren DepotID gleich NULL ist, nicht eingeschlossen wäre.A visual showing the total Order Qty by Depot City would show a total value of only 30, because it would not include Order ID 1, where DepotID is Null.

Nächste SchritteNext steps

Weitere Informationen zu DirectQueryLearn more about DirectQuery

Weitere Informationen zu Beziehungen in Power BIGet more information about Relationships in Power BI

Weitere Informationen zur Beziehungsansicht in Power BI Desktop.Learn more about Relationship View in Power BI Desktop.