Pokyny pro relaci 1:1
Tento článek se zaměřuje na vás jako modelátor dat, který pracuje s Power BI Desktopem. Poskytuje pokyny k práci s relacemi modelu 1:1. Relaci 1:1 je možné vytvořit, když obě tabulky obsahují sloupec společných a jedinečných hodnot.
Poznámka:
Úvod do relací modelu není popsaný v tomto článku. Pokud nejste úplně obeznámeni s relacemi, jejich vlastnostmi nebo jejich konfigurací, doporučujeme, abyste si nejdřív přečetli relace modelu v článku Power BI Desktopu .
Je také důležité, abyste porozuměli návrhu hvězdicového schématu. Další informace najdete v tématu Vysvětlení hvězdicového schématu a důležitosti pro Power BI.
Existují dva scénáře, které zahrnují relace 1:1:
Degenerované dimenze: Můžete odvodit degenerovanou dimenzi z tabulky faktů.
řádková data přesahují tabulky: Jedna obchodní entita nebo subjekt se načte jako dvě (nebo více) modelové tabulky, možná proto, že jejich data pocházejí z různých datových úložišť. Tento scénář může být běžný pro tabulky dimenzí. Například hlavní podrobnosti o produktech jsou uloženy v provozním prodejním systému a doplňkové podrobnosti o produktu jsou uloženy v jiném zdroji.
Je ale neobvyklé, že byste dvě tabulky faktů sváželi s relací 1:1. Je to proto, že obě tabulky faktů by musely mít stejnou dimenzionalitu a členitost. Každá tabulka faktů by také potřebovala unikátní sloupce, aby mohl být vytvořen modelový vztah.
Degenerované dimenze
Když se sloupce z tabulky faktů používají k filtrování nebo seskupování, můžete zvážit jejich zpřístupnění v samostatné tabulce. Tímto způsobem oddělujete sloupce používané k filtrování nebo seskupování z těchto sloupců, které slouží k sumarizaci řádků faktů. Toto oddělení může:
- Snižte prostor úložiště.
- Zjednodušení výpočtů modelu
- Přispívá ke zlepšení výkonu dotazů.
- Poskytujte autorům sestav intuitivnější prostředí podokna Data.
Představte si zdrojovou tabulku s názvem Sales
, která ukládá podrobnosti o referencích řádků prodejních objednávek ve dvou sloupcích.
Sloupec OrderNumber
ukládá číslo objednávky a sloupec OrderLineNumber
ukládá posloupnost řádků v rámci objednávky.
Na následujícím obrázku si všimněte, že sloupce s číslem objednávky a číslem řádku objednávky nebyly načteny do tabulky Sales
. Místo toho se jejich hodnoty použily k vytvoření náhradního klíče sloupec s názvem OrderLineNumberID
. (Hodnota klíče se vypočítá vynásobením čísla objednávky číslem 1000 a následným přidáním čísla řádku objednávky.)
Tabulka dimenzí Sales Order
poskytuje autorům sestav bohatý zážitek díky dvěma sloupcům: Sales Order
a Sales Order Line
. Tyto konkrétní sloupce podporují návrhy sestav, které potřebují filtrovat, seskupit nebo procházet podrobnosti podle objednávek a řádků objednávek.
Vzhledem k tomu, že Sales Order
tabulka je odvozena z dat o prodeji, měl by být v každé tabulce přesně stejný počet řádků. Dále by měly existovat odpovídající hodnoty mezi jednotlivými OrderLineNumberID
sloupci.
Data řádků napříč tabulkami
Představte si příklad, který zahrnuje dvě tabulky dimenzí 1:1: Product
a Product Category
. Každá tabulka představuje importovaná data a má sloupec SKU
(skladová jednotka), který obsahuje jedinečné hodnoty.
Tady je částečný modelový diagram dvou tabulek.
První tabulka má název Product
a obsahuje tři sloupce: Color
, Product
a SKU
. Druhá tabulka má název Product Category
a obsahuje dva sloupce: Category
a SKU
. Relace 1:1 spojuje dva SKU
sloupce. Relace filtruje v obou směrech, což je vždy případ relací 1:1.
Abychom mohli popsat, jak šíření filtru relací funguje, zobrazí se na následujícím obrázku některé řádky tabulky. Všechny příklady v tomto článku jsou založené na těchto datech.
Podrobnosti o řádku pro tyto dvě tabulky jsou popsány v následujícím seznamu s odrážkami:
- Tabulka
Product
má tři řádky:-
SKU
CL-01,Product
tričko,Color
Zelená -
SKU
CL-02,Product
Jeans,Color
Modrá -
SKU
AC-01,Product
Klobouk,Color
Modrá
-
- Tabulka
Product Category
má dva řádky:-
SKU
CL-01,Category
Oblečení -
SKU
AC-01,Category
příslušenství
-
Všimněte si, že tabulka Product Category
neobsahuje řádek pro skladovou položku produktu CL-02. Důsledky tohoto chybějícího řádku probereme dále v tomto článku.
V podokně Data autoři sestav najdou pole související s produktem ve dvou tabulkách: Product
a Product Category
. Pojďme se podívat, co se stane, když se pole z obou tabulek přidají do vizuálu tabulky. V tomto příkladu je sloupec SKU
zdrojem z tabulky Product
.
Všimněte si, že hodnota Category
pro SKU produktu CL-02 je PRÁZDNÁ. Je to proto, že v tabulce Product Category
pro tento produkt neexistuje odpovídající řádek.
Doporučení
Pokud je to možné, doporučujeme, abyste se vyhnuli vytváření relací modelu 1:1, když data řádků překlenují mezi tabulkami modelu. Je to proto, že tento návrh může:
- Přispívání do podokna Data nepotřebné a výpis více tabulek, než je potřeba.
- Autorům sestav je obtížné najít související pole, protože jsou distribuovaná napříč několika tabulkami.
- Omezte možnost vytvářet hierarchie, protože jejich úrovně musí být založené na sloupcích ze stejné tabulky.
- Vygenerujte neočekávané výsledky, pokud mezi tabulkami není úplná shoda řádků.
Konkrétní doporučení se liší v závislosti na tom, jestli je relace 1:1 uvnitř zdrojové skupiny nebo mezi zdrojovou skupinou. Další informace o hodnocení vztahů najdete v tématu Modelové vztahy v Power BI Desktop.
Relace 1:1 v rámci zdrojové skupiny
Pokud mezi tabulkami existuje relace 1:1 uvnitř zdrojové skupiny , doporučujeme data konsolidovat do jedné tabulky modelu. Můžete to udělat sloučením dotazů Power Query.
Následující kroky představují metodologii pro konsolidaci a modelování dat souvisejících v poměru jedna ku jedné.
Sloučit dotazy: Při kombinování těchto dvou dotazů je potřeba vzít v úvahu úplnost dat v každém dotazu. Pokud jeden dotaz obsahuje úplnou sadu řádků (například hlavní seznam), sloučí s ním druhý dotaz. Nastavte transformaci sloučení tak, aby používala levé vnější spojení, což je výchozí typ spojení. Tento typ spojení zajistí, že budete uchovávat všechny řádky prvního dotazu a doplnit je všemi odpovídajícími řádky druhého dotazu. Rozbalte všechny požadované sloupce druhého dotazu do prvního dotazu.
Zakázat načtení dotazu: Nezapomeňte zakázat načtení druhého dotazu. Tímto způsobem se výsledek nenačte jako tabulka modelu. Tato konfigurace zmenšuje velikost úložiště datového modelu a pomáhá zmírnit podokno Data .
V našem příkladu teď autoři sestav najdou jednu tabulku s názvem
Product
v podokně Data. Obsahuje všechna pole související s produktem.Nahrazení chybějících hodnot: Pokud druhý dotaz obsahuje chybějící řádky, zobrazí se hodnoty null ve sloupcích zavedených z něj. V případě potřeby zvažte nahrazení hodnot null hodnotou tokenu. Nahrazení chybějících hodnot je zvlášť důležité, když autoři sestav filtrují nebo seskupují podle hodnot sloupců, protože v vizuálech sestav se můžou zobrazovat prázdné hodnoty.
Na následujícím obrázku si všimněte, že kategorie skladové položky produktu CL-02 nyní čte [Nedefinováno]. V dotazu byly kategorie null nahrazeny touto textovou hodnotou tokenu.
Vytváření hierarchií: Pokud mezi sloupci nyní sloučené tabulky existují relace, zvažte vytvoření hierarchií. Autoři sestav tak rychle identifikují příležitosti k procházení vizuálů sestav.
V našem příkladu teď můžou autoři sestav používat hierarchii, která má dvě úrovně:
Category
aProduct
.
Pokud se vám líbí, jak samostatné tabulky pomáhají uspořádat pole, doporučujeme slučovat do jedné tabulky. Pole můžete pořád uspořádat, ale místo toho můžete použít složky zobrazení.
V našem příkladu můžou autoři sestav najít pole Category
ve složce zobrazení Marketing
.
Pokud je to možné, stále se rozhodnete definovat relace 1:1 uvnitř zdrojové skupiny v modelu, pokud je to možné, ujistěte se, že v souvisejících tabulkách jsou odpovídající řádky. Vzhledem k tomu, že relace 1:1 uvnitř zdrojové skupiny se vyhodnocuje jako běžná relace, můžou se problémy s integritou dat ve vizuálech sestavy zobrazit jako prázdné hodnoty. (Příklad seskupení BLANK můžete vidět v prvním vizuálu tabulky, který je uvedený v tomto článku.)
Relace 1:1 mezi zdrojovými skupinami
Pokud mezi tabulkami existuje relace 1:1 mezi zdrojovými skupinami, neexistuje žádný alternativní návrh modelu – pokud data ve zdroji dat předem nekonsolidujete. Power BI vyhodnotí relaci modelu 1:1 jako omezenou relaci. Proto dbejte na to, aby v souvisejících tabulkách byly odpovídající řádky, protože řádky bez odpovídajících dvojic jsou z výsledků dotazu odstraněny.
Pojďme se podívat, co se stane, když se pole z obou tabulek přidají do vizuálu tabulky a mezi tabulkami existuje omezená relace.
První vizuál tabulky, který používá relaci mezi zdrojovými skupinami, zobrazí pouze dva řádky. Skladová položka produktu CL-02 chybí, protože v tabulce Product Category
neexistuje žádný odpovídající řádek. Druhý vizuál tabulky založený na jedné konsolidované tabulce v modelu zobrazí tři řádky.
Související obsah
Další informace týkající se tohoto článku najdete v následujících zdrojích informací: