Pokyny na dvojsmerné vzťahy
Tento článok je určený pre modelárov údajových pracujúcich s aplikáciou Power BI Desktop. Nájdete v ňom pokyny týkajúce sa toho, kedy sa majú vytvárať obojsmerné modelové vzťahy. Obojsmerný vzťah je taký, ktorý filtruje údaje v oboch smeroch.
Poznámka
Úvod o vzťahoch v modeloch nie je zahrnutý v tomto článku. Ak nie ste úplne oboznámení so vzťahmi, ich vlastnosťami alebo o tom, ako ich konfigurovať, odporúčame si najprv prečítať článok Modelové vzťahy v aplikácii Power BI Desktop .
Dôležité je aj to, aby ste pochopili návrh hviezdicovej schémy. Ďalšie informácie nájdete v téme Vysvetlenie hviezdicovej schémy a dôležitosti pre Power BI.
Vo všeobecnosti odporúčame minimalizovať používanie obojsmerných vzťahov. Môžu mať negatívny vplyv na výkon dotazu na model a prípadne priniesla používateľom zostáv mätúce prostredie.
Existujú tri scenáre, v ktorých môže obojsmerné filtrovanie vyriešiť konkrétne požiadavky:
Špeciálne modelové vzťahy
Obojsmerné vzťahy zohrávajú dôležitú rolu pri vytváraní nasledujúcich dvoch špeciálnych typov modelových vzťahov:
- One-to-one: Všetky vzťahy typu one-to-one musia byť obojsmerné – nie je možné nakonfigurovať ich inak. Vo všeobecnosti neodporúčame vytvárať tieto typy vzťahov. Kompletné informácie a alternatívne návrhy nájdete v téme Pokyny na vedenie vzťahov typu One-to-one.
- Many-to-many: Pri vytváraní vzťahu medzi dvomi tabuľkami dimenzií sa vyžaduje premosťovacia tabuľka. Vyžaduje sa obojsmerný filter, aby sa zabezpečilo rozšírenie filtrov do premosťovačnej tabuľky. Ďalšie informácie nájdete v téme Pokyny na vytvorenie vzťahov typu Many-to-many (Vytvorenie vzťahov dimenzií typu Many-to-many).
Položky rýchleho filtra "s údajmi"
Obojsmerné vzťahy môžu poskytnúť rýchle filtre, ktoré obmedzia položky na také, v ktorých existujú údaje. (Ak poznáte excelové kontingenčné tabuľky a rýchle filtre, pri získavaní údajov zo sémantického modelu služby Power BI alebo modelu služby Analysis Services je to predvolené správanie.) Ak chcete lepšie vysvetliť, čo to znamená, najskôr zvážte nasledujúci diagram modelu.
Prvá tabuľka sa nazýva Customer a obsahuje tri stĺpce: Krajina – oblasť, Zákazník a KódZákazného zákazníka. Druhá tabuľka sa nazýva Produkt a obsahuje tri stĺpce: Farba, Produkt a SKU. Tretia tabuľka sa nazýva Sales (Predaj) a obsahuje štyri stĺpce: CustomerCode (KódZákazného zákazníka), OrderDate (DátumObjednávky), Quantity (Množstvo) a SKU (SKU). Tabuľky Zákazník a Produkt sú tabuľky dimenzií a každá z nich má vzťah one-to-many k tabuľke Predaj . Každý vzťah sa filtruje v jednom smere.
S cieľom pomôcť opísať, ako funguje obojsmerné filtrovanie, bol diagram modelu upravený tak, aby sa zobrazili riadky tabuľky. Všetky príklady v tomto článku vychádzajú z týchto údajov.
Poznámka
V diagrame modelu aplikácie Power BI Desktop nie je možné zobraziť riadky tabuľky. Robí sa to v tomto článku, aby sme podporili diskusiu s jasnými príkladmi.
Podrobnosti riadkov pre tri tabuľky sú popísané v nasledujúcom zozname s odrážkami:
- Tabuľka Customer má dva riadky:
- KódZákateľa CUST-01, Zákazník Zákazník-1, Krajina – oblasť USA
- KódZákateľa CUST-02, Zákazník Zákazník-2, Krajina – oblasť Austrália
- Tabuľka Produkt obsahuje tri riadky:
- SKU CL-01, Produkt Tričko, Farba Zelená
- SKU CL-02, Product Jeans, Modrá farba
- SKU AC-01, Produkt Klobúk, Farba Modrá
- Tabuľka Predaj obsahuje tri riadky:
- DátumObjednávky 1. januára 2019, KódZákatku CUST-01, SKU CL-01, Množstvo 10
- DátumObjednávky 2. februára 2019, KódZákatku CUST-01, SKU CL-02, Množstvo 20
- DátumObjednávky 3. marca 2019, KódZákatku CUST-02, SKU CL-01, Množstvo 30
Teraz zvážte nasledujúcu stranu zostavy.
Strana sa skladá z dvoch rýchlych filtrov a vizuálu karty. Prvý rýchly filter je Krajina – oblasť a obsahuje dve položky: Austrália a USA. Aktuálne filtruje podľa položky Austrália. Druhý rýchly filter je Produkt a obsahuje tri položky: Klobúk, Džínsy a Tričko. Nie sú vybraté žiadne položky (čo znamená, že nie sú filtrované žiadne produkty ). Vizuál karty zobrazuje množstvo 30.
Keď používatelia zostavy vytvárajú rýchle filtre podľa Austrálie, možno budete chcieť obmedziť rýchly filter Produkt na zobrazenie položiek, v ktorých sa údaje vzťahujú na austrálsky predaj. To je to, čo majú zobrazovať položky rýchleho filtra "s údajmi". Toto správanie môžete dosiahnuť nakonfigurovaním vzťahu medzi tabuľkami Produkt a Predaj na filtrovanie v oboch smeroch.
Rýchly filter Produkt teraz uvádza jednu položku: Tričko. Táto položka predstavuje jediný produkt, ktorý sa predáva austrálskym zákazníkom.
Najskôr starostlivo zvážite, či tento návrh funguje pre používateľov zostáv. Pre niektorých používateľov zostáv je toto prostredie mätúce. Nechápu, prečo sa položky rýchleho filtra pri interakcii s ostatnými rýchlymi filtrami dynamicky zobrazujú alebo miznú.
Ak sa rozhodnete zobraziť položky rýchleho filtra "s údajmi", neodporúčame konfigurovať obojsmerné vzťahy. Obojsmerné vzťahy vyžadujú viac spracovania a môžu mať negatívny vplyv na výkon dotazov, najmä ak sa počet obojsmerných vzťahov vo vašom modeli zvýši.
Rovnaký výsledok môžete dosiahnuť aj lepším spôsobom: Namiesto používania obojsmerných filtrov môžete použiť filter na úrovni vizuálu na samotný rýchly filter Produkt .
Teraz si zoberme, že vzťah medzi tabuľkami Produkt a Predaj sa už nefiltruje v oboch smeroch. Do tabuľky Predaj sa pridala nasledujúca definícia mierky.
Total Quantity = SUM(Sales[Quantity])
Ak chcete zobraziť položky rýchleho filtra Produkt "s údajmi", je potrebné filtrovať ho podľa mierky Celkové množstvo pomocou podmienky "nie je prázdne".
Analýza od dimenzie k dimenzii
Iný scenár, ktorý zahŕňa obojsmerné vzťahy, zaobchádza s tabuľkou faktov ako s premosťovanou tabuľkou. Týmto spôsobom podporuje analýzu údajov tabuľky dimenzií v kontexte filtra inej tabuľky dimenzií.
Pomocou vzorového modelu v tomto článku zvážte, ako možno odpovedať na nasledujúce otázky:
- Koľko farieb sa predávalo austrálskym zákazníkom?
- Koľko krajín alebo oblastí zakúpilo džínsy?
Na obe otázky je možné odpovedať bez sumarizácie údajov v premosťovanej tabuľke faktov. Vyžaduje sa však, aby sa filtre šírili z jednej tabuľky dimenzií do druhej. Po rozšírení filtrov prostredníctvom tabuľky faktov je možné vytvoriť súhrn stĺpcov tabuľky dimenzií pomocou funkcie jazyka DAX DISTINCTCOUNT – prípadne funkcií MIN a MAX jazyka DAX.
Keďže tabuľka faktov sa správa ako premosťovacia tabuľka, môžete postupovať podľa pokynov na vzťah typu many-to-many a vytvoriť vzťah medzi dvomi tabuľkami dimenzií. Bude potrebná konfigurácia aspoň jedného vzťahu na filtrovanie v oboch smeroch. Ďalšie informácie nájdete v téme Pokyny na vytvorenie vzťahov typu Many-to-many (Vytvorenie vzťahov dimenzií typu Many-to-many).
Ako už bolo v tomto článku popísané, tento návrh pravdepodobne bude mať za následok negatívny vplyv na výkon a prostredie používateľov v súvislosti s položkami rýchleho filtra "s údajmi". Preto namiesto toho odporúčame aktivovať obojsmerné filtrovanie v definícii mierky pomocou funkcie CROSSFILTER DAX. Funkciu CROSSFILTER možno použiť na úpravu smerov filtrovania – alebo dokonca na zakázanie vzťahu – počas vyhodnocovania výrazu.
Zvážte pridanie nasledujúcej definície mierky do tabuľky Predaj . V tomto príklade je modelový vzťah medzi tabuľkami Zákazník a Predaj nakonfigurovaný na filtrovanie v jednom smere.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Počas vyhodnocovania výrazu mierky Predaj v rôznych krajinách vzťah medzi tabuľkami Zákazník a Predaj sa filtruje v oboch smeroch.
V nasledujúcom vizuáli tabuľky sa nachádzajú štatistiky pre každý predávaný produkt. Stĺpec Quantity je jednoduchým súčtom hodnôt množstva. Stĺpec Predaj v rôznych krajinách predstavuje jedinečný počet hodnôt Krajina – oblasť všetkých zákazníkov, ktorí produkt zakúpili.
Súvisiaci obsah
Ďalšie informácie súvisiace s týmto článkom nájdete v nasledujúcich zdrojoch:
- Vzťahy modelov v aplikácii Power BI Desktop
- Vysvetlenie hviezdicovej schémy a jej dôležitosti pre Power BI
- Pokyny na prístup k vzťahom one-to-one
- Pokyny na vzťahy typu many-to-many
- Pokyny na riešenie problémov so vzťahmi
- Máte nejaké otázky? Skúste sa spýtať Komunita Power BI
- Návrhy? Prispejte nápadmi na zlepšenie služby Power BI