Del via


Bruke innstillingen Anta referanseintegritet i Power BI Desktop

Når du kobler til en datakilde ved hjelp av DirectQuery, kan du bruke valget Anta referanseintegritet til å aktivere kjøring av mer effektive spørringer mot datakilden. Denne funksjonen har noen krav til de underliggende dataene, og den er bare tilgjengelig når du bruker DirectQuery.

Hvis du angir anta referanseintegritet , kan spørringer på datakilden bruke INNER JOIN-setninger i stedet for YTRE SAMMENFØYNING, noe som forbedrer spørringseffektiviteten.

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

Krav for bruk av anta referanseintegritet

Denne innstillingen er en avansert innstilling, og er bare aktivert når du kobler til data ved hjelp av DirectQuery. Følgende krav er nødvendige for at anta referanseintegritet skal fungere på riktig måte:

  • Data i Fra-kolonnen i relasjonen er aldri null eller tom
  • For hver verdi i Fra-kolonnen finnes det en tilsvarende verdi i Til-kolonnen

I denne konteksten er Fra-kolonnen Mange i en én-til-mange-relasjon, eller det er kolonnen i den første tabellen i en én-til-én-relasjon.

Eksempel på bruk av anta referanseintegritet

Eksemplet nedenfor viser hvordan Anta referanseintegritet fungerer når den brukes i datatilkoblinger. Eksemplet kobles til en datakilde som inneholder en Ordre-tabell , en Produkt-tabell og en Depots-tabell .

  • I illustrasjonen nedenfor som viser Ordrer-tabellen og Produkter-tabellen , finnes referanseintegritet mellom Orders[ProductID] og Products[ProductID]. [ProductID]-kolonnen i Ordrer-tabellen er aldri Null, og hver verdi vises også i Produkter-tabellen. Anta derfor at referanseintegritet bør angis for å få mer effektive spørringer. Bruk av denne innstillingen endrer ikke verdiene som vises i visualobjekter.

    Screenshot of Orders table and Products table.

  • Legg merke til at det ikke finnes noen referanseintegritet mellom Orders[DepotID] og Depots[DepotID], fordi DepotID er Null for enkelte ordrer. Anta derfor ikke referanseintegritet.

    Screenshot of Orders table and Depots table.

  • Til slutt finnes det ingen referanseintegritet mellom Orders[CustomerID] og Customers[CustID] i tabellene nedenfor. CustomerID inneholder noen verdier, i dette tilfellet CustX, som ikke finnes i Kunder-tabellen. Anta derfor ikke referanseintegritet.

    Screenshot of Orders table and Customers table.

Angi anta referanseintegritet

Hvis du vil aktivere denne funksjonen, velger du Anta referanseintegritet som vist på bildet nedenfor.

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

Når dette er valgt, valideres innstillingen mot dataene for å sikre at det ikke finnes noen rader som ikke er null eller ikke samsvarende. For tilfeller med et svært stort antall verdier er imidlertid ikke valideringen en garanti for at det ikke er noen referanseintegritetsproblemer.

Valideringen skjer i tillegg på tidspunktet for redigering av relasjonen, og gjenspeiler ikke eventuelle etterfølgende endringer i dataene.

Hva skjer hvis du feilaktig angir Anta referanseintegritet?

Hvis du angir Anta referanseintegritet når det er problemer med referanseintegritet i dataene, resulterer ikke denne innstillingen i feil. Det resulterer imidlertid i tilsynelatende inkonsekvenser i dataene. For relasjonen til Depoter-tabellen som er beskrevet her, vil det for eksempel resultere i følgende:

  • Et visualobjekt som viser den totale ordreantallet , viser en verdi på 40
  • Et visualobjekt som viser den totale ordreantallet etter Depot City , viser en totalverdi på bare 30, fordi det ikke ville inkludere ordre-ID 1, der DepotID er Null.