Vzťahy modelov v aplikácii Power BI Desktop

Tento článok sa zameriava na modelárov importovaných údajových pracujúcich s aplikáciou Power BI Desktop. Ide o dôležitú tému navrhovania modelu nevyhnutnú pre poskytovanie intuitívnych, presných a optimálnych modelov.

Podrobnejšie rozobraté informácie o optimálnom návrhu modelu vrátane rolí a vzťahov tabuliek nájdete v téme Vysvetlenie hviezdicovej schémy a jej dôležitosti pre Power BI.

Účel vzťahov

Vzťah modelov šíri filtre použité v stĺpci jednej tabuľky modelu do inej tabuľky modelu. Filtre sa budú šíriť, kým bude existovať cesta vzťahu, ktorú môžete sledovať, čo môže zahŕňať šírenie do viacerých tabuliek.

Cesty vzťahov sú deterministické, čo znamená, že filtre sa vždy šíria rovnakým spôsobom a bez náhodných variácií. Vzťahy však môžu byť zakázané alebo môže byť kontext filtra upravený výpočtami modelu, ktoré používajú konkrétne funkcie jazyka DAX. Ďalšie informácie nájdete nižšie v tomto článku v téme Relevantné funkcie jazyka DAX.

Dôležité

Vzťahy modelu nevynucuje integritu údajov. Ďalšie informácie nájdete nižšie v tomto článku v téme Vyhodnocovanie vzťahov, ktorá vysvetľuje, ako sa vzťahy modelu správajú, keď sa pri vašich údajoch vyskytnú problémy s integritou údajov.

Pomocou animovaného príkladu vzťahy šíria filtre takto.

Animovaný diagram šírenia filtra vzťahu.

Model sa v tomto príklade skladá zo štyroch tabuliek: Kategória, Produkt, Rok a Predaj. Tabuľka Kategória je prepojiť s tabuľkou Produkt a tabuľka Produkt je prepojiť s tabuľkou Predaj . Tabuľka Rok je prepojiť aj s tabuľkou Predaj . Všetky vzťahy sú typu One-to-many (ktorých podrobnosti sú popísané ďalej v tomto článku).

Dotaz, ktorý možno vytvoril vizuál karty Power BI, požaduje celkový počet predajov pri objednávkach vytvorených pre jednu kategóriu, Cat-A a pre jeden rok CY2018. Preto sa zobrazujú použité v tabuľkách Kategória a Rok . Filter v tabuľke Kategória sa rozšíri do tabuľky Produkt , aby izoloval dva produkty priradené ku kategórii Cat-A. Filtre tabuľky Produkt sa potom rozšíria do tabuľky Predaj, aby sa izolovali len dva riadky predaja pre tieto produkty. Tieto dva riadky predaja predstavujú predaj produktov priradených ku kategórii Cat-A. Ich kombinované množstvo je 14 jednotiek. Filter tabuľky Rok sa zároveň rozšíri ďalej, aby mohol filtrovať tabuľku Predaj. Výsledkom je jeden riadok predaja priradený k produktom priradeným ku kategórii Cat-A, ktorý bol objednaný v roku CY2018. Hodnota množstva vrátená dotazom je 11 jednotiek. Všimnite si, že pri použití viacerých filtrov na tabuľku (napríklad pri tabuľke Predaj v tomto príklade) ide vždy o operáciu and, ktorá vyžaduje, aby všetky podmienky boli pravdivé.

Použitie princípov návrhu hviezdicovej schémy

Na vytvorenie modelu obsahujúceho tabuľky dimenzií a faktov odporúčame uplatniť princípy návrhu hviezdicovej schémy . V službe Power BI je bežné vynucovať pravidlá, ktoré filtrujú tabuľky dimenzií, čím umožňujú vzťahy modelov efektívne šíriť tieto filtre do tabuliek faktov.

Nasledujúci obrázok je diagram modelu dátového modelu analýzy predaja Adventure Works. Zobrazuje návrh hviezdicovej schémy obsahujúci jednu tabuľku faktov s názvom Sales ( Predaj). Ďalšie štyri tabuľky sú tabuľky dimenzií, ktoré podporujú analýzu mierok predaja podľa dátumu, štátu, oblasti a produktu. Všimnite si modelové vzťahy, ktoré spájajú všetky tabuľky. Tieto vzťahy šíria filtre (priamo alebo nepriamo) do tabuľky Predaj .

Snímka obrazovky diagramu modelu aplikácie Power BI Desktop obsahujúcej tabuľky a vzťahy, ako je popísané v predchádzajúcom odseku.

Odpojené tabuľky

Je nezvyčajné, že tabuľka modelu nie je prepojená s inou tabuľkou modelu. Takáto tabuľka v platnom návrhu modelu je popísaná ako odpojená tabuľka. Odpojená tabuľka nemá šíriť filtre do iných tabuliek modelov. Namiesto toho prijíma vstup používateľa (možno s vizuálom rýchleho filtra), čo umožňuje modelovým výpočtom zmysluplne používať vstupnú hodnotu. Zoberme si napríklad odpojenú tabuľku, ktorá sa načíta s rozsahom hodnôt výmenných kurzov. Ak je použité filtrovanie podľa hodnoty jednej sadzby, výraz mierky môže túto hodnotu použiť na konverziu hodnôt predaja.

Parameter hypotézy v aplikácii Power BI Desktop je funkcia, ktorá vytvára odpojenú tabuľku. Ďalšie informácie nájdete v téme Vytvorenie a používanie parametra hypotézy na vizualizáciu premenných v aplikácii Power BI Desktop.

Vlastnosti vzťahov

Vzťah modelov prepája jeden stĺpec tabuľky s jedným stĺpcom v inej tabuľke. (Existuje jeden špeciálny prípad, v ktorom táto požiadavka nie je pravdivá a vzťahuje sa iba na vzťahy viacerých stĺpcov v modeloch DirectQuery. Ďalšie informácie nájdete v článku o funkcii COMBINEVALUES jazyka DAX.)

Poznámka

Nie je možné prepojiť stĺpec s iným stĺpcom v tej istej tabuľke. Tento koncept je niekedy zamieňaný s možnosťou definovať obmedzenie cudzieho kľúča relačnej databázy, ktorý samostatne odkazuje na tabuľku. Tento koncept relačnej databázy môžete použiť na ukladanie vzťahov nadradených a podriadených vzťahov (napríklad každý záznam zamestnanca je prepojený s "nadriadeným" zamestnancom). Nemôžete však použiť modelové vzťahy na generovanie hierarchie modelu na základe tohto typu vzťahu. Ak chcete vytvoriť hierarchiu typu nadradený-podriadený, pozrite si tému Nadradené a podriadené funkcie.

Typy údajov stĺpcov

Typ údajov pre stĺpec vzťahu "od" aj "do" by mal byť rovnaký. Práca so vzťahmi definovanými v stĺpcoch typu DateTime sa nemusí správať tak, ako by sa očakávalo. Nástroj, ktorý ukladá údaje služby Power BI, používa iba typy údajov Typu dátumu a času. Typy údajov Dátum, Čas a Dátum/Čas/Časové pásmo sú implementované na začiatok vizualizácie formátovania služby Power BI. Všetky objekty závislé od modelu sa budú v nástroji naďalej zobrazovať ako dátum a čas (napríklad vzťahy, skupiny atď.). To znamená, že ak používateľ vyberie v prípade takýchto stĺpcov položku Date (Dátum ) z karty Modelovanie , stále sa neregistrujú ako dátumy s rovnakým dátumom, pretože časť údajov o čase sa stále zvažuje motorom. Prečítajte si ďalšie informácie o spracovávaní typov dátumu a času. Ak chcete opraviť správanie, typy údajov v stĺpcoch by mali byť aktualizované v Editor Power Query aby sa z importovaných údajov odstránila časť Čas, takže keď nástroj spracováva údaje, hodnoty sa zobrazia rovnako.

Kardinalita

Každý vzťah modelu je definovaný typom kardinality. Existujú štyri možnosti typu kardinality predstavujúce charakteristiky údajov v prepojených stĺpcoch "od" a "do". Strana "one" znamená, že stĺpec obsahuje jedinečné hodnoty. Strana "many" znamená, že stĺpec môže obsahovať duplicitné hodnoty.

Poznámka

Ak sa operácia obnovenia údajov pokúsi načítať duplicitné hodnoty do stĺpca "one", celé obnovenie údajov zlyhá.

