Získávání dat z jedné tabulky do druhé
Data se ukládají různými způsoby a většinou poměrně odděleně od dalších dat, která potřebujeme pro svůj report. Představit si to můžeme pomocí souboru v Excelu, ve kterém se data například o zákaznících nacházejí na listu Zákazník a data o objednávkách na listu Objednávky.
Většinou existují klíče, kterými se tyto na první pohled oddělené tabulky dají spojit. V našem případě dle následujících obrázků jde o číselný identifikátor s názvem ID_Zákazníka, který v obou listech obsahuje tytéž hodnoty jen s rozdílným počtem výskytů. Sloupec ID_Zákazníka by například pomocí funkce SVYHLEDAT() umožnil doplnit jednotlivá data z listu Zákazník do listu Objednávky.
Jak provést podobné získání dat z jedné tabulky do druhé v Power BI?
Relace! Dobře, půjdeme na to pomalu a řekneme si, že tu existuje více možností, jak toho dosáhnout:
Sloučení dotazů v Power Query
Při otevření této volby jsme vyzváni pro výběr dotazu (tabulky), který chceme s aktuálně otevřeným dotazem sloučit pomocí výběru sloupců s klíči. Power Query nás nechá i zvolit typ spojení, zda se jedná o Left Join (Levý vnější), Right Join (Pravný vnější) a podobně. Získáme tak do aktuálního dotazu nový sloupec, který obsahuje celý připojený dotaz a můžeme si z něj vybrat sloupce, které potřebujeme.
LOOKUP funkce
Zde se dostáváme do podobné syntaxe jako má již dříve zmíněné SVYHLEDAT v excelu. Pokud do modelu nemůžeme nijak zasáhnout a upravit ho, pak je zde možnost vytvořit si počítaný sloupec, který přenese konkrétní jiný sloupec na základě hledané hodnoty z jiné tabulky do námi používané. Syntaxe funkce pak je:
- LOOKUPVALUE( „Sloupec který chcete získat“, „Sloupec, který se bude prohledávat“, „Konkrétní hodnota nebo sloupec, odkud se bude brát hledaná hodnota“, [„Možnost alternativního výsledku, pokud hodnota nebyla nalezena“])
Tato volba však není zcela ideální pro datovou velikost modelu.
Relace
Nyní se dostáváme k tomu, proč funkce LOOKUP postrádá větší smysl. Power BI umí vytvořit relace mezi tabulkami podobně jako databáze. Využívá k tomu systém klíčů uvnitř tabulek. Velmi podobně jako v úvodu, když jsem ukazoval ID_Zaměstnance. Tyto relace mezi tabulkami nám umožňují využít vztah mezi daty z propojených tabulek a navzájem je využívat bez nutnosti tvořit nové sloupce.
Při najetí na relaci se rozsvítí klíče, pomocí kterých jsme tabulky propojili. Jako v tomto případě ID a ID_Zboží. Mezi tabulkami vznikají kardinality 1:1, 1:N, M:N. M a N je v Power BI reprezentováno pomocí symbolu * . Tato kardinalita reprezentuje vztah klíče z jedné tabulky ke klíči z druhé tabulky. Dle výše uvedené obrázku tedy platí, že jde o kardinalitu 1:N, při čemž jeden řádek v tabulce Zboží, má 0 až N výskytů svého klíče v tabulce Objednávky. Což je samozřejmé, protože počítáme s tím, že jeden typ zboží budeme prodávat vícekrát a nejde jen o jednorázový prodej, který se již nebude opakovat.
Power BI automaticky rozpoznává vztah mezi klíči a kardinalitu doplňuje samo. To ale neznamená, že ji nemůžeme upravit. Při dvojkliku na relaci se otevře její editace, kde kromě kardinality můžeme přenastavit i konkrétní sloupce s klíči, směr křížového filtru, a jestli je relace aktivována či nikoli. Křížový filtr znamená, která tabulka je svým způsobem nadřazená tabulce druhé, a může sloužit k jejímu zafiltrování při výpočtech nebo při zobrazování ve vizuálech.
Jak vytvořím relaci?
Relace jde vytvořit dvojím způsobem. Vynechávám to, že v základním nastavení vám Power BI vytvoří relace samo při nahrání tabulek, pokud se jména sloupců a obsah shoduje. První možností je kliknutí na konkrétní řádek označující sloupec v tabulce a přetažení ho na sloupec klíče v druhé tabulce. Relace se vytvoří a automaticky se nastaví směr filtru, kardinalita a aktivovanost vazby. Další možnost je přes funkci Spravovat relace, kde kromě všech aktivních relací, spuštění automatického rozpoznání relací jejich úprav/odstranění, můžeme i nové relace vytvářet.
Musím zde upozornit, že Power BI nepodporuje cyklické vazby, které je nutno realizovat pomocí kombinací výše zmíněných metod. Osobně se přikláním k tvorbě jedné velké tabulky „Star modelu“, která nám pomůže tyto problémy s cyklickou vazbou odstranit. Dále je nezbytné vědět, že dvě tabulky mohou být propojeny pomocí více relací, ale jen jedna z nich je vždy aktivní.
Tečkovaná čára je neaktivní relace. Tato neaktivní relace se využívá jen ve dvou případech. V prvním, kdy není využívána relace aktivní neboli hlavní, a nebo pokud ve vzorci s výpočtem využíváme definování užívané relace za pomoci funkce USERELATIONSHIP().