Anvend indstillingen Antag referentiel integritet i Power BI Desktop
Når du opretter forbindelse til en datakilde ved hjælp af DirectQuery, kan du bruge indstillingen Antag referentiel integritet til at aktivere kørsel af mere effektive forespørgsler i forhold til datakilden. Denne funktion har nogle få krav til de underliggende data, og den er kun tilgængelig, når du bruger DirectQuery.
Hvis du angiver Antag referentiel integritet , kan forespørgsler på datakilden bruge INNER JOIN-sætninger i stedet for OUTER JOIN, hvilket forbedrer forespørgslens effektivitet.
Krav til brug af Antag referentiel integritet
Denne indstilling er en avanceret indstilling og er kun aktiveret, når der oprettes forbindelse til data ved hjælp af DirectQuery. Følgende krav er nødvendige, for at Antag referentiel integritet fungerer korrekt:
- Data i kolonnen From i relationen er aldrig Null eller tomme
- For hver værdi i kolonnen Fra er der en tilsvarende værdi i kolonnen Til
I denne kontekst er kolonnen From mange i en en til mange-relation, eller det er kolonnen i den første tabel i en en til en-relation.
Eksempel på brug af Antag referentiel integritet
I følgende eksempel vises, hvordan Antag referentiel integritet fungerer, når den bruges i dataforbindelser. I eksemplet oprettes der forbindelse til en datakilde, der indeholder tabellen Orders , tabellen Products og tabellen Depots .
På følgende billede, der viser tabellen Orders og tabellen Products , findes der referentiel integritet mellem Orders[ProductID] og Products[ProductID]. Kolonnen [ProductID] i tabellen Orders er aldrig Null, og alle værdier vises også i tabellen Products . Antag referentiel integritet skal derfor angives for at få mere effektive forespørgsler. Brug af denne indstilling ændrer ikke de værdier, der vises i visualiseringer.
På det næste billede kan du se, at der ikke findes referentiel integritet mellem Orders[DepotID] og Depots[DepotID], fordi DepotID er Null for nogle Ordrer. Antag referentiel integritet bør derfor ikke angives.
Endelig findes der ingen referentiel integritet mellem Orders[CustomerID] og Customers[CustID] i følgende tabeller. CustomerID indeholder en værdi, CustX, som ikke findes i tabellen Customers. Antag referentiel integritet bør derfor ikke angives.
Angivelse af Antag referentiel integritet
Hvis du vil aktivere denne funktion, skal du vælge Antag referentiel integritet som vist på følgende billede.
Når indstillingen er valgt, valideres indstillingen i forhold til dataene for at sikre, at der ikke er nogen Null-rækker eller rækker, der ikke stemmer overens. I tilfælde med et meget stort antal værdier er valideringen dog ikke en garanti for, at der ikke er problemer med referentiel integritet.
Desuden sker valideringen på det tidspunkt, hvor relationen redigeres, og afspejler ikke efterfølgende ændringer af dataene.
Hvad sker der, hvis du forkert angiver Antag referentiel integritet?
Hvis du angiver Antag referentiel integritet , når der er problemer med referentiel integritet i dataene, resulterer denne indstilling ikke i fejl. Det resulterer dog i tydelige uoverensstemmelser i dataene. For relationen til tabellen Depots , der er beskrevet her, vil det f.eks. resultere i følgende:
- En visualisering, der viser det samlede ordreantal , viser en værdi på 40.
- En visualisering, der viser det samlede antal ordreantal efter Depot City , viser kun en samlet værdi på 30, fordi den ikke indeholder Ordre-id 1, hvor DepotID er Null.
Relateret indhold
- Få mere at vide om DirectQuery.
- Få flere oplysninger om relationer i Power BI.
- Få mere at vide om Modelvisning i Power BI Desktop.