Všetky štyri možnosti sú spolu s ich krátkymi zápismi popísané v nasledujúcom zozname s odrážkami:

  • Vzťah jedného k mnohému (1:*)
  • Vzťah viacerých s jednou (*:1)
  • Vzťah jedného k jednému (1:1)
  • Vzťah viacerých ľu k viacerým (*:*)

Keď v aplikácii Power BI Desktop vytvoríte vzťah, návrhár automaticky rozpozná a nastaví typ kardinality. Aplikácia Power BI Desktop dotazuje model, aby vedel, ktoré stĺpce obsahujú jedinečné hodnoty. V prípade modelov importu používa internú štatistiku úložiska. V prípade modelov DirectQuery odosiela dotazy profilovania do zdroja údajov. Niekedy sa však môže aplikácia Power BI Desktop pomýliť. Problém sa môže zobraziť, ak sa tabuľky nenaplnili údajmi, alebo preto, že stĺpce, pri ktorých očakávate, že obsahujú duplicitné hodnoty, aktuálne obsahujú jedinečné hodnoty. V oboch prípadoch môžete aktualizovať typ kardinality, pokiaľ ľubovoľný vedľajší stĺpec strany "one" obsahuje jedinečné hodnoty (alebo sa tabuľka ešte nenaplnila riadkami údajov).

Kardinalita typu One-to-many (a many-to-one)

Možnosti kardinality one-to-many a many-to-one sú v podstate rovnaké a zároveň sú najbežnejšími typmi kardinality.

Pri konfigurácii vzťahu typu one-to-many alebo many-to-one si vyberiete ten, ktorý zodpovedá poradiu, v ktorom sú stĺpce prepojené. Pouvažujte nad tým, ako by ste nakonfigurli vzťah z tabuľky Produkt do tabuľky Predaj pomocou stĺpca IDProduktu, ktorý sa nachádza v každej tabuľke. Typ kardinality by bol one-to-many, pretože stĺpec IDProduktu v tabuľke Produkt obsahuje jedinečné hodnoty. Ak ste vytvárali vzťah s tabuľkami v opačnom smere, Sales to Product (Predaj ) a Product (Produkt), kardinalita by bola many-to-one.

Kardinalita typu one-to-one

Vzťah one-to-one znamená, že oba stĺpce obsahujú jedinečné hodnoty. Tento typ kardinality nie je bežný a pravdepodobne predstavuje neoptimálny návrh modelu z dôvodu uloženia nadbytočných údajov.

Ďalšie informácie o používaní tohto typu kardinality nájdete v téme Pokyny na používanie vzťahov typu One-to-one.

Kardinalita typu many-to-many

Vzťah typu many-to-many znamená, že oba stĺpce môžu obsahovať duplicitné hodnoty. Tento typ kardinality sa používa zriedkavo. Zvyčajne je užitočný pri navrhovaní zložitých požiadaviek na model. Môžete ju použiť na vytvorenie vzťahov medzi faktami typu many-to-many alebo na vytvorenie vzťahu medzi faktami s vyššou granularnou. Keď sú napríklad cieľové fakty predaja uložené na úrovni kategórie produktu a tabuľka dimenzií produktu je uložená na úrovni produktu.

Pokyny na používanie tohto typu kardinality nájdete v téme Pokyny na používanie vzťahov typu Many-to-many.

Poznámka

Typ kardinality Many-to-many je podporovaný pre modely vyvinuté pre Power BI Report Server v januári 2024 a novšie verzie.

Tip

V zobrazení modelu aplikácie Power BI Desktop môžete interpretovať typ kardinality vzťahu tak, že sa pozriete na indikátory (1 alebo *) na oboch stranách línie vzťahu. Ak chcete určiť, ktoré stĺpce sú prepojené, budete musieť zvýrazniť stĺpce výberom alebo podržaním kurzora nad líniou vzťahu.

Snímka obrazovky dvoch tabuliek v diagrame modelu so zvýraznenými indikátormi kardinality.

Smer krížového filtrovania

Každý vzťah modelu je definovaný pomocou smeru krížového filtrovania. Vaše nastavenie určuje smery, ktorými sa filtre budú šíriť. Možné možnosti krížového filtrovania závisia od typu kardinality.

Typ kardinality Možnosti krížového filtrovania
Vzťah jedného k mnohému (alebo viaceré k jednému) Jeden
Oba
Dvojstranné Oba
Vzťah viacerých ľu k viacerým iným Jednoduchý (Tabuľka1 do Tabuľky2)
Jednoduchý (Tabuľka2 do Tabuľky1)
Oba

Jednoduchý smer krížového filtrovania znamená "jeden smer", možnosť Obe znamená "obidva smery". Vzťah, ktorý filtruje v oboch smeroch, sa bežne označuje ako obojsmerný.

V prípade vzťahov typu one-to-many je smer krížového filtrovania vždy zo strany "one" a voliteľne zo strany "many" (obojsmerný). V prípade vzťahov one-to-one je smer krížového filtrovania vždy z oboch tabuliek. Napokon, pri vzťahoch typu many-to-many môže byť smer krížového filtrovania buď z jednej z tabuliek alebo z oboch tabuliek. Všimnite si, že keď typ kardinality obsahuje stranu "one", z tejto strany sa tieto filtre vždy rozšíria.

Keď je smer krížového filtrovania nastavený na hodnotu Oba, sprístupní sa ďalšia vlastnosť. Môže použiť obojsmerné filtrovanie, keď Power BI vynucuje pravidlá zabezpečenia na úrovni riadkov (RLS). Ďalšie informácie o zabezpečení na úrovni riadkov nájdete v téme Zabezpečenie na úrovni riadkov (RLS) v aplikácii Power BI Desktop.

Pomocou výpočtu modelu môžete upraviť smer krížového filtrovania vzťahu vrátane vypnutia šírenia filtrov. Dosiahne sa použitím funkcie CROSSFILTER jazyka DAX.

Majte na pamäti, že obojsmerné vzťahy môžu mať negatívny vplyv na výkon. Okrem toho môžu mať pokusy o konfiguráciu obojsmerného vzťahu za následok nejednoznačné cesty šírenia filtrov. V tomto prípade sa v aplikácii Power BI Desktop môže nepodarí potvrdiť zmenu vzťahu a upozorní vás chybovým hlásením. Niekedy vám však aplikácia Power BI Desktop môže umožniť definovať nejednoznačné cesty vzťahov medzi tabuľkami. Riešenie nejednoznačnosti cesty vzťahov je popísané ďalej v tomto článku.

Obojsmerné filtrovanie odporúčame používať len podľa potreby. Ďalšie informácie nájdete v téme Pokyny na dvojsmerné vzťahy.

Tip

V zobrazení modelu aplikácie Power BI Desktop môžete interpretovať smer krížového filtrovania vzťahu tým, že si všimnete šípky v rámci línie vzťahu. Jedna šípka predstavuje filter s jedným smerovaním v smere šípky. dvojitá šípka predstavuje obojsmerný vzťah.

Snímka obrazovky dvoch tabuliek v diagrame modelu so zvýraznenou šípkou krížového filtra.

Aktivovať tento vzťah

Medzi dvomi tabuľkami modelu môže byť len jedna aktívna cesta na šírenie filtra. Je však možné zaviesť ďalšie cesty vzťahov, tieto vzťahy však musíte nastaviť ako neaktívne. Neaktívne vzťahy sa môžu aktivovať iba počas vyhodnocovania výpočtu modelu. Dosiahne sa použitím funkcie USERELATIONSHIP jazyka DAX.

Vo všeobecnosti odporúčame definovať aktívne vzťahy vždy, keď je to možné. Rozširujú rozsah a potenciál toho, ako môžu autori zostáv používať váš model. Použitie iba aktívnych vzťahov znamená, že v modeli by sa mali duplikovať tabuľky dimenzií, ktoré majú funkciu roly.

Za určitých okolností však môžete pre tabuľku dimenzií zohrávať roly definovať jeden alebo viac neaktívnych vzťahov. Tento návrh môžete brať do úvahy v týchto prípadoch:

  • Pre vizuály zostáv neexistuje žiadna požiadavka na súbežné filtrovanie podľa rôznych rolí.
  • Funkciu DAX môžete použiť USERELATIONSHIP na aktiváciu konkrétneho vzťahu pre príslušné výpočty modelu.

Ďalšie informácie nájdete v téme Pokyny na pomoc pri aktívnych a neaktívnych vzťahoch.

Tip

V zobrazení modelu aplikácie Power BI Desktop môžete interpretovať aktívny a neaktívny stav vzťahu. Aktívny vzťah je vyjadrený pevnou čiarou; neaktívny vzťah je vyjadrený ako prerušovaná čiara.

