Vytváření a správa relací v Power BI Desktopu

Pokud máte více tabulek, pravděpodobně provedete analýzu pomocí dat ze všech těchto tabulek. Relace mezi těmito tabulkami jsou nezbytné k přesnému výpočtu výsledků a zobrazení správných informací v sestavách. Ve většině případů nemusíte nic dělat. Funkce automatického rozpoznávání to udělá za vás. Někdy ale možná budete muset vytvořit relace sami nebo potřebujete provést změny relace. V obou směrech je důležité porozumět relacím v Power BI Desktopu a jak je vytvářet a upravovat.

Automatické rozpoznávání během načítání

Pokud dotazujete dvě nebo více tabulek najednou, pokusí se Power BI Desktop najít a vytvořit relace za vás. Automaticky se nastaví možnosti kardinality relace, směr křížového filtru a Nastavit tuto relaci jako aktivní . Power BI Desktop se podívá na názvy sloupců v tabulkách, na které se dotazujete, a určí, jestli existují nějaké potenciální relace. Pokud existují, vytvoří se tyto relace automaticky. Pokud Power BI Desktop nedokáže s vysokou mírou spolehlivosti určit shodu, relace se nevytvoří. Dialogové okno Spravovat relace ale můžete použít k ručnímu vytvoření nebo úpravě relací.

Vytvoření relace s automatickým rozpoznáváním

Na kartě Modelování vyberte Možnost Spravovat automatické rozpoznávání relací>.

Animation showing how to create a relationship with autodetect.

Ruční vytvoření relace

  1. Na kartě Modelování vyberte Spravovat relace>Nové.

  2. V dialogovém okně Vytvořit relaci vyberte v prvním rozevíracím seznamu tabulku. Vyberte sloupec, který chcete použít v relaci.

  3. V rozevíracím seznamu druhé tabulky vyberte druhou požadovanou tabulku v relaci. Vyberte druhý sloupec, který chcete použít, a pak vyberte OK.

    Animation showing how to create a manual relationship.

Power BI Desktop ve výchozím nastavení automaticky konfiguruje možnosti Kardinality (směr), Směr křížového filtru a Nastavit tuto relaci jako aktivní pro novou relaci. V případě potřeby ale můžete tato nastavení změnit. Další informace najdete v tématu Vysvětlení dalších možností.

Pokud žádná z tabulek vybraných pro relaci nemá jedinečné hodnoty, zobrazí se následující chyba: Jeden ze sloupců musí obsahovat jedinečné hodnoty. Nejméně jedna tabulka v relaci musí mít jedinečný, jedinečný seznam hodnot klíčů, což je běžný požadavek pro všechny technologie relačních databází.

Pokud k této chybě dojde, můžete problém vyřešit několika způsoby:

  • Pomocí funkce Odebrat duplicity vytvořte sloupec s jedinečnými hodnotami. Nevýhodou tohoto přístupu je, že při odebrání duplicitních řádků může dojít ke ztrátě informací. Klíč (řádek) je často z dobrého důvodu duplikován.
  • Přidejte do modelu zprostředkující tabulku tvořenou seznamem jedinečných klíčových hodnot, která se pak propojí s oběma původními sloupci v relaci.

Další informace najdete v tomto blogovém příspěvku.

Případně můžete v rozloženích diagramu zobrazení modelu přetáhnout sloupec z jedné tabulky do sloupce v jiné tabulce a vytvořit relaci.

Úprava relace

Relace v Power BI můžete upravit dvěma způsoby.

První metodou úprav relace je použití relací úprav v podokně Vlastnosti v zobrazení modelu, kde můžete vybrat libovolnou čáru mezi dvěma tabulkami a zobrazit možnosti relace v podokně Vlastnosti . Nezapomeňte rozbalit podokno Vlastnosti a zobrazit možnosti relace.

Screenshot of adjusting relationships in the properties pane.

Můžete se také podívat na video s ukázkou úprav relací v podokně Vlastnosti.

Druhou metodou úprav relace je dialogové okno Editor relací, které můžete otevřít mnoha způsoby v Power BI Desktopu. Následující seznam ukazuje různé způsoby otevření dialogového okna Editor relací:

V zobrazení sestav proveďte některou z následujících věcí:

  • Vyberte kartu Správa relací na pásu karet >Modelování, pak vyberte relaci a vyberte Upravit.
  • V seznamu Pole vyberte tabulku a pak vyberte na pásu karet >Nástroje tabulky Spravovat relace, pak vyberte relaci a pak vyberte Upravit.

V zobrazení Data vyberte pás karet >Nástroje tabulky Spravovat relace, pak vyberte relaci a pak zvolte Upravit.

V zobrazení Modelu proveďte některou z následujících věcí:

  • Vyberte pás karet> Domů Spravovat relace, pak zvolte relaci a pak vyberte Upravit.
  • Poklikejte na libovolnou čáru mezi dvěma tabulkami.
  • Klikněte pravým tlačítkem myši na libovolnou čáru mezi dvěma tabulkami a pak zvolte Vlastnosti.
  • Vyberte libovolnou čáru mezi dvěma tabulkami a v podokně Vlastnosti zvolte Otevřít editor relací.

Nakonec můžete relaci upravit z libovolného zobrazení, kliknout pravým tlačítkem myši nebo vybrat tři tečky, abyste se dostali do místní nabídky libovolné tabulky, pak vyberte Spravovat relace, vyberte relaci a pak vyberte Upravit.

Následující obrázek znázorňuje snímek obrazovky okna Upravit relaci .

Screenshot of the edit relationship window.

Úprava relací pomocí různých metod

Použití dialogového okna Upravit relace je více řízené prostředí pro úpravy relací v Power BI a aktuálně je ve verzi Preview. Náhled dat můžete zobrazit v každé tabulce. Při výběru různých sloupců okno automaticky ověří relaci a nabídne odpovídající kardinalitu a výběry křížového filtru.

Úprava relací v podokně Vlastnosti je zjednodušený přístup k úpravám relací v Power BI. Zobrazí se jenom názvy tabulek a sloupce, ze kterých si můžete vybrat, nezobrazí se náhled dat a vámi provedené volby relace se ověří jenom po výběru možnosti Použít změny. Použití podokna Vlastnosti a jeho zjednodušeného přístupu snižuje počet dotazů generovaných při úpravách relace, což může být důležité pro scénáře s velkými objemy dat, zejména při použití připojení DirectQuery. Relace vytvořené pomocí podokna Vlastnosti mohou být také pokročilejší než relace, které je možné vytvořit v dialogovém okně Upravit relace.

Relace s vícenásobným výběrem můžete také vybrat v rozložení diagramu zobrazení modelu stisknutím klávesy Ctrl a výběrem více než jednoho řádku zvolit více relací. Běžné vlastnosti lze upravit v podokně Vlastnosti a Použít změny zpracuje změny v jedné transakci.

Jednoduché nebo vícenásobné relace můžete odstranit také stisknutím klávesy Delete na klávesnici. Akci odstranění nejde vrátit zpět, takže dialogové okno vás vyzve k potvrzení odstranění relací.

Důležité

Úpravy relací v podokně vlastností jsou aktuálně ve verzi Preview. Ve verzi Preview pravděpodobně budou probíhat změny funkcí a dokumentace. Tuto funkci musíte povolit v Power BI Desktopu tak, že přejdete na Možnosti souboru > a nastavení > Možností > náhledu funkcí a pak v části GLOBAL zaškrtnete políčko vedle podokna Relace.

Konfigurace více možností

Při vytváření nebo úpravě relace můžete nakonfigurovat další možnosti. Power BI Desktop ve výchozím nastavení automaticky konfiguruje více možností na základě nejlepšího odhadu, což se může pro každou relaci lišit na základě dat ve sloupcích.

Kardinalita

Možnost Kardinalita může mít jedno z následujících nastavení:

N:1 (*:1): Nejběžnějším výchozím typem relace je relace M:1. Znamená to, že sloupec v dané tabulce může mít více instancí hodnoty a druhá související tabulka, často označovaná jako vyhledávací tabulka, má pouze jednu instanci hodnoty.

Jedna k jedné (1:1):: V relaci 1:1 má sloupec v jedné tabulce pouze jednu instanci konkrétní hodnoty a druhá související tabulka má pouze jednu instanci konkrétní hodnoty.

Jedna k mnoha (1:*): V relaci 1:N má sloupec v jedné tabulce pouze jednu instanci konkrétní hodnoty a druhá související tabulka může mít více instancí hodnoty.

Mnoho až mnoho (*:*): U složených modelů můžete mezi tabulkami vytvořit relaci M:N, která eliminuje požadavky na jedinečné hodnoty v tabulkách. Zároveň to eliminuje předchozí alternativní řešení, například zavedení nových tabulek jen za účelem vytvoření relací. Další informace naleznete v tématu Relace s kardinalitou M:N.

Další informace o tom, kdy změnit kardinalitu, najdete v tématu Vysvětlení dalších možností.

Směr křížového filtru

Možnost Směr křížového filtru může mít jedno z následujících nastavení:

Obojí: Pro účely filtrování se obě tabulky považují za jednu tabulku. Nastavení Obě funguje dobře s jednou tabulkou, která obsahuje mnoho vyhledávacích tabulek, které ji obklopují. Příkladem je tabulka skutečných hodnot prodeje s vyhledávací tabulkou pro své oddělení. Tato konfigurace se často nazývá konfigurace hvězdicového schématu (centrální tabulka s několika vyhledávacími tabulkami). Pokud ale máte dvě nebo více tabulek, které mají také vyhledávací tabulky (s některými běžnými), nebudete chtít použít nastavení Obě . Pokud chcete pokračovat v předchozím příkladu, máte v tomto případě také tabulku prodeje rozpočtu, která zaznamenává cílový rozpočet pro každé oddělení. Tabulka oddělení je připojená k prodeji i k tabulce rozpočtu. Vyhněte se nastavení Obě pro tento druh konfigurace.

Jeden: Nejběžnější výchozí směr, což znamená filtrování voleb v propojených tabulkách fungují na tabulce, ve které se agregují hodnoty. Pokud importujete Power Pivot v datovém modelu Excelu 2013 nebo starším, budou mít všechny relace jeden směr.

Další informace o tom, kdy změnit směr křížového filtru, najdete v tématu Vysvětlení dalších možností.

Aktivovat tuto relaci

Když je tato možnost zaškrtnutá, relace slouží jako aktivní výchozí relace. V případech, kdy mezi dvěma tabulkami existuje více než jedna relace, poskytuje aktivní relace způsob, jak Power BI Desktopu automaticky vytvářet vizualizace, které obsahují obě tabulky.

Další informace o tom, kdy nastavit určitou relaci jako aktivní, najdete v tématu Vysvětlení dalších možností.

Principy relací

Po propojení dvou tabulek s relací můžete pracovat s daty v obou tabulkách, jako by šlo o jednu tabulku. Pak se nemusíte starat o podrobnosti relace nebo tyto tabulky před importem zploštět do jedné tabulky. V mnoha situacích může Power BI Desktop automaticky vytvářet relace za vás. Pokud ale Power BI Desktop nedokáže určit s vysokou mírou jistoty, že by měla existovat relace mezi dvěma tabulkami, relace se automaticky nevytvoří. V takovém případě to musíte udělat.

Pojďme si projít rychlý kurz, abyste lépe ukázali, jak fungují relace v Power BI Desktopu.

Tip

Tuto lekci můžete dokončit sami:

  1. Zkopírujte následující tabulku ProjectHours do excelového listu (s výjimkou názvu), vyberte všechny buňky a pak vyberte Vložit>tabulku.
  2. V dialogovém okně Vytvořit tabulku vyberte OK.
  3. Vyberte libovolnou buňku tabulky, vyberte Název tabulky Návrh>tabulky a pak zadejte ProjectHours.
  4. Totéž proveďte u tabulky CompanyProject .
  5. Importujte data pomocí funkce Načíst data v Power BI Desktopu. Vyberte dvě tabulky jako zdroj dat a pak vyberte Načíst.

První tabulka ProjectHours je záznam pracovních lístků, který zaznamenává počet hodin, které osoba pracovala na konkrétním projektu.

ProjectHours

Lístek Odesláno uživatelem Hodin Projekt DateSubmit
1001 Brewer, Alan 22 Modrý 1/1/2013
1 002 Brewer, Alan 26 Červený 2/1/2013
1003 Ito, Shu 34 Yellow 12/4/2012
1004 Brewer, Alan 13 Orange 1/2/2012
1005 Bowen, Eli 29 Fialová 10/1/2013
1006 Bento, Nuno 35 Zelený 2/1/2013
1007 Hamilton, David 10 Yellow 10/1/2013
1008 Han, Mu 28 Orange 1/2/2012
1009 Ito, Shu 22 Fialová 2/1/2013
1010 Bowen, Eli 28 Zelený 10/1/2013
1011 Bowen, Eli 9 Modrý 10/15/2013

Tato druhá tabulka , CompanyProject, je seznam projektů s přiřazenou prioritou: A, B nebo C.

Projekt společnosti

Projname Priorita
Modrý A
Červený T
Zelený C
Yellow C
Fialová T
Orange C

Všimněte si, že každá tabulka má sloupec projektu. Každý má trochu jiný název, ale hodnoty vypadají stejně. Tento rozdíl je důležitý a brzy se k němu vrátíme.

Teď, když máme naše dvě tabulky importované do modelu, vytvoříme sestavu. První věc, kterou chceme získat, je počet hodin odeslaných podle priority projektu, takže v podokně Pole vybereme Priorita a Hodiny.

Screenshot of the Priority and Hours fields selected from the Fields pane.

Pokud se podíváme na tabulku na plátně sestavy, uvidíte, že počet hodin je 256 pro každý projekt, což je také celkový součet. Je zřejmé, že toto číslo není správné. Proč? Je to proto, že nemůžeme vypočítat součet hodnot z jedné tabulky (Hodiny v tabulce Project), rozdělené podle hodnot v jiné tabulce (Prioritav tabulce Projekt společnosti) bez relace mezi těmito dvěma tabulkami.

Pojďme tedy vytvořit relaci mezi těmito dvěma tabulkami.

Pamatujete si ty sloupce, které jsme viděli v obou tabulkách s názvem projektu, ale s hodnotami, které vypadají podobně? Tyto dva sloupce použijeme k vytvoření relace mezi tabulkami.

Proč tyto sloupce? No, když se podíváme na sloupec Project v tabulce ProjectHours, vidíme hodnoty jako Modrá, Červená, Žlutá, Oranžová atd. Ve skutečnosti vidíme několik řádků, které mají stejnou hodnotu. V důsledku toho máme pro Project mnoho barevných hodnot.

Když se podíváme na sloupec ProjName v tabulce Projekt společnosti , vidíme, že pro název projektu existuje pouze jedna z hodnot barev. Každá hodnota barvy v této tabulce je jedinečná a to je důležité, protože mezi těmito dvěma tabulkami můžeme vytvořit relaci. V tomto případě relace M:1. V relaci M:1 musí alespoň jeden sloupec v jedné z tabulek obsahovat jedinečné hodnoty. U některých relací existuje několik dalších možností, na které se podíváme později. Prozatím vytvoříme relaci mezi sloupci projektu v každé z našich dvou tabulek.

Vytvoření nové relace

  1. Na kartě Modelování vyberte Spravovat relace.

  2. V části Spravovat relace vyberte Možnost Nový . Otevře se dialogové okno Vytvořit relaci , kde můžeme vybrat tabulky, sloupce a všechna další nastavení, která chceme pro relaci použít.

  3. V prvním rozevíracím seznamu vyberte jako první tabulku ProjectHours a pak vyberte sloupec Projekt . Tato strana je druhou stranou našeho vztahu.

  4. Ve druhém rozevíracím seznamu je projekt společnosti předem vybrán jako druhá tabulka. Vyberte sloupec ProjName. Tato strana je jednou stranou našeho vztahu.

  5. Přijměte výchozí hodnoty možností relace a pak vyberte OK.

    Screenshot of the Create relationship dialog box.

  6. V dialogovém okně Spravovat relace vyberte Zavřít.

V zájmu úplného zveřejnění jste právě vytvořili tento vztah těžkým způsobem. V dialogovém okně Spravovat relace jste mohli vybrat automatické rozpoznávání. Automatické rozpoznávání by ve skutečnosti automaticky vytvořilo relaci za vás při načtení dat, pokud by oba sloupce měly stejný název.

Teď se znovu podíváme na tabulku na plátně sestavy.

Screenshot of the Priority and Hours fields selected from the Fields pane with new relationship.

To vypadá mnohem lépe, že?

Když sečteme hodiny podle priority, Power BI Desktop vyhledá každou instanci jedinečných hodnot barev ve vyhledávací tabulce CompanyProject , vyhledá každou instanci každé z těchto hodnot v tabulce ProjectHours a pak vypočítá součet pro každou jedinečnou hodnotu.

S automatickým rozpoznáváním to nemusíte ani dělat.

Vysvětlení dalších možností

Když se vytvoří relace, a to buď s automatickým rozpoznáváním, nebo ručně, Power BI Desktop automaticky nakonfiguruje další možnosti na základě dat v tabulkách. Tyto další možnosti relace jsou umístěny v dolní části dialogových oken Vytvořit relaci a Upravit relaci .

Screenshot of the lower portion of the Create relationship dialog box showing Cardinality and Cross filter direction options.

Power BI tyto možnosti obvykle nastaví automaticky a nebudete je muset upravit. Existuje ale několik situací, kdy můžete chtít tyto možnosti nakonfigurovat sami.

Automatické aktualizace relací

Můžete spravovat, jak Power BI zpracovává a automaticky upravuje relace v sestavách a modelech. Pokud chcete určit, jak Power BI zpracovává možnosti relací, vyberte Možnosti souboru>a nastavení>Možnosti z Power BI Desktopu a pak v levém podokně vyberte Načíst data. Zobrazí se možnosti relací.

Screenshot of the Options box showing the Relationships settings in the Data Load tab.

Můžete vybrat a povolit tři možnosti:

  • Import relací ze zdrojů dat při prvním načtení: Tato možnost je ve výchozím nastavení vybraná. Když je tato možnost vybraná, Power BI kontroluje relace definované ve zdroji dat, například vztahy cizího klíče nebo primárního klíče v datovém skladu. Pokud takové relace existují, zrcadlí se do datového modelu Power BI při počátečním načtení dat. Tato možnost vám umožní rychle začít pracovat s modelem, a nemusíte je muset najít nebo definovat sami.

  • Aktualizace nebo odstranění relací při aktualizaci dat: Tato možnost není ve výchozím nastavení zaškrtnutá. Pokud ho vyberete, Power BI při aktualizaci sémantického modelu zkontroluje změny v relacích zdroje dat. Pokud se tyto relace změnily nebo odeberou, Power BI tyto změny zrcadlí ve vlastním datovém modelu, aktualizuje je nebo odstraní tak, aby odpovídaly.

    Upozorňující

    Pokud používáte zabezpečení na úrovni řádků, které závisí na definovaných relacích, nedoporučujeme tuto možnost vybírat. Pokud odeberete vztah, na který závisí nastavení zabezpečení na úrovni řádků, může být model méně zabezpečený.

  • Automatické rozpoznávání nových relací po načtení dat: Tato možnost je popsána v automatickém rozpoznávání během načítání.

Budoucí aktualizace dat vyžadují jinou kardinalitu.

Power BI Desktop obvykle dokáže automaticky určit nejlepší kardinalitu relace. Pokud potřebujete přepsat automatické nastavení, protože víte, že se data v budoucnu změní, můžete je změnit pomocí ovládacího prvku Kardinalita. Podívejme se na příklad, kde potřebujeme vybrat jinou kardinalitu.

Tabulka CompanyProjectPriority je seznam všech projektů společnosti a jejich priorita. Tabulka ProjectBudget je sada projektů, pro které byl schválen rozpočet.

CompanyProjectPriority

Projname Priorita
Modrý A
Červený T
Zelený C
Yellow C
Fialová T
Orange C

ProjectBudget

Schválené projekty BudgetAllocation AllocationDate
Modrý 40 000 12/1/2012
Červený 100 000 12/1/2012
Zelený 50 000 12/1/2012

Pokud vytvoříme relaci mezi sloupcem Schválené projekty v tabulce ProjectBudget a sloupcem ProjectName v tabulce CompanyProjectPriority , Power BI automaticky nastaví kardinalitu na jednu (1:1) a směr křížového filtru na Obě.

Screenshot of the Create relationship dialog box with Cardinality to One to one (1:1) and Cross filter direction to Both.

Důvodem, proč Power BI tato nastavení dělá, je, že pro Power BI Desktop je nejlepší kombinace těchto dvou tabulek:

Projname Priorita BudgetAllocation AllocationDate
Modrý A 40 000 12/1/2012
Červený T 100 000 12/1/2012
Zelený C 50 000 12/1/2012
Yellow C

Fialová T

Orange C

Mezi našimi dvěma tabulkami existuje relace 1:1, protože ve sloupci ProjName kombinované tabulky neexistují žádné opakující se hodnoty. Sloupec ProjName je jedinečný, protože každá hodnota nastane pouze jednou. Proto lze řádky ze dvou tabulek zkombinovat přímo bez duplicit.

Řekněme ale, že víte, že se data při příští aktualizaci změní. V aktualizované verzi tabulky ProjectBudget jsou teď další řádky pro projekty Modrá a Červená:

ProjectBudget

Schválené projekty BudgetAllocation AllocationDate
Modrý 40 000 12/1/2012
Červený 100 000 12/1/2012
Zelený 50 000 12/1/2012
Modrý 80 000 6/1/2013
Červený 90,000 6/1/2013

Tyto další řádky znamenají, že nejlepší kombinace těchto dvou tabulek teď vypadá takto:

Projname Priorita BudgetAllocation AllocationDate
Modrý A 40 000 12/1/2012
Červený T 100 000 12/1/2012
Zelený C 50 000 12/1/2012
Yellow C

Fialová T

Orange C

Modrý A 800 000 6/1/2013
Červený T 90000 6/1/2013

V této nové kombinované tabulce má sloupec ProjName opakující se hodnoty. Po aktualizaci tabulky nebudou mít dvě původní tabulky relaci 1:1. V tomto případě, protože víme, že tyto budoucí aktualizace způsobí, že sloupec ProjName bude mít duplicitní hodnoty, chceme nastavit kardinalitu na N na jednu (*:1), přičemž mnoho stran projektuBudgeta jedna strana na CompanyProjectPriority.

Úprava směru křížového filtru pro komplexní sadu tabulek a relací

U většiny relací je směr křížového filtru nastavený na Obě. Existují však některé méně časté okolnosti, kdy možná budete muset tuto možnost nastavit jinak než výchozí. Jedním z příkladů je, že importujete model ze starší verze Power Pivotu, kde je každá relace nastavená na jeden směr.

Nastavení Obě umožňuje Power BI Desktopu pracovat se všemi aspekty propojených tabulek, jako by se jedná o jednu tabulku. V některých situacích ale Power BI Desktop nemůže nastavit směr křížového filtru relace na Obě a zároveň zachovat jednoznačnou sadu výchozích hodnot dostupných pro účely vytváření sestav. Pokud směr křížového filtru relace není nastavený na Obě, je to obvykle proto, že by vznikla nejednoznačnost. Pokud vám výchozí nastavení křížového filtru nefunguje, zkuste ho nastavit na konkrétní tabulku nebo na obě.

