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.
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.)
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.
Prvá tabuľka sa nazýva Product
a obsahuje tri stĺpce: Color
, Product
a SKU
. Druhá tabuľka sa nazýva Product Category
a 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.
Podrobnosti riadkov pre dve tabuľky sú popísané v nasledujúcom zozname s odrážkami:
- Tabuľka
Product
má tri riadky:-
SKU
CL-01Product
tričkoColor
Zelený -
SKU
CL-02,Product
DžínsyColor
Modrá -
SKU
AC-01,Product
Hat,Color
Blue
-
- Tabuľka
Product Category
má dva riadky:-
SKU
CL-01,Category
Clothing -
SKU
AC-01Category
Prí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
.
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.
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.
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.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.
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
aProduct
.
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
.
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.
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.
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.
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 riešenie problémov so vzťahmi
- Máte nejaké otázky? Skúste sa spýtať na komunity Fabric
- Návrhy? prispievať nápadmi na zlepšenie v látkach