Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
V tabulkových modelech je relace propojením mezi dvěma tabulkami dat. Relace určuje, jak mají být data v těchto dvou tabulkách korelována. Například tabulka Zákazníci a tabulka Objednávky můžou souviset, aby se zobrazilo jméno zákazníka přidružené k jednotlivým objednávkám.
Při importu ze stejného zdroje dat se relace, které už existují v tabulkách (ve zdroji dat), které se rozhodnete importovat, se v modelu znovu vytvoří. Relace, které byly zjištěny a automaticky vytvořeny, můžete zobrazit pomocí návrháře modelu v zobrazení diagramu nebo pomocí dialogového okna Spravovat relace. Nové relace mezi tabulkami můžete také vytvořit ručně pomocí návrháře modelu v zobrazení diagramu nebo pomocí dialogového okna Vytvořit relaci nebo Spravovat relace.
Po definování relací mezi tabulkami, a to buď automaticky během importu nebo ručně, budete moct filtrovat data pomocí souvisejících sloupců a vyhledávat hodnoty v souvisejících tabulkách.
Návod
Pokud váš model obsahuje mnoho relací, může vám zobrazení diagramu lépe pomoct lépe vizualizovat a vytvářet nové relace mezi tabulkami.
Výhody
Relace je propojení mezi dvěma tabulkami dat na základě jednoho nebo více sloupců v každé tabulce. Pokud chcete zjistit, proč jsou relace užitečné, představte si, že sledujete data objednávek zákazníků ve vaší firmě. Všechna data můžete sledovat v jedné tabulce, která má strukturu, jako je následující:
| identifikátor zákazníka | Název | DiscountRate | ID objednávky | Datum objednávky | Product | Množství | |
|---|---|---|---|---|---|---|---|
| 1 | Ashton | chris.ashton@contoso.com | 0,05 | 256 | 2010-01-07 | Kompaktní digitální zařízení | 11 |
| 1 | Ashton | chris.ashton@contoso.com | 0,05 | 255 | 2010-01-03 | SLR Camera | 15 |
| 2 | Jaworski | michal.jaworski@contoso.com | .10 | 254 | 2010-01-03 | Levný Tvorba Filmů | 27 |
Tento přístup může fungovat, ale zahrnuje ukládání velkého množství redundantních dat, například e-mailové adresy zákazníka pro každou objednávku. Úložiště je levné, ale pokud se změní e-mailová adresa, musíte se ujistit, že aktualizujete každý řádek pro daného zákazníka. Jedním z řešení tohoto problému je rozdělení dat do více tabulek a definování relací mezi těmito tabulkami. Tento přístup se používá v relačních databázích , jako je SQL Server. Například databáze, kterou importujete do modelu, může představovat data objednávek pomocí tří souvisejících tabulek:
Zákazníci
| [CustomerID] | Název | |
|---|---|---|
| 1 | Ashton | chris.ashton@contoso.com |
| 2 | Jaworski | michal.jaworski@contoso.com |
Zákaznické slevy
| [CustomerID] | DiscountRate |
|---|---|
| 1 | 0,05 |
| 2 | .10 |
Objednávky
| [CustomerID] | ID objednávky | Datum objednávky | Product | Množství |
|---|---|---|---|---|
| 1 | 256 | 2010-01-07 | Kompaktní digitál | 11 |
| 1 | 255 | 2010-01-03 | SLR Camera | 15 |
| 2 | 254 | 2010-01-03 | Rozpočetní tvůrce filmů | 27 |
Pokud importujete tyto tabulky ze stejné databáze, může import rozpoznat relace mezi tabulkami na základě sloupců v [hranatých závorkách] a tyto relace reprodukovat v návrháři modelů. Další informace naleznete v části Automatické zjišťování a odvozování relací v tomto článku. Pokud importujete tabulky z více zdrojů, můžete relace vytvořit ručně, jak je popsáno v tématu Vytvoření relace mezi dvěma tabulkami.
Sloupce a klíče
Relace jsou založené na sloupcích v každé tabulce, které obsahují stejná data. Tabulky Zákazníci a Objednávky můžou být například vzájemně spojené, protože oba obsahují sloupec, který ukládá ID zákazníka. V tomto příkladu jsou názvy sloupců stejné, ale nejedná se o požadavek. Jedna může být CustomerID a druhá CustomerNumber, pokud všechny řádky v tabulce Objednávky obsahují ID, které je také uloženo v tabulce Zákazníci.
V relační databázi existuje několik typů klíčů, což jsou obvykle jen sloupce se speciálními vlastnostmi. V relačních databázích je možné použít následující čtyři typy klíčů:
Primární klíč: jednoznačně identifikuje řádek v tabulce, například CUSTOMERID v tabulce Zákazníci.
Alternativní klíč (nebo klíč kandidáta): sloupec jiný než primární klíč, který je jedinečný. Například tabulka Zaměstnanci může obsahovat ID zaměstnance a číslo sociálního pojištění, z nichž obě jsou jedinečné.
Cizí klíč: sloupec, který odkazuje na jedinečný sloupec v jiné tabulce, například ID zákazníka v tabulce Objednávky, který odkazuje na CUSTOMERID v tabulce Zákazníci.
Složený klíč: klíč, který se skládá z více než jednoho sloupce. Složené klíče nejsou podporovány v tabulkových modelech. Další informace najdete v části Složené klíče a vyhledávací sloupce v tomto článku.
V tabulkových modelech se primární klíč nebo alternativní klíč označuje jako související vyhledávací sloupec nebo jen vyhledávací sloupec. Pokud tabulka obsahuje jak primární, tak alternativní klíč, můžete využít kteroukoli jako vyhledávací sloupec. Cizí klíč se označuje jako zdrojový sloupec nebo jen sloupec. V našem příkladu by byla relace definována mezi Id zákazníka v tabulce Objednávky (sloupec) a ID zákazníka (vyhledávací sloupec) v tabulce Zákazníci. Pokud importujete data z relační databáze, návrhář modelu ve výchozím nastavení zvolí cizí klíč z jedné tabulky a odpovídající primární klíč z druhé tabulky. Můžete ale použít libovolný sloupec, který má jedinečné hodnoty pro vyhledávací sloupec.
Typy relací
Relace mezi zákazníky a objednávkami je relace 1:N. Každý zákazník může mít více objednávek, ale objednávku nemůže mít více zákazníků. Další typy relací jsou 1:1 a M:N. Tabulka CustomerDiscounts, která definuje jednu diskontní sazbu pro každého zákazníka, je v relaci 1:1 s tabulkou Customers. Příkladem relace M:N je přímý vztah mezi produkty a zákazníky, ve kterém si zákazník může koupit mnoho produktů a stejný produkt může zakoupit mnoho zákazníků. Návrhář modelů nepodporuje ve svém uživatelském rozhraní relace typu mnoho k mnoha. Další informace naleznete v článku v části Relace mnoho ku mnoha.
Následující tabulka ukazuje relace mezi těmito třemi tabulkami:
| Vztah | Typ | Vyhledávací sloupec | Sloupec |
|---|---|---|---|
| Zákazníci-SlevyZákazníkům | vzájemný | Customers.CustomerID | CustomerDiscounts.CustomerID (identifikátor zákazníka) |
| Zákazníci-Objednávky | one-to-many | Customers.CustomerID | Orders.CustomerID |
Relace a výkon
Po vytvoření jakékoli relace musí návrhář modelů obvykle přepočítat všechny vzorce, které používají sloupce z tabulek v nově vytvořené relaci. Zpracování může nějakou dobu trvat v závislosti na množství dat a složitosti relací.
Požadavky na vztahy
Návrhář modelů má několik požadavků, které je potřeba dodržovat při vytváření relací:
Jedna aktivní relace mezi tabulkami
Více relací může vést k nejednoznačným závislostem mezi tabulkami. K vytváření přesných výpočtů potřebujete jednu cestu z jedné tabulky na druhou. Proto může existovat pouze jedna aktivní relace mezi jednotlivými dvojicemi tabulek. Například v AdventureWorks DW 2012 obsahuje tabulka DimDate sloupec DateKey, který souvisí se třemi různými sloupci v tabulce, FactInternetSales: OrderDate, DueDate a ShipDate. Pokud se pokusíte importovat tyto tabulky, první relace se úspěšně vytvoří, ale při následných relacích, které zahrnují stejný sloupec, se zobrazí následující chyba:
* Relace: tabulka[sloupec 1]-> tabulka[sloupec 2] – Stav: Chyba – Důvod: Mezi tabulkami <1> a <tabulkou 2> nelze vytvořit relaci. Mezi dvěma tabulkami může existovat pouze jedna přímá nebo nepřímá relace.
Pokud máte dvě tabulky a více relací mezi nimi, budete muset importovat více kopií tabulky, která obsahuje vyhledávací sloupec, a vytvořit jednu relaci mezi jednotlivými dvojicemi tabulek.
Mezi tabulkami může být mnoho neaktivních relací. Cesta určená k použití mezi tabulkami je specifikována klientem reportů při zpracování dotazu.
Jedna relace pro každý zdrojový sloupec
Zdrojový sloupec nemůže být součástí více relací. Pokud jste už v jedné relaci použili sloupec jako zdrojový sloupec, ale chcete ho použít pro připojení k jinému souvisejícímu vyhledávacímu sloupci v jiné tabulce, můžete vytvořit kopii sloupce a použít ho pro novou relaci.
Pomocí vzorce DAX v počítaném sloupci můžete snadno vytvořit kopii sloupce se stejnými hodnotami. Další informace naleznete v tématu Vytvoření počítaného sloupce.
Jedinečný identifikátor pro každou tabulku
Každá tabulka musí mít jeden sloupec, který jednoznačně identifikuje každý řádek v této tabulce. Tento sloupec se často označuje jako primární klíč.
Jedinečné vyhledávací sloupce
Hodnoty dat ve vyhledávacím sloupci musí být jedinečné. Jinými slovy sloupec nemůže obsahovat duplicity. V tabulkových modelech jsou null hodnoty a prázdné řetězce ekvivalentní prázdné hodnotě, která je odlišnou datovou hodnotou. To znamená, že ve vyhledávacím sloupci nemůžete mít více hodnot null.
Kompatibilní datové typy
Datové typy ve zdrojovém sloupci a vyhledávacím sloupci musí být kompatibilní. Další informace o typech dat naleznete v Data Types Supported.
Složené klíče a vyhledávací sloupce
V tabulkovém modelu nelze použít složené klíče; Vždy musíte mít jeden sloupec, který jednoznačně identifikuje každý řádek v tabulce. Pokud se pokusíte importovat tabulky, které mají existující relaci založenou na složené klíči, import tuto relaci ignoruje, protože ji nelze vytvořit v tabulkovém modelu.
Pokud chcete vytvořit relaci mezi dvěma tabulkami v návrháři modelů a existuje několik sloupců definujících primární a cizí klíče, je nutné před vytvořením relace zkombinovat hodnoty a vytvořit jeden sloupec s klíčem. Můžete to udělat před importem dat nebo to můžete udělat v návrháři modelů vytvořením počítaného sloupce.
Mnoho-k-mnoho vztahy
Tabulkové modely na úrovni kompatibility 1500 a vyšší, které jsou nasazeny v Azure Analysis Services, SQL Serveru 2019 a novějších verzích Analysis Services a v Power BI Premium, podporují relace M:N.
Relace M:N jsou relace mezi tabulkami, kde oba sloupce nejsou jedinečné. Relaci lze definovat mezi dimenzí a tabulkou faktů s vyšší členitostí, než je klíčový sloupec dimenze. Tím se zabrání normalizaci tabulek dimenzí a může se zlepšit uživatelské prostředí, protože výsledný model má menší počet tabulek s logicky seskupenými sloupci.
Vytvořte relace M:N pomocí sady Visual Studio 2019 s projekty Analysis Services, rozhraní API tabulkového objektového modelu (TOM), jazyka TMSL (Tabular Model Scripting Language) a opensourcového tabulkového editoru.
Tabulkové modely na úrovních kompatibility 1400 a nižších úrovní kompatibility nepodporují relace M:N a v návrháři modelů není možné přidávat spojovací tabulky . Ale pomocí funkcí DAX můžete modelovat relace M:N. Můžete také zkusit nastavit obousměrný křížový filtr a zjistit, jestli dosáhne stejného účelu. Někdy je možné splnit požadavek relace M:N prostřednictvím křížových filtrů, které uchovávají kontext filtru napříč více relacemi mezi tabulkami. Podrobnosti najdete v obousměrných křížových filtrech v tabulkových modelech .
Samoobslužná spojení a smyčky
V tabulkových tabulkových modelech nejsou povolená samoobslužná spojení. Samo-spojení je rekurzivní relace mezi tabulkou a sebou samou. Samospojení se často používají k definování hierarchií rodič-potomek. Můžete například připojit tabulku Employees k sobě, abyste vytvořili hierarchii, která zobrazuje řetězec správy v podniku.
Návrhář modelů neumožňuje vytváření smyček mezi relacemi v modelu. Jinými slovy, následující sada relací je zakázána.
Tabulka 1, sloupec a až Tabulka 2, sloupec f
Tabulka 2, sloupec f až Tabulka 3, sloupec n
Tabulka 3, sloupec n až Tabulka 1, sloupec a
Pokud se pokusíte vytvořit relaci, která by způsobovala vytvoření smyčky, vygeneruje se chyba.
Odvozování relací
V některých případech se relace mezi tabulkami automaticky propojí. Pokud například vytvoříte relaci mezi prvními dvěma tabulkami v níže uvedeném seznamu, je odvozena existence relace mezi ostatními dvěma tabulkami a relace se automaticky vytvoří.
Produkty a kategorie – vytvořené ručně
Kategorie a Podkategorie -- vytvořeno ručně
Products and SubCategory – vztah je odvozen
Aby relace byly automaticky zřetězeny, musí relace přecházet jedním směrem, jak je uvedeno výše. Pokud byly počáteční relace například mezi obchodem a produkty, a obchodem a zákazníky, relace se neodvozuje. Důvodem je to, že vztah mezi produkty a zákazníky je relace M:N.
Detekce relací při importu dat
Při importu z tabulky relačních zdrojů dat se mezi tabulkami na základě dat zdrojového schématu zjistí existující relace. Pokud se importují související tabulky, budou se tyto relace replikovat v modelu.
Ruční vytváření relací
I když se většina relací mezi tabulkami v jednom relačním zdroji dat rozpozná automaticky a vytvoří se v tabulkovém modelu, existuje také mnoho instancí, kde je potřeba relace mezi tabulkami modelu vytvořit ručně.
Pokud váš model obsahuje data z více zdrojů, budete pravděpodobně muset relace vytvořit ručně. Můžete například importovat tabulky Customers, CustomerDiscounts a Orders z relačního zdroje dat. Relace existující mezi těmito tabulkami ve zdroji se automaticky vytvoří v modelu. Potom můžete přidat další tabulku z jiného zdroje, například importovat data oblasti z tabulky Zeměpis v sešitu Aplikace Microsoft Excel. Potom můžete ručně vytvořit relaci mezi sloupcem v tabulce Zákazníci a sloupcem v tabulce Zeměpis.
Pokud chcete relace v tabulkovém modelu vytvořit ručně, můžete použít návrháře modelů v zobrazení diagramu nebo pomocí dialogového okna Spravovat relace. Zobrazení diagramu zobrazuje tabulky s relacemi mezi nimi v grafickém formátu. Kliknutím na sloupec v jedné tabulce a přetažením kurzoru do jiné tabulky můžete snadno vytvořit relaci ve správném pořadí mezi tabulkami. Dialogové okno Spravovat relace zobrazuje relace mezi tabulkami v jednoduchém formátu tabulky. Informace o ručním vytváření relací najdete v tématu Vytvoření relace mezi dvěma tabulkami.
Duplicitní hodnoty a další chyby
Pokud zvolíte sloupec, který nelze použít v relaci, zobrazí se vedle sloupce červený symbol X. Pokud chcete zobrazit zprávu s dalšími informacemi o problému, můžete ukazatel myši pozastavit nad ikonou chyby. K problémům, které můžou znemožnit vytvoření relace mezi vybranými sloupci, patří následující:
| Problém nebo zpráva | Řešení |
|---|---|
| Relaci nelze vytvořit, protože oba vybrané sloupce obsahují duplicitní hodnoty. | Pokud chcete vytvořit platnou relaci, musí alespoň jeden sloupec vybrané dvojice obsahovat pouze jedinečné hodnoty. Sloupce můžete upravit tak, aby se odebraly duplicity, nebo můžete obrátit pořadí sloupců tak, aby se sloupec, který obsahuje jedinečné hodnoty, použil jako související vyhledávací sloupec. |
| Sloupec obsahuje hodnotu null nebo prázdnou hodnotu. | Datové sloupce nelze vzájemně spojit s hodnotou null. Pro každý řádek musí existovat hodnota v obou sloupcích, které se používají v relaci. |
Viz také
| Article | Description |
|---|---|
| Vytvoření relace mezi dvěma tabulkami | Popisuje, jak ručně vytvořit relaci mezi dvěma tabulkami. |
| Odstranit relace | Popisuje, jak odstranit relaci a důsledky odstranění relací. |
| Obousměrné křížové filtry | Popisuje obousměrné křížové filtrování pro související tabulky. Filtrační kontext jedné tabulkové relace lze použít při dotazování přes druhou tabulkovou relaci, pokud jsou tabulky propojeny a jsou definovány obousměrné křížové filtry. |