Pokyny na prístup k vzťahom one-to-one

Tento článok je určený pre modelárov údajových pracujúcich s aplikáciou Power BI Desktop. Nájdete v ňom pokyny na prácu so vzťahmi v modeloch typu one-to-one. Vzťah one-to-one sa dá vytvoriť, keď každá z oboch tabuliek obsahuje stĺpec s bežnými a jedinečnými hodnotami.

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.

Existujú dva scenáre, ktoré zahŕňajú vzťahy typu one-to-one:

  • Degenerovať dimenzie: Z tabuľky faktov môžete odvodiť degenerujúnú dimenziu .

  • Rozsah údajov riadkov v tabuľkách: Jedna obchodná entita alebo subjekt sa načíta ako dve (alebo viaceré) tabuľky modelu. Pravdepodobne je to preto, lebo ich údaje pochádzajú z rôznych úložných priestorov údajov. Tento scenár môže byť bežný pre tabuľky dimenzií. Napríklad hlavné podrobnosti o produkte sú uložené v prevádzkovom systéme predaja a ďalšie podrobnosti o produkte sú uložené v inom zdroji.

    Vytvorenie vzťahu dvoch tabuliek faktov so vzťahom one-to-one je však nezvyčajné. Je to spôsobené tým, že obe tabuľky faktov by museli mať rovnakú dimenzionalitu a granularitu. Navyše, každá tabuľka faktov by tiež potrebovala jedinečné stĺpce na umožnenie vytvorenia modelového vzťahu.

Dimenzie faktov

Keď sa stĺpce z tabuľky faktov použijú na filtrovanie alebo zoskupenie, môžete zvážiť ich dostupnosť v samostatnej tabuľke. Týmto spôsobom oddelíte stĺpce používané na filtrovanie alebo zoskupenie od stĺpcov, ktoré sa používajú na sumarizáciu riadkov faktov. 2 môžu byť:

  • Zredukujte ukladací priestor
  • Zjednodušenie výpočtov modelu
  • Prispieť k zlepšeniu výkonu dotazov
  • Intuitívnejšie prostredie tably Polia pre autorov zostáv

Zoberme si zdrojovú tabuľku predaja, v nej sú uložené podrobnosti o predajných objednávkach v dvoch stĺpcoch.

Table rows for a sales table.

V stĺpci ČísloObjednávky je uložené číslo objednávky a v stĺpci ČísloRiadkaObjednávky je uložená postupnosť riadkov v rámci objednávky.

V nasledujúcom diagrame modelu si všimnite, že stĺpce s číslom objednávky a s číslom riadka objednávky sa nenačítali do tabuľky Predaj . Namiesto toho sa ich hodnoty použili na vytvorenie stĺpca náhradného kľúča s názvom IDRiadkaPredajnejObjednávky. (Hodnota kľúča sa vypočíta vynásobením čísla objednávky číslom 1000 a pridaním čísla riadka objednávky.)

A model diagram contains two tables: Sales and Sales Order. A one-to-one relationship relates the SalesOrderLineID columns.

Tabuľka Predajná objednávka poskytuje pre autorov zostáv bohaté možnosti s tromi stĺpcami: Predajná objednávka, Riadok predajnej objednávky a Číslo riadka. Obsahuje aj hierarchiu. Tieto zdroje tabuľky podporujú návrhy zostáv, v prípade ktoré je potrebné filtrovať, zoskupiť alebo prechádzať na detaily objednávok a riadky objednávok.

Keďže tabuľka Predajná objednávka je odvodená z údajov o predaji, v každej tabuľke by mal byť presne ten istý počet riadkov. Okrem toho by sa mali zhodovať hodnoty medzi jednotlivými stĺpcami IDRiadkaPredajnejObjednávky .

Rozsah údajov riadkov v tabuľkách

Zoberme si príklad s dvomi súvisiacimi tabuľkami dimenzie typu one-to-one: Produkt a Kategória produktov. Každá tabuľka predstavuje importované údaje a obsahuje stĺpec SKU (jednotka Stock-Keeping Unit) s jedinečnými hodnotami.

Tu je čiastkový diagram modelu týchto dvoch tabuliek.

A model diagram contains two tables. The design is described in the following paragraph.

Prvá tabuľka sa nazýva Produkt a obsahuje tri stĺpce: Farba, Produkt a SKU. Druhá tabuľka sa nazýva Kategória produktov a obsahuje dva stĺpce: Kategória a SKU. Vzťah "one-to-one" sa týka dvoch stĺpcov SKU . Vzťah sa filtruje v oboch smeroch, čo platí vždy pre vzťahy typu one-to-one.

S cieľom pomôcť opísať, ako funguje šírenie filtra vzťahov, 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.

The model diagram now reveals the table rows. The row details are described in the following paragraph.

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

  • 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 Kategória produktov obsahuje dva riadky:
    • SKU CL-01, Kategória Oblečenie
    • SKU AC-01, Kategória Príslušenstvo

Všimnite si, že tabuľka Kategória produktov neobsahuje riadok pre jednotku SKU CL-02 produktu. Neskôr v tomto článku sa budeme zaoberať vplyvom tohto chýbajúceho riadka.

Na table Polia autori zostáv nájdu polia súvisiace s produktom v dvoch tabuľkách: Produkt a Kategória produktov.

The Fields pane shows both tables expanded, and the columns are listed as fields with Product and Product category called out.

Pozrime sa, čo sa stane, keď sa polia z oboch tabuliek pridajú do vizuálu tabuľky. V tomto príklade stĺpec SKU pochádza z tabuľky Produkt .

A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is BLANK.

Všimnite si, že hodnota Kategória pre jednotku SKU CL-02 produktu je PRÁZDNA. Dôvodom je, že pre tento produkt neexistuje žiadny riadok v tabuľke Kategória produktov.

Odporúčania

Ak je to možné, odporúčame vyhýbať sa vytváraniu modelových vzťahov typu one-to-one, keď sú údaje riadkov rozložené medzi tabuľkami modelov. Dôvodom je, že tento návrh môže:

  • Vytvoriť nepotrebné položky na table Polia , keď zoznam obsahuje viac tabuliek, než je potrebné
  • Ťažte pre autorov zostáv vyhľadávanie súvisiacich polí, pretože sú distribuované v rámci viacerých tabuliek,
  • Obmedzte možnosť vytvárať hierarchie, pretože ich úrovne musia byť založené na stĺpcoch z rovnakej tabuľky
  • Produkovať neočakávané výsledky v prípade, že medzi tabuľkami neexistuje úplná zhoda riadkov.

Konkrétne odporúčania sa líšia v závislosti od toho, či vzťah one-to-one je v rámci skupiny zdrojov alebo medzi skupinami zdrojov. Ďalšie informácie o vyhodnocovaní vzťahov nájdete v téme Modelové vzťahy v aplikácii Power BI Desktop (Vyhodnocovanie vzťahov).

Vzťah one-to-one v rámci skupiny zdrojov

V prípade, že medzi tabuľkami existuje vzťah one-to-one v rámci skupiny zdrojov, odporúčame zlúčiť údaje do jednej tabuľky modelu. Vykoná sa to zlúčením dotazov Power Query.

Nasledujúce kroky predstavujú metodiku zlučovania a modelovania súvisiacich údajov typu one-to-one:

  1. Zlúčenie dotazov: Keď kombinujete dva dotazy, posúdite úplnosť údajov v každom dotaze. Ak jeden dotaz obsahuje kompletnú množinu riadkov (napríklad hlavný zoznam), zlúčte s ním druhý dotaz. Transformáciu zlúčenia nakonfigurujte tak, aby sa použilo vonkajšie spojenie zľava, čo je predvolený typ spojenia. Tento typ spojenia zaistí, že budete mať všetky riadky prvého dotazu a doplníte ich všetkými zodpovedajúcimi riadkami druhého dotazu. Rozbaľte všetky požadované stĺpce druhého dotazu do prvého dotazu.

  2. Vypnutie načítania dotazu: Nezabudnite vypnúť načítanie druhého dotazu. Týmto spôsobom sa výsledok nenačíta ako tabuľka modelu. Táto konfigurácia redukuje veľkosť úložiska dátového modelu a pomáha prehľadať tablu Polia .

    V našom príklade autori zostáv teraz nájdu jednu tabuľku s názvom Produkt na table Polia . Obsahuje všetky polia súvisiace s produktom.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Product called out.

  3. Nahradenie chýbajúcich hodnôt: Ak druhý dotaz obsahuje nezhodné riadky, hodnoty NULL sa zobrazia v stĺpcoch, ktoré z neho pochádzajú. Ak je to vhodné, zvážte nahradenie hodnôt NULL hodnotou tokenu. Nahradenie chýbajúcich hodnôt je dôležité najmä vtedy, keď autori zostáv filtrujú alebo zoskupujú podľa hodnôt stĺpcov, pretože vo vizuáloch zostáv sa môžu zobraziť PRÁZDNE hodnoty.

    V nasledujúcom vizuáli tabuľky si všimnite, že kategória pre jednotku SKU CL-02 produkt má teraz hodnotu [Undefined]. V dotaze boli kategórie s hodnotou null nahradené touto textovým hodnotou tokenu.

    A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is now labeled

  4. Vytvorenie hierarchií: Ak existujú vzťahy medzi stĺpcami teraz zlúčené tabuľky, zvážte vytvorenie hierarchií. Týmto spôsobom autori zostáv rýchlo identifikujú príležitosti na prechod na detaily vizuálu zostavy.

    V našom príklade môžu teraz autori zostáv použiť hierarchiu, ktorá má dve úrovne: Kategória a Produkt.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Products called out.

Ak sa vám páči, ako oddelené tabuľky pomáhajú usporiadať vaše polia, aj tak odporúčame zlúčenie do jednej tabuľky. Polia môžete stále usporiadať, ale namiesto toho použijete zobrazenie priečinkov .

V našom príklade autori zostáv nájdu pole Kategória v rámci zobrazovaného priečinka Marketing .

The Fields pane shows the Category field within a display folder named Marketing.

Ak je to možné, mali by ste aj tak v modeli definovať vzťahy one-to-one v rámci skupiny zdrojov a zaistiť, aby boli v súvisiacich tabuľkách zhodné riadky. Keďže vzťah one-to-one v rámci skupiny zdrojov sa vyhodnocuje ako pravidelný vzťah, problémy s integritou údajov by sa mohli zobraziť vo vizuáloch zostáv ako hodnoty PRÁZDNE. (V prvom vizuáli tabuľky, ktorý je uvedený v tomto článku, môžete vidieť príklad zoskupenia, ktoré je PRÁZDNE.)

Vzťah one-to-one medzi skupinami zdrojov

V prípade, že medzi tabuľkami existuje vzťah one-to-one medzi skupinami zdrojov, neexistuje žiadny alternatívny návrh modelu – pokiaľ vopred nezlúčujete údaje vo svojich zdrojoch údajov. Power BI vyhodnotí modelový vzťah one-to-one ako obmedzený vzťah. Preto dbajte, aby súvisiace tabuľky mali zhodné riadky, pretože nezhodné riadky sa vylúčia z výsledkov dotazu.

Pozrime sa, čo sa stane, keď sa polia z oboch tabuliek pridajú do vizuálu tabuľky a medzi tabuľkami existuje obmedzený vzťah.

A table visual includes four columns: SKU, Product, Color, and Category. The table has two rows only.

Tabuľka zobrazuje iba dva riadky. Jednotka SKU CL-02 produktu chýba, pretože neexistuje žiadny zodpovedajúci riadok v tabuľke Kategória produktov.

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