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ů na zdroj 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ů.
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. Aby správně fungovala referenční integrita, 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 v relaci 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 referenční integrita, aby byly dotazy efektivnější. Při použití tohoto nastavení se nezmění hodnoty zobrazené ve vizuálech.
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ávky má hodnotu Null. Proto by neměla být nastavena referenční integrita.
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 hodnotu CustX, která v tabulce Customers neexistuje. Proto by neměla být nastavena referenční integrita.
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.
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 Qty 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 DepotID má hodnotu Null.
Související obsah
- Přečtěte si další informace o DirectQuery.
- Získejte další informace o relacích v Power BI.
- Přečtěte si další informace o zobrazení modelu v Power BI Desktopu.