De instelling Referentiële integriteit aannemen toepassen in Power BI DesktopApply the Assume Referential Integrity setting in Power BI Desktop

Als u via DirectQuery verbinding maakt met een gegevensbron, kunt u de selectie Referentiële integriteit aannemen gebruiken om efficiëntere query's voor uw gegevensbron uit te voeren.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. Voor deze functie gelden enkele vereisten van de onderliggende gegevens en de functie is alleen beschikbaar wanneer u DirectQuery gebruikt.This feature has a few requirements of the underlying data, and it is only available when using DirectQuery.

Als u Referentiële integriteit aannemen instelt, kunnen query's op de gegevensbron gebruikmaken van INNER JOIN-instructies in plaats van OUTER JOIN-instructies, waardoor de efficiëntie van de query wordt verbeterd.Setting Assume referential integrity enables queries on the data source to use INNER JOIN statements rather than OUTER JOIN, which improves query efficiency.

Schermopname van het dialoogvenster Relatie bewerken waarin de optie Referentiële integriteit aannemen kan worden geselecteerd.

Vereisten voor het gebruik van Referentiële integriteit aannemenRequirements for using Assume referential integrity

Dit is een geavanceerde instelling die alleen wordt ingeschakeld wanneer u verbinding maakt met gegevens via DirectQuery.This is an advanced setting, and is only enabled when connecting to data using DirectQuery. De volgende vereisten zijn nodig om Referentiële integriteit aannemen goed te laten werken:The following requirements are necessary for Assume referential integrity to work properly:

  • Gegevens in de kolom Van in de relatie zijn nooit Null of leegData in the From column in the relationship is never Null or blank
  • Voor elke waarde in de kolom Van is er een overeenkomstige waarde in de kolom AanFor each value in the From column, there is a corresponding value in the To column

In deze context is de kolom Aan de veel in een een-op-veelrelatie of het is de kolom in de eerste tabel in een een-op-eenrelatie.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.

Voorbeeld van het gebruik van Referentiële integriteit aannemenExample of using Assume referential integrity

In het volgende voorbeeld wordt het gedrag van Referentiële integriteit aannemen gedemonstreerd bij het gebruik in gegevensverbindingen.The following example demonstrates how Assume referential integrity behaves when used in data connections. In het voorbeeld wordt verbinding gemaakt met een gegevensbron met een tabel Orders, een tabel Products en een tabel Depots.The example connects to a data source that includes an Orders table, a Products table, and a Depots table.

  1. In de volgende afbeelding, waarin de tabel Orders en de tabel Products wordt getoond, ziet u dat er referentiële integriteit bestaat tussen Orders[ProductID] en Products[ProductID] .In the following image that shows the Orders table and the Products table, note that referential integrity exists between Orders[ProductID] and Products[ProductID]. De kolom [ProductID] in de tabel Orders is nooit Null en elke waarde wordt ook weergegeven in de tabel Producten.The [ProductID] column in the Orders table is never Null, and every value also appears in the Products table. Daarom moet Referentiële integriteit aannemen zodanig worden ingesteld dat er efficiëntere query's kunnen worden opgehaald (met deze instelling worden de waarden in de visuele elementen niet gewijzigd).As such, Assume Referential Integrity should be set to get more efficient queries (using this setting does not change the values shown in visuals).

    Schermopname van de tabellen Orders en Producten.

  2. In de volgende afbeelding ziet u dat er geen referentiële integriteit bestaat tussen Orders[DepotID] en Depots[DepotID] , omdat DepotID Null is voor sommige Orders.In the next image, notice that no referential integrity exists between Orders[DepotID] and Depots[DepotID], because the DepotID is Null for some Orders. Daarom moet Referentiële integriteit aannemen niet worden ingesteld.As such, Assume Referential Integrity should not be set.

    Schermopname van de tabellen Orders en Producten.

  3. Tot slot: er bestaat geen referentiële integriteit tussen Orders[CustomerID] en Customers[CustID] in de volgende tabellen; CustomerID bevat enkele waarden (in dit geval CustX) die niet voorkomen in de tabel Klanten.Finally, no referential integrity exists 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. Daarom moet Referentiële integriteit aannemen niet worden ingesteld.As such, Assume Referential Integrity should not be set.

    Schermopname van de tabellen Orders en Klanten.

Referentiële integriteit aannemen instellenSetting Assume referential integrity

Als u deze functie wilt inschakelen, schakelt u het selectievakje Referentiële integriteit aannemen in, zoals weergegeven in de volgende afbeelding.To enable this feature, select the checkbox next to Assume Referential Integrity as shown in the following image.

Schermopname van het dialoogvenster Relatie bewerken waarin de optie Referentiële integriteit aannemen kan worden geselecteerd.

Als deze instelling is ingeschakeld, is de instelling gevalideerd tegen de gegevens om ervoor te zorgen dat er geen Null-waarden of niet-overeenkomende rijen voorkomen.When selected, the setting is validated against the data to ensure there are no Null or mismatched rows. Echter, in gevallen met een groot aantal waarden biedt de validatie geen garantie tegen problemen met de referentiële integriteit.However, for cases with a very large number of values, the validation is not a guarantee that there are no referential integrity issues.

Bovendien vindt validatie plaats op het moment dat de relatie wordt bewerkt en worden eventuele latere gegevenswijzigingen dus niet doorgevoerd.In addition, the validation occurs at the time of editing the relationship, and does not reflect any subsequent changes to the data.

Wat gebeurt er als u Referentiële integriteit aannemen per ongeluk instelt?What happens if you incorrectly set Assume referential integrity?

Als u Referentiële integriteit aannemen instelt als er sprake is van problemen met de referentiële integriteit in de gegevens, leidt dit niet tot fouten.If you set Assume Referential Integrity when there are referential integrity issues in the data, this will not result in errors. Het kan wel tot inconsistenties in de gegevens leiden.However, it will result in apparent inconsistencies in the data. Bijvoorbeeld in het geval van de relatie met de tabel Opslagplaatsen hierboven, kan het volgende optreden:For example, in the case of the relationship to the Depots table described above, it would result in the following:

  • Een visueel element met het totaal Order Qty toont in dat geval een waarde van 40A visual showing the total Order Qty would show a value of 40
  • Een visueel element met het totaal Order Qty by Depot City toont in dat geval een totaalwaarde van slechts 30 omdat Order ID 1 er niet in is opgenomen, waar DepotID Null is.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.

Volgende stappenNext steps

Meer informatie over DirectQueryLearn more about DirectQuery

Lees meer informatie over relaties in Power BI (Engelstalig)Get more information about Relationships in Power BI

Meer informatie over relatieweergave in Power BI Desktop (Engelstalig).Learn more about Relationship View in Power BI Desktop.