Křížové filtrování s jedním směrem funguje v mnoha situacích. Pokud jste ve skutečnosti importovali model z Power Pivotu v Excelu 2013 nebo starším, nastaví se všechny relace na jeden směr. Jeden směr znamená, že filtrování voleb v propojených tabulkách funguje na tabulce, ve které probíhá agregační práce. Někdy může být pochopení křížového filtrování trochu obtížné, takže se podívejme na příklad.

Při křížovém filtrování s jedním směrem můžete vytvořit sestavu, která shrnuje hodiny projektu, a pak zvolit souhrn (nebo filtrování) podle tabulky CompanyProject a sloupce Priorita nebo tabulky CompanyEmployeee a jejího sloupce Město. Pokud ale chcete spočítat počet zaměstnanců na projekty (méně časté otázky), nebude to fungovat. Získáte sloupec hodnot, které jsou všechny stejné. V následujícím příkladu je směr křížového filtrování obou relací nastavený na jeden směr: směrem k tabulce ProjectHours . V kontejneru Hodnoty je pole Projekt nastaveno na Počet:

Screenshot of the visualization tab used with the Employee and Project fields.

Specifikace filtru bude přetékat z projektu Společnosti do ProjectHours (jak je znázorněno na následujícím obrázku), ale nebude tok do Projektu společnosti.

Diagram of a cross filtering example with flow from CompanyProject to ProjectHours.

Pokud ale nastavíte směr křížového filtrování na Obě, bude fungovat. Nastavení Obě umožňuje, aby specifikace filtru přetékala do aplikace CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Když je směr křížového filtrování nastavený na Obě, sestava se teď zobrazuje správně:

Screenshot of cross filtering direction set to Both.

Křížové filtrování obou směrů funguje dobře pro vzor relací mezi tabulkami, jako je vzor zobrazený dříve. Toto schéma se nejčastěji nazývá hvězdicové schéma, například takto:

Diagram of cross filtering both directions in star schema.

Směr křížového filtrování nefunguje dobře s obecnějším vzorem, který se často vyskytuje v databázích, například v tomto diagramu:

Diagram of cross filtering in both directions on a database pattern.

Pokud máte podobný vzor tabulky se smyčkami, křížové filtrování může vytvořit nejednoznačnou sadu relací. Pokud například sečtete pole z TableX a pak se rozhodnete filtrovat podle pole v tabulce TableY, není jasné, jak má filtr přecházet přes horní nebo dolní tabulku. Běžným příkladem tohoto typu modelu je TabulkaX jako tabulka prodejů se skutečnými daty a tabulka TableY, která má být rozpočtová data. Tabulky uprostřed jsou vyhledávací tabulky, které obě tabulky používají, například dělení nebo oblast.

Stejně jako u aktivních a neaktivních relací power BI Desktop neumožňuje nastavit relaci na Obě , pokud v sestavách vytvoří nejednoznačnost. Existuje několik různých způsobů, jak tuto situaci zvládnout. Tady jsou dva nejběžnější:

  • Odstraňte nebo označte relace jako neaktivní, aby se snížila nejednoznačnost. Pak můžete nastavit křížové filtrování relace jako Obě.
  • Přidejte tabulku dvakrát (s jiným názvem podruhé) a odstraňte smyčky. Tím se vytvoří vzor relací, jako je hvězdicové schéma. U hvězdicového schématu je možné nastavit všechny relace na obě.

Chybná aktivní relace

Když Power BI Desktop automaticky vytváří relace, někdy narazí mezi dvěma tabulkami na více než jednu relaci. V takovém případě je aktivní pouze jedna z relací. Aktivní relace slouží jako výchozí relace, takže když vyberete pole ze dvou různých tabulek, může Power BI Desktop automaticky vytvořit vizualizaci za vás. V některýchpřípadechch Pomocí dialogového okna Spravovat relace můžete nastavit relaci jako aktivní nebo neaktivní nebo nastavit aktivní relaci v dialogovém okně Upravit relaci .

Aby se zajistilo, že existuje výchozí relace, power BI Desktop umožňuje v daném okamžiku pouze jednu aktivní relaci mezi dvěma tabulkami. Proto musíte nejprve nastavit aktuální relaci jako neaktivní a pak nastavit relaci, kterou chcete aktivovat.

Podívejme se na příklad. První tabulka je ProjectTickets a druhá tabulka je EmployeeRole.

Projektovékety

Lístek Otevřeno Odesláno uživatelem Hodin Projekt DateSubmit
1001 Perham, Tom Brewer, Alan 22 Modrý 1/1/2013
1 002 Roman, Daniel Brewer, Alan 26 Červený 2/1/2013
1003 Roth, Daniel Ito, Shu 34 Yellow 12/4/2012
1004 Perham, Tom Brewer, Alan 13 Orange 1/2/2012
1005 Roman, Daniel Bowen, Eli 29 Fialová 10/1/2013
1006 Roth, Daniel Bento, Nuno 35 Zelený 2/1/2013
1007 Roth, Daniel Hamilton, David 10 Yellow 10/1/2013
1008 Perham, Tom Han, Mu 28 Orange 1/2/2012
1009 Roman, Daniel Ito, Shu 22 Fialová 2/1/2013
1010 Roth, Daniel Bowen, Eli 28 Zelený 10/1/2013
1011 Perham, Tom Bowen, Eli 9 Modrý 10/15/2013