Snímka obrazovky dvoch tabuliek v diagrame modelu a dvoch vzťahov. jedna plná čiara pre aktívnu a jednu prerušovanú čiaru pre neaktívne

Predpokladať použitie referenčnej integrity

Vlastnosť Predpokladať použitie referenčnej integrity je k dispozícii iba pre vzťahy typu one-to-many a one-to-one medzi dvomi tabuľkami režimu úložiska DirectQuery, ktoré patria do rovnakej skupiny zdrojov. Túto vlastnosť môžete povoliť len vtedy, keď stĺpec strany "many" neobsahuje hodnoty NULL.

Ak je táto možnosť povolená, natívne dotazy odoslané do zdroja údajov sa spoločne pripoja k dvom tabuľkám pomocou operátora , INNER JOIN a OUTER JOINnie . Hoci to závisí od konkrétnych detailov zdroja údajov, zapnutím tejto vlastnosti zvyčajne zvýšite výkon dotazu.

Vždy povoľte túto vlastnosť, keď medzi oboma tabuľkami existuje obmedzenie cudzieho kľúča databázy. Aj keď obmedzenie cudzieho kľúča neexistuje, zvážte povolenie vlastnosti za predpokladu, že ste si istí, že existuje integrita údajov.

Dôležité

Ak by mala byť ohrozená integrita údajov, vnútorné spojenie odstráni nespárované riadky medzi tabuľkami. Zoberme si napríklad tabuľku modelu Predaj s hodnotou stĺpca IDProduktu, ktorá neexistuje v súvisiacej tabuľke Produkt. Šírenie filtrov z tabuľky Produkt do tabuľky Predaj odstráni riadky predaja neznámych produktov. Výsledkom bude podhodnotenie výsledkov predaja.

Ďalšie informácie nájdete v téme Predpoklad nastavení referenčnej integrity v aplikácii Power BI Desktop.

Relevantné funkcie jazyka DAX

Existuje niekoľko funkcií jazyka DAX, ktoré sú relevantné pre modelové vzťahy. V nasledujúcom zozname s odrážkami je každá funkcia stručne opísaná:

  • RELATED: Načíta hodnotu zo strany "one" vzťahu. Je užitočný vtedy, keď zahŕňa výpočty z rôznych tabuliek, ktoré sa vyhodnocujú v kontexte riadkov.
  • RELATEDTABLE: Načíta tabuľku riadkov zo strany "many" vzťahu.
  • USERELATIONSHIP: Umožňuje výpočet s použitím neaktívneho vzťahu. (Technicky platí, že táto funkcia upravuje hmotnosť konkrétneho neaktívneho vzťahu modelu, ktorý pomáha ovplyvniť jej použitie.) Je to užitočné, ak váš model obsahuje tabuľku dimenzií, ktorá má funkciu roly, a vy sa rozhodnete z tejto tabuľky vytvoriť neaktívne vzťahy. Túto funkciu môžete použiť aj na vyriešenie nejednoznačnosti v cestách filtra.
  • CROSSFILTER: Upravuje smer krížového filtrovania vzťahu (k jednému alebo obom) alebo zakazuje šírenie filtra (žiadne). Je užitočný vtedy, keď potrebujete zmeniť alebo ignorovať vzťahy modelu počas vyhodnocovania konkrétneho výpočtu.
  • COMBINEVALUES: Spojí dva alebo viacero textových reťazcov do jedného. Účelom tejto funkcie je podpora vzťahov medzi viacerými stĺpcami v modeloch DirectQuery, keď tabuľky patria do rovnakej skupiny zdrojov.
  • TREATAS: Použije výsledok výrazu tabuľky ako filtre na stĺpce z nesúvisiacej tabuľky. Je užitočný v rozšírených scenároch, keď chcete vytvoriť virtuálny vzťah počas vyhodnocovania konkrétneho výpočtu.
  • Nadradené a podriadené funkcie: Skupina súvisiacich funkcií, ktoré môžete použiť na generovanie vypočítaných stĺpcov na naturalizáciu hierarchie nadradených a podriadených prvkov. Tieto stĺpce potom môžete použiť na vytvorenie hierarchie s pevnými úrovňami.

Vyhodnocovanie vzťahov

Vzťahy modelov sú z pohľadu vyhodnocovania klasifikované buď ako normálne alebo ako obmedzené. Nie je to konfigurovateľná vlastnosť vzťahu. V skutočnosti je odvodená od typu kardinality a zdroja údajov dvoch prepojených tabuliek. Je dôležité pochopiť typ hodnotenia, pretože v prípade ohrozenia integrity údajov môže mať vplyv alebo dosah na výkon. Tieto dôsledky a dôsledky sú popísané v tejto téme.

Na úplné pochopenie vyhodnocovania vzťahov je však najskôr potrebné čiastočne oboznámiť sa s teóriou modelovania.

Model importu alebo DirectQuery čerpá všetky svoje údaje buď z vyrovnávacej pamäte Vertipaq alebo zdrojovej databázy. V oboch prípadoch je služba Power BI schopná zistiť, že existuje strana vzťahu "one".

Zložený model však môže obsahovať tabuľky používajúcie rôzne režimy úložiska (import, DirectQuery alebo duálny) alebo viacero zdrojov DirectQuery. Každý zdroj importovaných údajov vrátane vyrovnávacej pamäte Vertipaq sa považuje za skupinu zdrojov. Vzťahy modelov možno potom klasifikovať ako v rámci skupiny zdrojov alebo medzi skupinami zdrojov. Vzťah v rámci skupiny zdrojov sa týka dvoch tabuliek v rámci skupiny zdrojov, zatiaľ čo vzťah medzi skupinami zdrojov sa týka tabuliek v rámci dvoch skupín zdrojov. Všimnite si, že vzťahy v modeloch importu alebo DirectQuery sú vždy typu v rámci skupiny zdrojov.

Tu je príklad zloženého modelu.

Diagram zloženého modelu pozostávajúceho z dvoch skupín zdrojov.

V tomto príklade sa zložený model skladá z dvoch skupín zdrojov: skupiny zdrojov Vertipaq a skupiny zdrojov DirectQuery. Skupina zdrojov Vertipaq obsahuje tri tabuľky a skupina zdrojov DirectQuery obsahuje dve tabuľky. Existuje jeden vzťah typu medzi skupinami zdrojov, ktorý prepája tabuľku zo skupiny údajov Vertipaq s tabuľkou zo skupiny zdrojov DirectQuery.

Pravidelné vzťahy

Vzťah modelov je normálny , keď nástroj dotazov dokáže určiť stranu "one" vzťahu. Vtedy má potvrdenie, že stĺpec na strane "one" obsahuje jedinečné hodnoty. Vzťahy typu One-to-many v rámci skupiny zdrojov sú normálnymi vzťahmi.

V nasledujúcom príklade sú dva normálne vzťahy, oba označené ako R. Medzi vzťahmi možno nájsť vzťah typu one-to-many, ktorý je súčasťou skupiny zdrojov Vertipaq a vzťah typu one-to-many, ktorý je súčasťou zdroja DirectQuery.

Diagram zloženého modelu pozostávajúceho z dvoch skupín zdrojov s označenými normálnymi vzťahmi.

V prípade modelov importu, kde sú všetky údaje uložené vo vyrovnávacej pamäti Vertipaq, vytvorí Power BI v čase obnovenia údajov štruktúru údajov pre každý normálny vzťah. Štruktúry údajov pozostávajú z indexovaných priradení všetkých hodnôt stĺpcov k stĺpcom a ich cieľom je urýchliť spájanie tabuliek v čase dotazu.

V čase dotazu majú normálne vzťahy povolenie na rozšírenie tabuľky. Rozšírenie tabuľky má za následok vytvorenie virtuálnej tabuľky zahrnutím natívnych stĺpcov základnej tabuľky a následným rozšírením do súvisiacich tabuliek. V prípade importovaných tabuliek sa rozšírenie tabuľky vykonáva v nástroji dotazov. V prípade tabuliek DirectQuery sa vykonáva v natívnom dotaze odoslanom do zdrojovej databázy (ak nie je povolená vlastnosť Predpokladať použitie referenčnej integrity ). Nástroj dotazov potom čerpá z rozšírenej tabuľky, aplikuje filtre a zoskupuje podľa hodnôt v stĺpcoch rozšírenej tabuľky.

Poznámka

Neaktívne vzťahy sa tiež rozbalia, a to aj v prípade, že vzťah nie je použitý vo výpočte. Obojsmerné vzťahy nemajú na expanziu tabuľky žiadny vplyv.

V prípade vzťahov typu one-to-many sa rozšírenie tabuľky uskutočňuje zo strany "many" do strany "one" pomocou sémantiky LEFT OUTER JOIN . Keď na strane "one" neexistuje zodpovedajúca hodnota zo strany "one", do tabuľky na strane "one" sa pridá prázdny virtuálny riadok. Toto správanie sa vzťahuje len na pravidelné vzťahy, nie na obmedzené vzťahy.

Rozšírenie tabuľky sa vyskytuje aj pri vzťahoch one-to-one v rámci skupiny zdrojov, ale pri použití FULL OUTER JOIN sémantiky. Tento typ spojenia zaistí, že prázdne virtuálne riadky sa v prípade potreby pridajú na oboch stranách.

Prázdne virtuálne riadky sú prakticky neznámymi členmi. Neznámi členovia predstavujú porušenie referenčnej integrity, keď strana "many" nemá na strane "one" zodpovedajúcu hodnotu. V ideálnom prípade by tieto prázdne hodnoty nemali existovať. Možno ich odstrániť čistením alebo opravou zdrojových údajov.

Tu je ukážka použitia rozšírenia tabuľky pomocou animovaného príkladu.

Animovaný diagram rozšírenia tabuľky.

Model sa v tomto príklade skladá z troch tabuliek: Kategória, Produkt a Predaj. Tabuľka Kategória je pre vzťah medzi tabuľkou Produkt vzťahom typu One-to-many a tabuľka Produkt je prepojiť s tabuľkou Predaj vzťahom typu One-to-many. Tabuľka Kategória obsahuje dva riadky, tabuľka Produkt obsahuje tri riadky a tabuľka Predaj obsahuje päť riadkov. Na oboch stranách všetkých vzťahov existujú zhodné hodnoty, čo znamená, že neexistujú porušenia referenčnej integrity. Zobrazí sa čas dotazu rozšírenej tabuľky. Tabuľka sa skladá zo stĺpcov všetkých troch tabuliek. Je to vlastne denormalizovaná perspektíva údajov obsiahnutých v troch tabuľkách. Nový riadok sa pridá do tabuľky Predaj a má hodnotu identifikátora výroby (9), ktorá nemá v tabuľke Produkt žiadnu zodpovedajúcu hodnotu. Ide o porušenie referenčnej integrity. V rozbalenej tabuľke obsahuje nový riadok hodnoty (Prázdne) pre stĺpce tabuľky Kategória a Produkt .

Obmedzené vzťahy

Vzťah modelov je obmedzený, keď nie je zaručená strana "one". Obmedzený vzťah sa môže vyskytnúť z dvoch dôvodov:

  • Vzťah používa kardinalitu typu many-to-many (dokonca aj vtedy, ak jeden alebo oba stĺpce obsahujú jedinečné hodnoty).
  • Typ vzťahu je medzi skupinami zdrojov (čo môže nastať iba v prípade zložených modelov).

V nasledujúcom príklade sú dva obmedzené vzťahy, oba označené ako L. Medzi vzťahmi možno nájsť vzťah typu many-to-many, ktorý je súčasťou skupiny zdrojov Vertipaq a vzťah typu one-to-many medzi skupinami zdrojov.

Diagram zloženého modelu pozostávajúceho z dvoch tabuliek s označenými obmedzenými vzťahmi.

V prípade modelov importu sa pre obmedzené vzťahy nikdy nevytvárajú štruktúry údajov. V takom prípade služba Power BI vyrieši spojenia tabuliek v čase dotazu.

Rozšírenie tabuľky sa nikdy nevyskytuje v prípade obmedzených vzťahov. Spojenia tabuliek sa dosahujú pomocou INNER JOIN sémantiky, preto sa nepridávajú prázdne virtuálne riadky kompenzujú porušenie referenčnej integrity.

S obmedzenými vzťahmi súvisia aj ďalšie obmedzenia:

  • Funkciu RELATED jazyka DAX nemožno použiť na načítanie hodnôt stĺpcov zo strany "one".
  • Vynucovanie zabezpečenia na úrovni riadkov (RLS) má obmedzenia topológie.

Tip

V zobrazení modelu aplikácie Power BI Desktop môžete interpretovať vzťah ako obmedzený. Obmedzený vzťah je znázornený značkami pripomínanými zátvorky ( ) za ukazovateľmi kardinality.

Snímka obrazovky dvoch tabuliek v diagrame modelu so zvýrazneným obmedzeným vzťahom.

Riešenie nejednoznačnosti cesty vzťahov

Obojsmerné vzťahy môžu zavádzať viacero ciest šírenia filtrov medzi tabuľkami modelov, a teda aj nejednoznačné. Pri vyhodnocovaní nejednoznačnosti Power BI vyberie cestu distribúcie filtra podľa svojej priority a hmotnosti.

Priorita

Prioritné vrstvy definujú postupnosť pravidiel, ktoré Power BI používa na vyriešenie nejednoznačnosti cesty vzťahov. Prvá zhoda pravidiel určuje cestu, ktorú bude Power BI sledovať. Každé nižšie uvedené pravidlo popisuje postup filtrov zo zdrojovej tabuľky do cieľovej tabuľky.

  1. Cesta pozostávajúca zo vzťahov typu one-to-many.
  2. Cesta pozostávajúca zo vzťahov typu one-to-many alebo many-to-many.
  3. Cesta pozostávajúca zo vzťahov typu many-to-one.
  4. Cesta pozostávajúca zo vzťahov one-to-many zo zdrojovej tabuľky k medziľahlej tabuľke, za ktorou nasledujú vzťahy typu many-to-one z priebežnej tabuľky do cieľovej tabuľky.
  5. Cesta pozostávajúca zo vzťahov one-to-many alebo many-to-many zo zdrojovej tabuľky na medziútvarovú tabuľku, za ktorou nasledujú vzťahy typu many-to-one alebo many-to-many zo strednej tabuľky do cieľovej tabuľky.
  6. Akákoľvek iná cesta.

Keď je vzťah súčasťou všetkých dostupných ciest, odstráni sa zo všetkých ciest.

Hrúbka

Každý vzťah v ceste má váhu. V predvolenom nastavení je hrúbka každého vzťahu rovnaká, pokiaľ sa nepoužije funkcia USERELATIONSHIP . Hmotnosť cesty je maximálna hmotnosť všetkých hmotností vzťahov na ceste. Power BI používa váhy ciest na riešenie nejednoznačnosti medzi viacerými cestami v rovnakej prioritnej úrovni. Nevyberie cestu s nižšou prioritou, ale vyberie cestu s vyššou váhou. Počet vzťahov v ceste neovplyvňuje váhu.

Váhu vzťahu môžete ovplyvniť pomocou funkcie USERELATIONSHIP . Hmotnosť sa určuje na základe vnorenia úrovne volania tejto funkcie, kde najvnútornejšie volanie dostane najvyššiu váhu.

Zvážte nasledujúci príklad. Mierka Predaj produktov priraďuje vyššiu váhu vzťahu medzi položkami Predaj[IDProduktu] a Produkt[IDProduktu], za ktorým nasleduje vzťah medzi položkami Inventory[ProductID] a Product[ProductID].

Product Sales = 
CALCULATE(
    CALCULATE(
        SUM(Sales[SalesAmount]), 
        USERELATIONSHIP(Sales[ProductID], Product[ProductID])
    ),
    USERELATIONSHIP(Inventory[ProductID], Product[ProductID])
)

Poznámka

Ak Power BI zistí viaceré cesty s rovnakou prioritou a rovnakou hmotnosťou, vráti nejednoznačnú chybu cesty. V tomto prípade musíte vyriešiť nejednoznačnosť tým, že ovplyvníte váhy vzťahov pomocou funkcie USERELATIONSHIP alebo odstránením alebo úpravou vzťahov modelu.

Uprednostnenie výkonu

Nasledujúci zoznam zoradí výkon filtrovania propagácie od najrýchlejšieho po najpomalší:

  1. Vzťahy typu One-to-many v rámci skupiny zdrojov
  2. Vzťahy typu Many-to-many dosiahnuté pomocou sprostredkovateľskou tabuľkou, ktoré zahŕňajú aspoň jeden obojsmerný vzťah
  3. Vzťahy typu many-to-many
  4. Vzťahy medzi skupinami zdrojov

Ďalšie informácie o tomto článku nájdete v nasledujúcich zdrojoch: