Sdílet prostřednictvím


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.

Diagram zobrazující řádky tabulky pro tabulku dimenzí Degenerate Sales Návrh je popsaný v následujícím odstavci.

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

Diagram zobrazující dvě tabulky: Sales (Prodej) a Sales Order (Prodejní objednávka). Relace 1:1 spojuje sloupce ID řá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.

diagram znázorňující model, který obsahuje dvě tabulky, ve kterých jsou data řádků napříč tabulkami. Návrh je popsaný v následujícím odstavci.

První tabulka má název Producta obsahuje tři sloupce: Color, Producta SKU. Druhá tabulka má název Product Categorya 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.

Diagram zobrazující tabulky Product (Produkt) a Product Category (Kategorie produktu) a některé řádky dat. Podrobnosti o řádku jsou popsány v následujícím odstavci.

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, Producttričko, ColorZelená
    • SKU CL-02, ProductJeans, ColorModrá
    • SKU AC-01, ProductKlobouk, ColorModrá
  • Tabulka Product Category má dva řádky:
    • SKU CL-01, CategoryOblečení
    • SKU AC-01, Categorypří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.

Diagram zobrazující podokno Data se dvěma tabulkami a vizuál tabulky, který obsahuje čtyři sloupce. Hodnota kategorie pro skladovou položku produktu CL-02 je prázdná.

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

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

    diagram zobrazující data konsolidovaná do jedné tabulky dimenzí produktu

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

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

    Diagram zobrazující podokno Data pro tabulku Product (Produkt). Zobrazuje také vizuál tabulky se čtyřmi sloupci. Hodnota Category pro skladovou položku produktu CL-02 je nyní označena jako Nedefinovaná.

  4. 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 a Product.

    Diagram zobrazující podokno Data. Tabulka Produktů obsahuje hierarchii Produktů.

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.

Diagram znázorňující podokno Data, ve kterém je pole Kategorie zobrazené jako složka s názvem 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.

diagram znázorňující relaci 1:1 mezi skupinami zdrojů, což je omezená relace.

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.

Diagram znázorňující dva vizuály tabulky, které jsou popsány v následujícím odstavci.

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.

Další informace týkající se tohoto článku najdete v následujících zdrojích informací: