Zdieľať cez


Pokyny na dvojsmerné vzťahy

Tento článok je určený pre modelárov údajov, ktorí pracujú 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. Dôvodom je, že 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ú však 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 vzory návrhu nájdete v téme pokyny na vzťahov typu One-to-one.
  • Many-to-many: Keď satabuľkách dimenzií, vyžaduje sa 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 pokyny nana vzťahy typu many-to-many.

Možnosti rýchleho filtra "s údajmi"

Obojsmerné vzťahy môžu poskytnúť rýchle filtre, ktoré obmedzia možnosti na to, kde 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.

Diagram znázorňujúci model obsahujúci tri tabuľky. Návrh je popísaný v nasledujúcom odseku.

Prvá tabuľka sa nazýva Customer., a obsahuje tri stĺpce: Country-Region, Customera CustomerCode. Druhá tabuľka sa nazýva Producta obsahuje tri stĺpce: Color, Producta SKU. Tretia tabuľka sa nazýva Salesa obsahuje štyri stĺpce: CustomerCode, OrderDate, Quantitya SKU. tabuľky Customer a Product sú tabuľky dimenzií a každá z nich má vzťah "one-to-many" k tabuľke Sales. 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.

Diagram znázorňujúci, že model teraz zobrazuje riadky tabuľky. Podrobnosti riadkov sú popísané v nasledujúcom odseku.

Podrobnosti riadkov pre tri tabuľky sú popísané v nasledujúcom zozname s odrážkami:

  • Tabuľka Customer má dva riadky:
    • CustomerCode CUST-01CustomerCustomer-1Country-RegionSpojené štáty
    • CustomerCode CUST-02CustomerCustomer-2Country-RegionAustralia
  • Tabuľka Product má tri riadky:
    • SKU CL-01 ProducttričkoColorZelený
    • SKU CL-02, ProductDžínsyColorModrá
    • SKU AC-01, ProductHat, ColorBlue
  • Tabuľka Sales má tri riadky:
    • 1. januára 2019 CUST-01 CL-0110
    • OrderDate 2. februára 2019CustomerCodeCUST-01 SKUCL-02Quantity20
    • OrderDate 3. marca 2019CustomerCodeCUST-02 SKUCL-01Quantity30

Teraz zvážte nasledujúcu stranu zostavy.

Diagram znázorňujúci stranu zostavy obsahujúcu tri vizuály. Podrobnosti sú popísané v nasledujúcom odseku.

Strana sa skladá z dvoch rýchlych filtrov a vizuálu karty. Prvý rýchly filter je založený na poli Country-Region a má dve možnosti: Austrália a USA. Aktuálne filtruje podľa položky Austrália. Druhý rýchly filter je založený na poli Product a má tri možnosti: 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 filtrovanie podľa Austrálie, možno budete chcieť obmedziť rýchly filter produktu na zobrazenie možností, v ktorých údajov súvisí s austrálskym predajom. To je to, čo majú zobrazovať možnosti rýchleho filtra "s údajmi". Toto správanie môžete dosiahnuť nastavením vzťahu medzi Product a Sales tabuľkami na filtrovanie v oboch smeroch.

diagram znázorňujúci model, že vzťah medzi tabuľkami Product (Produkt) a Sales (Predaj) je teraz obojsmerný.

Rýchly filter produktu teraz uvádza jednu možnosť: Tričko. Táto možnosť predstavuje jediný produkt, ktorý sa predáva austrálskym zákazníkom.

Diagram znázorňujúci stranu zostavy obsahujúcu tri vizuály a vyznačený prvok Produkt. Podrobnosti sú popísané v nasledujúcom odseku.

Najskôr odporúčame starostlivo zvážiť, či tento návrh funguje pre vašich používateľov zostáv. Pre niektorých používateľov zostáv je toto prostredie mätúce, pretože nechápu, prečo sa možnosti rýchleho filtra pri interakcii s inými rýchlymi filtrami dynamicky zobrazujú alebo miznú.

Ak sa rozhodnete zobraziť možnosti rýchleho filtra "s údajmi", neodporúčame nastaviť obojsmerné vzťahy. Obojsmerné vzťahy vyžadujú viac spracovania a môžu mať negatívny vplyv na výkon dotazov, najmä keď sa počet obojsmerných vzťahov v modeli zvyšuje.

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 produktu.

Teraz si zoberme, že vzťah medzi Product a Sales tabuľkami už nie je filtrovaný v oboch smeroch. Do tabuľky Sales bola pridaná nasledujúca definícia mierky.

Total Quantity = SUM(Sales[Quantity])

Ak chcete zobraziť možnosti rýchleho filtra produktu "s údajmi", je potrebné filtrovať ho podľa Total Quantity mierky pomocou podmienky "nie je prázdne".

diagram znázorňujúci, že tabla Filtre pre rýchly filter Produkt teraz filtruje podľa položky Celkové množstvo, nie je prázdna.

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 rámci kontextu 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 možno 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. Keď sa filtre šíria prostredníctvom tabuľky faktov, sumarizáciu stĺpcov tabuľky dimenzií možno dosiahnuť pomocou funkcie DISTINCTCOUNT jazyka DAX – a prípadne pomocou funkcie MIN a MAX jazyka DAX.

Keďže tabuľka faktov sa správa ako premosťovacia tabuľka, môžete použiť pokyny na vzťah typu many-to-many na vytvorenie vzťahu medzi dvomi tabuľkami dimenzií. Bude potrebné nastaviť aspoň jeden vzťah na filtrovanie v oboch smeroch. Ďalšie informácie nájdete pokyny nana vzťahy 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 možnosťami rýchleho filtra "s údajmi". Preto namiesto toho odporúčame aktivovať obojsmerné filtrovanie v definícii mierky pomocou funkcie CROSSFILTER DAX. Funkciu CROSSFILTER môžete 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 Sales. V tomto príklade bol modelový vzťah medzi Customer a Sales tabuľkami nastavený tak, aby filtrovali v jednosmernom.

Different Countries Sold =
CALCULATE(
    DISTINCTCOUNT(Customer[Country-Region]),
    CROSSFILTER(
        Customer[CustomerCode],
        Sales[CustomerCode],
        BOTH
    )
)

Počas vyhodnocovania Different Countries Sold mierky sa vzťah medzi Customer a Sales tabuľkami 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 Different Countries Sold predstavuje jedinečný počet hodnôt Krajina – oblasť všetkých zákazníkov, ktorí produkt zakúpili.

Diagram znázorňujúci, že vo vizuáli tabuľky sú uvedené dva produkty. V stĺpci Predaj v rôznych krajinách má stĺpec Džínsy hodnotu 1 a tričko hodnotu 2.

Ďalšie informácie súvisiace s týmto článkom nájdete v nasledujúcich zdrojoch: