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.

Skjermbilde av dialogboksen Rediger relasjon for å velge Anta referanseintegritet.

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.

    Skjermbilde av Ordrer-tabellen og Produkter-tabellen.

  • 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.

    Skjermbilde av Ordrer-tabellen og Depoter-tabellen.

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

    Skjermbilde av Ordrer-tabellen og Kunder-tabellen.

Angi anta referanseintegritet

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

Skjermbilde av dialogboksen Rediger relasjon som lar deg velge Anta referanseintegritet.

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 referanseintegritetsproblemer 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.