Zdieľať cez


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

Tento článok je určený pre modelárov údajov, ktorí pracujú 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:

  • dimenzií faktov: Z tabuľky faktov môžete odvodiť dimenziu faktov .

  • Rozsah údajov riadkov v tabuľkách: Jedna obchodná entita alebo subjekt sa načíta ako dve (alebo viaceré) tabuľky modelov, pravdepodobne preto, že 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žívajú 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 zoskupovanie 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.
  • Poskytnite autorom zostáv intuitívnejšie prostredie tably údajov.

Zoberme si zdrojovú tabuľku s názvom Sales, ktorá ukladá podrobnosti riadkov predajnej objednávky v dvoch stĺpcoch.

Diagram znázorňujúci riadky tabuľky pre tabuľku dimenzií faktov predaja. Návrh je popísaný v nasledujúcom odseku.

V stĺpci OrderNumber je uložené číslo objednávky a OrderLineNumber stĺpec obsahuje postupnosť riadkov v rámci objednávky.

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

Diagram znázorňujúci dve tabuľky: Predaj a Predajná objednávka. Vzťah one-to-one vytvára vzťah medzi stĺpcami ID čísla riadka objednávky.

Tabuľka dimenzií Sales Order poskytuje autorom zostáv bohaté možnosti s dvomi stĺpcami: Sales Order a Sales Order Line. Tieto konkrétne stĺpce podporujú návrhy zostáv, ktoré potrebujú filtrovať, zoskupiť alebo prechádzať na detaily objednávok a riadky objednávok.

Keďže tabuľka Sales Order 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 OrderLineNumberID stĺpcami.

Rozsah údajov riadkov v tabuľkách

Zoberme si príklad, ktorý zahŕňa dve súvisiace tabuľky dimenzií typu one-to-one: Product a Product Category. Každá tabuľka predstavuje importované údaje a obsahuje SKU stĺpec (jednotka skladová jednotka), ktorý obsahuje jedinečné hodnoty.

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

diagram znázorňujúci model, ktorý obsahuje dve tabuľky, medzi tabuľkami sú rozložené údaje riadkov. Návrh je popísaný v nasledujúcom odseku.

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

Na to, aby bolo jednoduchšie opísať, ako funguje šírenie filtra vzťahov, sa niektoré riadky tabuľky znázornia na nasledujúcom obrázku. Všetky príklady v tomto článku vychádzajú z týchto údajov.

diagram znázorňujúci tabuľky Produkt a Kategória produktov a niekoľko riadkov údajov. Podrobnosti riadkov sú popísané v nasledujúcom odseku.

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

  • Tabuľka Product má tri riadky:
    • SKU CL-01 ProducttričkoColorZelený
    • SKU CL-02, ProductDžínsyColorModrá
    • SKU AC-01, ProductHat, ColorBlue
  • Tabuľka Product Category má dva riadky:
    • SKU CL-01, CategoryClothing
    • SKU AC-01CategoryPríslušenstvo

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

Na table Údaje autori zostáv nájdu polia súvisiace s produktom v dvoch tabuľkách: Product a Product Category. 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 Product.

Diagram znázorňujúci tablu Údaje s dvoma tabuľkami a vizuál tabuľky, ktorý obsahuje štyri stĺpce. Hodnota Kategória pre jednotku SKU CL-02 produktu je PRÁZDNA.

Všimnite si, že hodnota Category pre jednotku SKU produktu CL-02 je PRÁZDNA. Príčinou je, že neexistuje žiadny zodpovedajúci riadok v tabuľke Product Category pre tento produkt.

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:

  • Načítať do nepotrebných položiek na table Údaje , 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.

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. Môžete to urobiť 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. Nastavte transformáciu zlúčenia tak, aby používala vonkajšie spojenie, ktorá je predvoleným typom 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.

    Diagram znázorňujúci údaje zlúčené do jednej tabuľky dimenzií Product (Produkt).

  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 Údaje .

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

  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.

    Na nasledujúcom obrázku si všimnite, že kategória pre jednotku SKU produktu CL-02 teraz číta [Nedefinovaná]. V dotaze boli kategórie s hodnotou null nahradené touto textovým hodnotou tokenu.

    diagram znázorňujúci tablu Údaje pre tabuľku Produkt. Zobrazuje tiež vizuál tabuľky so štyrmi stĺpcami. Hodnota Kategória pre jednotku SKU CL-02 produktu je teraz označená ako Undefined (Nedefinovaná).

  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: Category a Product.

    diagram znázorňujúci tablu Údaje. Tabuľka Produkt obsahuje hierarchiu Produkty.

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 Category pole v rámci priečinka zobrazenia Marketing.

Diagram znázorňujúci tablu Údaje, kde sa pole Kategória nachádza v zobrazovanom priečinku s názvom 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

Ak existuje vzťah one-to-one medzi skupinami zdrojov medzi tabuľkami, neexistuje žiadny alternatívny návrh modelu –pokiaľ vopred nezlúčite údaje vo svojom zdroji ú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.

Diagram znázorňujúci vzťah typu one-to-one medzi skupinami zdrojov, čo je obmedzený vzťah.

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.

Diagram znázorňujúci dva vizuály tabuľky, ktoré sú popísané v nasledujúcom odseku.

Prvý vizuál tabuľky, ktorý používa vzťah medzi skupinami zdrojov, zobrazuje iba dva riadky. Jednotka SKU produktu CL-02 chýba, pretože v tabuľke Product Category neexistuje žiadny zodpovedajúci riadok. Druhý vizuál tabuľky založený na jednej konsolidovanej tabuľke v modeli zobrazuje tri riadky.

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