Použití nastavení Předpokládat referenční integritu v Power BI Desktopu

Při připojování ke zdroji dat pomocí DirectQuery můžete pomocí výběru Předpokládat referenční integritu povolit spouštění efektivnějších dotazů ve zdroji dat. Tato funkce má několik požadavků na podkladová data a je dostupná jenom při použití DirectQuery.

Nastavení Předpokládat referenční integritu umožňuje dotazům na zdroj dat používat příkazy INNER JOIN místo OUTER JOIN, což zlepšuje efektivitu dotazů.

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

Požadavky na použití předpokládat referenční integritu

Toto nastavení je rozšířené a je povolené pouze při připojování k datům pomocí DirectQuery. Pro správné fungování předpokládat referenční integritu jsou nezbytné následující požadavky:

  • Data ve sloupci Od v relaci nikdy nejsou null nebo prázdná.
  • Pro každou hodnotu ve sloupci Od existuje odpovídající hodnota ve sloupci To .

V tomto kontextu je sloupec Z vrelaci 1:N nebo je to sloupec v první tabulce relace 1:1.

Příklad použití předpokládat referenční integritu

Následující příklad ukazuje, jak předpokládat referenční integritu se chová při použití v datových připojeních. Příklad se připojí ke zdroji dat, který obsahuje tabulku Objednávky , tabulku Products a tabulku Sklady .

  • Na následujícím obrázku, který znázorňuje tabulku Objednávky a tabulku Výrobky , existuje referenční integrita mezi Objednávkami[IDProduktu] a Produkty[IDProduktu]. Sloupec [PRODUCTID] v tabulce Objednávky není nikdy Null a každá hodnota se zobrazí také v tabulce Produkty . Proto by se měla nastavit možnost Předpokládat referenční integritu, aby byly dotazy efektivnější. Při použití tohoto nastavení se nezmění hodnoty zobrazené ve vizuálech.

    Screenshot of Orders table and Products table.

  • Na následujícím obrázku si všimněte, že mezi Objednávkami[DepotID] a Depots[DepotID] neexistuje žádná referenční integrita, protože depotID pro některé objednávkyhodnotu Null. Proto by neměla být nastavena možnost Předpokládat referenční integritu.

    Screenshot of Orders table and Depots table.

  • Nakonec v následujících tabulkách neexistuje žádná referenční integrita mezi Objednávkami[CustomerID] a Customers[CustID]. ID zákazníka obsahuje některé hodnoty, v tomto případě CustX, které v tabulce Customers neexistují. Proto by neměla být nastavena možnost Předpokládat referenční integritu.

    Screenshot of Orders table and Customers table.

Nastavení Předpokládat referenční integritu

Pokud chcete tuto funkci povolit, vyberte Předpokládat referenční integritu , jak je znázorněno na následujícím obrázku.

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

Pokud je tato možnost vybrána, nastavení se ověří na základě dat, aby se zajistilo, že neexistují žádné řádky s hodnotou Null nebo neshodou. V případě velmi velkého počtu hodnot ale ověření není zárukou, že neexistují žádné problémy s referenční integritou.

Kromě toho se ověření provádí v době úprav relace a neodráží žádné následné změny dat.

Co se stane, když nesprávně nastavíte předpokládat referenční integritu?

Pokud nastavíte předpokládat referenční integritu , pokud v datech dochází k problémům s referenční integritou, toto nastavení nemá za následek chyby. Výsledkem je ale zjevná nekonzistence dat. Například pro relaci s tabulkou Depots popsanou tady by to mělo za následek následující:

  • Vizuál zobrazující celkovou hodnotu množství objednávky by zobrazil hodnotu 40.
  • Vizuál zobrazující celkovou hodnotu Qty order Qty by Depot City by zobrazoval celkovou hodnotu pouze 30, protože nezahrnuje ID objednávky 1, kde DepotIDhodnotu Null.