EmployeeRole

Zaměstnanec Role
Bento, Nuno Projektový manažer
Bowen, Eli Vedoucí projektu
Brewer, Alan Projektový manažer
Hamilton, David Vedoucí projektu
Han, Mu Vedoucí projektu
Ito, Shu Vedoucí projektu
Perham, Tom Sponzor projektu
Roman, Daniel Sponzor projektu
Roth, Daniel Sponzor projektu

Ve skutečnosti existují dvě relace:

  • Between Employee in the EmployeeRole table and SubmittedBy in the ProjectTickets table.
  • Between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

Screenshot of a two-relationship example.

Pokud do modelu přidáme obě relace (nejprve otevřené), zobrazí se v dialogovém okně Spravovat relace aktivní:

Screenshot of a OpenedBy active in the Manage relationships dialog box.

Když teď vytvoříme sestavu, která používá pole Role a Zaměstnanec z role zaměstnance a pole Hodiny z projektových lístků ve vizualizaci projektových lístků na plátně sestavy, uvidíme jenom sponzory projektu, protože jsou jedinými sponzory projektu, kteří otevřeli lístek projektu.

Screenshot shows the Employee, Role, and Hours fields selected.

Aktivní relaci můžeme změnit a místo otevřeného uživatele získat odeslanou. V části Spravovat relace zrušte zaškrtnutí políčka ProjectTickets(OpenedBy) do vztahu EmployeeRole(Employee) a pak zaškrtněte relaci EmployeeRole(Employee) to Project Tickets(SubmittedBy).

Screenshot of changing the active relationship in the Manage relationship dialog box.

Zobrazení všech relací v zobrazení relace

V některých případech má váš model více tabulek a složitých relací mezi nimi. Zobrazení relací v Power BI Desktopu zobrazuje všechny relace v modelu, jejich směr a kardinalitu v snadno pochopitelném a přizpůsobitelném diagramu.

Další informace najdete v tématu Práce se zobrazením relací v Power BI Desktopu.

Řešení problému

Tato část obsahuje pokyny a informace o řešení potíží při práci s relacemi v Power BI.

Relace mezi poli nelze určit.

Power BI se pokusí zobrazit relevantní data ve vizuálech tím, že odvodí relace z použitého modelu. Někdy takové odvozy nejsou zřejmé a možná vás překvapí, že se ve vizuálu zobrazí chyba, která značí, že mezi určitými sloupci neexistuje žádný vztah.

Pokud chcete vysvětlit, jak Power BI určuje, jestli pole souvisí, pojďme pomocí ukázkového modelu ilustrovat několik scénářů v následujících částech. Následující obrázek znázorňuje ukázkový model, který použijeme v ukázkových scénářích.

Screenshot of a sample model used in troubleshooting scenarios.

Scénář 1: Tradiční hvězdicové schéma bez omezení míry. Když odkazujeme na ukázkový model na předchozím obrázku, podívejme se nejprve na pravou polovinu obrázků s tabulkami Vendor - Purchases - Product . Tento příklad je tradiční hvězdicové schéma s tabulkou faktů (Nákupy) a dvěma tabulkami dimenzí (Product a Vendor). Relace mezi tabulkami dimenzí a tabulkou faktů je 1 až N (jeden produkt odpovídá mnoha nákupům, jeden dodavatel odpovídá mnoha nákupům). V tomto typu schématu můžeme odpovědět na otázky, jako je Prodej pro produkt X? a Jaké prodeje máme pro Dodavatele Y? a Jaké produkty dodavatel Y prodává?

Pokud chceme korelovat produkty a dodavatele, můžeme to udělat tak, že se podíváme na tabulku Nákupy a zjistíme, jestli existuje položka se stejným produktem a dodavatelem. Ukázkový dotaz může vypadat jako v následujícím příkladu:

Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0

Jedná se where CountRows(Purchases)>0 o implicitní omezení, které by Power BI přidalo, aby se zajistilo vrácení relevantních dat. Díky této korelaci prostřednictvím tabulky Nákupy můžeme vrátit párování dodavatelů produktů, které mají v tabulce faktů alespoň jednu položku, párování, která mají smysl z hlediska dat. Můžete očekávat jakékoli nesmyslné kombinace product-vendor, pro které nikdy nebyl prodej (což by bylo zbytečné pro analýzu) se nezobrazí.

Scénář 2: K dispozici je tradiční hvězdicové schéma a omezení míry. V předchozím příkladu ve scénáři 1 platí, že pokud uživatel poskytuje omezení ve formě souhrnného sloupce (například suma, průměr/počet nákupů) nebo míry modelu (Distinct Count of VendID), může Power BI vygenerovat dotaz ve formě následujícího příkladu:

Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank

V takovém případě se Power BI pokusí vrátit kombinace, které mají smysluplné hodnoty pro omezení poskytnuté uživatelem (neprázdné). Power BI nemusí také přidávat vlastní implicitní omezení CountRows(Purchases)>0, například to, co bylo provedeno v předchozím scénáři 1, protože omezení poskytované uživatelem stačí.

Scénář 3: Není k dispozici žádné omezení míry a ne hvězdicové schéma. V tomto scénáři se zaměříme na střed modelu, kde máme tabulky Sales - Product - Purchases , kde máme jednu tabulku dimenzí (Product) a dvě tabulky faktů (Prodej, Nákupy). Vzhledem k tomu, že tento příklad není hvězdicovým schématem, nemůžeme odpovědět na stejný druh otázek jako ve scénáři 1. Řekněme, že se snažíme korelovat nákupy a prodeje, protože nákupy mají vztah M:1 s produktem a produktvztah 1 až N s prodejem. Prodej a nákupy jsou nepřímo M:N. Jeden produkt můžeme propojit s mnoha nákupy a jedním produktem na mnoho prodejů, ale nemůžeme propojit jeden prodej s mnoha nákupy nebo naopak. S mnoha prodeji můžeme propojit pouze mnoho nákupů.

Pokud se v této situaci pokusíme zkombinovat Purchase[VenID] a Sales[CustID] ve vizuálu, Power BI nemá konkrétní omezení, které může použít, protože relace M:N mezi těmito tabulkami. I když můžou existovat vlastní omezení (nemusí nutně vycházet z relací vytvořených v modelu), která se dají použít pro různé scénáře, Power BI nemůže odvodit výchozí omezení výhradně na základě relací. Pokud se Power BI pokusil vrátit všechny kombinace těchto dvou tabulek, vytvořil by velké křížové spojení a vrátilo by nerelevantní data. Místo toho Power BI vyvolá ve vizuálu chybu, například následující.

Screenshot of an error dialog when relationship can’t be inferred. Alternatively, Screenshot of an error dialog where relationship isn’t inferred.

Scénář 4: Zadané omezení bez hvězdicového schématu a míry Pokud vezmeme příklad ze scénáře 3 a přidáme omezení poskytnuté uživatelem ve formě souhrnného sloupce (například Count of Product[ProdID] nebo model measure (Sales[Total Qty]), Může Power BI vygenerovat dotaz ve formě Korelace Purchase[VenID] a Sales[CustID], kde MeasureConstraint není prázdný.

V tomto případě Power BI respektuje omezení uživatele jako jediné omezení, které power BI potřebuje použít, a vrátí kombinace, které pro něj vytvářejí neprázdné hodnoty. Uživatel provedl Power BI podle požadovaného scénáře a Power BI použije pokyny.

Scénář 5: Pokud je zadáno omezení míry, ale částečně souvisí se sloupci. Existují případy, kdy omezení míry poskytované uživatelem nesouvisí úplně se všemi sloupci ve vizuálu. Míra modelu vždy souvisí se vším. Power BI tento scénář považuje za černou skříňku při pokusu o vyhledání relací mezi sloupci ve vizuálu a předpokládá, že uživatel ví, co ho používá. Souhrnné sloupce ve formě souhrnů, průměrů a podobných souhrnů vybraných z uživatelského rozhraní ale můžou souviset pouze s podmnožinou sloupců/tabulek použitých ve vizuálu na základě relací tabulky, do které daný sloupec patří. Omezení se proto vztahuje na některé dvojice sloupců, ale ne pro všechny. V takovém případě se Power BI pokusí najít výchozí omezení, která může použít pro sloupce, které nesouvisí s omezením poskytnutým uživatelem (například ve scénáři 1). Pokud Power BI nenajde žádnou, vrátí se následující chyba.

Screenshot of an error dialog when Power BI can’t find default constraints.

Řešení chyb vztahu

Když se zobrazí chybová zpráva Nejde určit vztahy mezi poli , můžete se pokusit chybu vyřešit následujícím postupem:

  1. Zkontrolujte model. Nastaví se správně pro typy otázek, na které chcete odpovědět z analýzy? Můžete změnit některé relace mezi tabulkami? Můžete se vyhnout vytvoření nepřímého M:N?

    Zvažte převod schématu obráceného obrazce V na dvě tabulky a použijte mezi nimi přímou relaci M až N, jak je popsáno v použití relací M:N v Power BI Desktopu.

  2. Přidejte do vizuálu omezení ve formě souhrnného sloupce nebo míry modelu.

  3. Pokud se přidá souhrnný sloupec a stále dochází k chybě, zvažte použití míry modelu.

Další informace o modelech a relacích najdete v následujících článcích: