Práce s relacemi a kardinalitou

Dokončeno

Na rozdíl od jiných systémů pro správu databází má Power BI koncept směrovosti relace. Tato směrovost hraje důležitou roli při filtrování dat mezi více tabulkami. Při načítání dat Power BI automaticky vyhledává relace, které v datech existují, podle názvů odpovídajících sloupců. K ruční úpravě těchto možností můžete použít také možnost Spravovat relace.

Například jste získali mnoho tabulek z databáze Sales a následující obrázek je příkladem sémantického modelu. Power BI automaticky rozpoznal několik relací, ale nedokáže rozeznat, co znamenají. Chcete zajistit, aby tyto relace přesně odrážely ty, které existují ve vašich datech.

Snímek obrazovky s ukázkovým sémantickým modelem

Relace

Tady jsou různé typy relací, které najdete v Power BI.

Relace M:1 (*:1) nebo 1:N (1: *)

  • Popisuje relaci, ve které máte v jednom sloupci mnoho instancí určité hodnoty, které souvisí pouze s jednou jedinečnou odpovídající instancí v jiném sloupci.

  • Popisuje směrovost mezi tabulkami faktů a dimenzí.

  • Je to nejběžnější typ směrovosti, který je výchozím nastavením v Power BI při automatickém vytváření relací.

Příkladem relace 1:N by byla relace mezi tabulkami CountryName s názvy zemí a Territory s názvy území, kde může být mnoho území spojeno s jedinou jedinečnou zemí.

Snímek obrazovky relace M:1

Relace 1:1:1:

  • Popisuje relaci, ve které je mezi dvěma tabulkami společná jenom jedna instance určité hodnoty.

  • Vyžaduje jedinečné hodnoty v obou tabulkách.

  • Nedoporučuje se, protože tato relace ukládá redundantní informace a naznačuje, že model není správně navržen. Lepším postupem je tyto tabulky zkombinovat.

Příkladem relace 1:1 by bylo, kdybyste měli produkty a ID produktů ve dvou různých tabulkách. Vytvoření relace 1:1 je redundantní a tyto dvě tabulky by se měly zkombinovat.

Snímek obrazovky relace 1:1

Relace M:N (.):

  • Popisuje relaci, kdy mají dvě tabulky mnoho společných hodnot.

  • Nevyžaduje jedinečné hodnoty v žádné z tabulek v relaci.

  • Nedoporučuje se, protože nejedinečné hodnoty zavádí nejednoznačnost a uživatelé nemusí vědět, na co jednotlivé sloupce hodnot odkazují.

Následující obrázek například ukazuje relaci M:N mezi tabulkami Sales s prodeji a Order s objednávkami u sloupce OrderDate s daty objednávek, protože více prodejů může k sobě mít přidruženo více objednávek. To zavádí nejednoznačnost, protože obě tabulky mohou mít stejné datum objednávky.

Snímek obrazovky s relací M:N

Směr křížového filtrování

Data je možné filtrovat na jedné nebo obou stranách relace.

V případě jednosměrného křížového filtru:

  • K filtrování dat lze použít pouze jednu tabulku v relaci. Tabulku 1 lze například filtrovat podle tabulky 2, ale tabulku 2 nelze filtrovat podle tabulky 1.

    Tip

    Podle směru šipky v relaci mezi tabulkami zjistíte, kterým směrem bude filtrování probíhat. Obvykle chcete, aby tyto šipky směřovaly k tabulce faktů.

  • V případě relace 1:N nebo M:1 bude směr křížového filtru ze strany "jedna", což znamená, že filtrování proběhne v tabulce s mnoha hodnotami.

V případě obou směrů křížového filtru neboli obousměrného křížového filtrování:

  • K filtrování dat lze použít jednu tabulku v relaci. Tabulku dimenzí je například možné filtrovat prostřednictvím tabulky faktů a tabulky faktů je možné filtrovat prostřednictvím tabulky dimenzí.

  • Používání obousměrného křížového filtrování u relací M:N může znamenat nižší výkon.

Upozornění týkající se obousměrného křížového filtrování: Relace s obousměrným křížovým filtrováním byste neměli povolit, pokud zcela nerozumíte tomu, jaké to může mít důsledky. Povolení může vést k nejednoznačnosti, převzorkování, neočekávaným výsledkům a možnému snížení výkonu.

Kardinalita a směr křížového filtru

U vztahů 1:1 je jedinou dostupnou možností obousměrné křížové filtrování. Data je možné filtrovat na obou stranách této relace a výsledkem je jedna odlišná jednoznačná hodnota. Můžete například filtrovat podle jednoho ID produktu, aby se vám vrátil jediný produkt, nebo můžete filtrovat podle produktu, aby se vám vrátilo jediné ID produktu.

U vztahů M:N se můžete rozhodnout, jestli budete filtrovat jedním směrem nebo oběma směry pomocí obousměrného křížového filtrování. Nejednoznačnost, která je spojená s obousměrným křížovým filtrováním, je větší v relaci M:N, protože mezi různými tabulkami existuje více cest. Pokud vytvoříte míru, výpočet nebo filtr, může při filtrování dat docházet k nezamýšleným důsledkům a v závislosti na tom, kterou relaci Power BI zvolí při použití daného filtru, se může konečný výsledek lišit. To platí také u obousměrných relací, při jejich používání byste proto měli být obezřetní.

Z tohoto důvodu jsou relace M:N nebo obousměrné relace složité. Pokud si nejste jistí, jak vaše data vypadají v agregované podobě, můžou tyto typy otevřených relací s více směry filtrování zavádět více cest v datech.

Vytváření relací M:N

Představte si scénář, ve kterém máte za úkol vytvořit vizuál, který bude zkoumat rozpočty u zákazníků a účtů. Ve stejném účtu můžete mít více zákazníků a u stejného zákazníka můžete mít více účtů, takže víte, že musíte vytvořit relaci M:N.

Snímek obrazovky s relací M:N

Pokud chcete vytvořit tuto relaci, přejděte na Správa relací>Nový. Ve výsledném okně vytvořte relaci mezi sloupcem Customer ID v tabulkách CustomerTable a AccountTable. Relace je nastavená na M:N a typ filtru je v obou směrech. Okamžitě budete upozorněni, že tento typ relace byste měli používat pouze v případě, že se očekává, že žádný sloupec nebude mít jedinečné hodnoty, protože byste mohli dostat neočekávané hodnoty. Vzhledem k tomu, že chcete filtrovat v obou směrech, vyberte obousměrné křížové filtrování.

Vyberte OK. Úspěšně jste vytvořili relaci M:N.

Snímek obrazovky relace M:N ve správě relace

Další informace najdete v článku Relace M:N v Power BI.