Anwenden der Einstellung „Referenzielle Integrität voraussetzen“ 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. Diese Funktion beinhaltet einige Anforderungen an die zugrunde liegenden Daten und ist nur bei Verwendung von DirectQuery verfügbar.

Durch Festlegen von Referenzielle Integrität voraussetzen können bei Abfragen der Datenquelle INNER JOIN- anstelle von OUTER JOIN-Anweisungen verwendet werden. Hierdurch wird die Effizienz der Abfragen verbessert.

Screenshot of an Edit Relationship dialog to select Assume Referential Integrity.

Anforderungen für die Verwendung von „Referenzielle Integrität voraussetzen“

Hierbei handelt es sich um eine erweiterte Einstellung, die nur aktiviert wird, wenn mit DirectQuery eine Verbindung mit den Daten hergestellt wird. Die folgenden Anforderungen müssen erfüllt sein, damit Referenzielle Integrität voraussetzen ordnungsgemäß funktioniert:

  • Daten in der Spalte Von der Beziehung sind nie NULL oder leer.
  • Für jeden Wert in der Spalte Von ist ein entsprechender Wert in der Spalte Zu vorhanden.

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.

Beispiel für die Verwendung von „Referenzielle Integrität voraussetzen“

Im folgenden Beispiel wird das Verhalten von Referenzielle Integrität voraussetzen bei der Verwendung in Datenverbindungen veranschaulicht. Im Beispiel wird eine Verbindung mit einer Datenquelle hergestellt, die eine Tabelle Orders, eine Tabelle Products und eine Tabelle Depots enthält.

  • In der folgenden Abbildung mit den Tabellen Orders und Products ist die referenzielle Integrität zwischen Orders[ProductID] und Products[ProductID] vorhanden. Die Spalte [ProductID] in der Tabelle Orders ist nie NULL, und jeder Wert ist auch in der Tabelle Products vorhanden. Daher sollte Referenzielle Integrität voraussetzen festgelegt werden, um effizientere Abfragen zu erhalten. Durch die Verwendung dieser Einstellung werden die in visuellen Elementen angezeigten Werte nicht geändert.

    Screenshot of Orders table and Products table.

  • Beachten Sie in der nächsten Abbildung, dass zwischen Orders[DepotID] und Depots[DepotID] keine referenzielle Integrität vorhanden ist, da DepotID für einige Orders gleich NULL ist. Daher sollte Referenzielle Integrität voraussetzennicht festgelegt werden.

    Screenshot of Orders table and Depots table.

  • Schließlich ist keine referenzielle Integrität zwischen Orders[CustomerID] und Customers[CustID] in den folgenden Tabellen vorhanden. Die CustomerID enthält einige Werte, in diesem Fall CustX, die in der Tabelle Customers nicht vorhanden sind. Daher sollte Referenzielle Integrität voraussetzennicht festgelegt werden.

    Screenshot of Orders table and Customers table.

Festlegen von „Referenzielle Integrität voraussetzen“

Aktivieren Sie Referenzielle Integrität voraussetzen wie in der folgenden Abbildung dargestellt, um dieses Feature auszuwählen.

Screenshot of an Edit Relationship dialog that allows you to select Assume Referential Integrity.

Bei Auswahl dieser Option wird die Einstellung anhand der Daten überprüft, um sicherzustellen, dass weder NULL noch nicht übereinstimmende Zeilen vorhanden sind. Bei einer sehr großen Anzahl von Werten ist die Überprüfung allerdings keine Garantie dafür, dass keine Probleme mit der referenziellen Integrität auftreten.

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.

Was geschieht, wenn Sie „Referenzielle Integrität voraussetzen“ fälschlicherweise festlegen?

Wenn Sie Referenzielle Integrität voraussetzen festlegen, obwohl Probleme mit der referenziellen Integrität in den Daten vorliegen, führt diese Einstellung nicht zu Fehlern. Die Folge sind allerdings deutliche Inkonsistenzen in den Daten. Bei der Beziehung mit der hier beschriebenen Tabelle Depots hätte dies zum Beispiel folgende Auswirkungen:

  • Ein visuelles Element, in dem die gesamte Bestellmenge angezeigt wird, würde den Wert 40 anzeigen.
  • 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.