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

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

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 referensintegritet ska fungera 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 fungerar 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.

    Screenshot of Orders table and Products table.

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

    Screenshot of Orders table and Depots table.

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

    Screenshot of Orders table and Customers table.

Inställningen förutsätter referensintegritet

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

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

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.