Dela via


Använd inställningen Anta referensintegritet i Power BI Desktop

När du ansluter till en datakälla med DirectQuery kan du använda alternativet Anta referensintegritet för att göra det möjligt att köra effektivare frågor mot datakällan. Den här funktionen har några krav på underliggande data och är endast tillgänglig när du använder DirectQuery.

Om du anger Anta referensintegritet kan frågor på datakällan använda INNER JOIN-instruktioner i stället för YTTRE KOPPLING, vilket förbättrar frågeeffektiviteten.

Skärmbild av dialogrutan Redigera relation för att välja Anta referensintegritet.

Krav för att använda Anta referensintegritet

Den här inställningen är en avancerad inställning och aktiveras endast när du ansluter till data med DirectQuery. Följande krav är nödvändiga för att Anta att referensintegriteten fungerar korrekt:

  • Data i kolumnen Från i relationen är aldrig null eller tomma
  • För varje värde i kolumnen Från finns det ett motsvarande värde i kolumnen Till

I det här sammanhanget är kolumnen Från många i en en-till-många-relation, eller så är det kolumnen i den första tabellen i en en-till-en-relation.

Exempel på användning av anta referensintegritet

I följande exempel visas hur Anta referensintegritet beter sig när det används i dataanslutningar. Exemplet ansluter till en datakälla som innehåller en orders-tabell, en produkttabell och en depåtabell.

  • I följande bild som visar tabellen Beställningar och tabellen Produkter finns referensintegritet mellan Orders[ProductID] och Products[ProductID]. Kolumnen [ProductID] i tabellen Beställningar är aldrig Null, och varje värde visas också i tabellen Produkter . Anta därför att referensintegritet ska anges för att få effektivare frågor. Om du använder den här inställningen ändras inte värdena som visas i visuella objekt.

    Skärmbild av tabellen Beställningar och tabellen Produkter.

  • Observera i nästa bild att det inte finns någon referensintegritet mellan Orders[DepotID] och Depots[DepotID], eftersom DepotID är Null för vissa beställningar. Anta därför att referensintegritet inte ska anges.

    Skärmbild av tabellen Beställningar och tabellen Depåer.

  • Slutligen finns det ingen referensintegritet mellan Orders[CustomerID] och Customers[CustID] i följande tabeller. CustomerID innehåller ett värde, CustX, som inte finns i tabellen Kunder. Anta därför att referensintegritet inte ska anges.

    Skärmbild av tabellen Beställningar och tabellen Kunder.

Inställningen Förutsätter referensintegritet

Om du vill aktivera den här funktionen väljer du Anta referensintegritet enligt följande bild.

Skärmbild av dialogrutan Redigera relation där du kan välja Anta referensintegritet.

När inställningen är markerad verifieras den mot data för att säkerställa att det inte finns några null- eller matchande rader. För fall med ett mycket stort antal värden är valideringen dock inte en garanti för att det inte finns några referensintegritetsproblem.

Dessutom sker verifieringen vid tidpunkten för redigeringen av relationen och återspeglar inte några efterföljande ändringar av data.

Vad händer om du felaktigt anger Anta referensintegritet?

Om du anger Anta referensintegritet när det finns referensintegritetsproblem i data resulterar den inställningen inte i fel. Det resulterar dock i uppenbara inkonsekvenser i data. För relationen till tabellen Depåer som beskrivs här skulle det till exempel resultera i följande:

  • Ett visuellt objekt som visar den totala orderkviteten skulle visa ett värde på 40.
  • Ett visuellt objekt som visar den totala orderkviteten per Depot City skulle visa ett totalt värde på endast 30, eftersom det inte skulle innehålla order-ID 1, där DepotID är Null.