Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Schéma grafu je kolekce typů uzlů, hraničních typů a jejich vlastností, které definují strukturu grafu. Dobře navržené schéma grafu usnadňuje dotazování, údržbu a rozšiřování dat. Tento článek obsahuje osvědčené postupy pro přeměnu tabulkových dat ve formátu lakehouse na efektivní označený graf vlastností v Microsoft Fabric.
Tyto pokyny použijte před zahájením modelování v editoru modelů grafů. Podrobné pokyny k vytváření uzlů a hran najdete v kurzu grafu. Příklady v tomto článku používají ukázkovou datovou sadu Adventure Works.
Důležité
Graph v současné době nepodporuje vývoj schématu. Jakmile vytvoříte grafový model a načtete jeho data, všechny strukturální změny, jako je přidání nebo odebrání typů uzlů, typů okrajů a vlastností, vyžadují, abyste před dotazováním aktualizované struktury znovu načetli všechna data. Chcete-li data znovu načíst, vyberte na horní pásce karet možnost Uložit. Tento proces opětovného načítání dat trvá určitou dobu a spotřebovává kapacitu, takže před zahájením modelování důkladně naplánujte schéma.
Předpoklady
- Pracovní prostor Fabric s datovým jezerem, které obsahuje vaše zdrojové tabulky.
- Znalost editoru grafových modelů
- Volitelné: Ukázková datová sada Adventure Works , která bude postupovat podle příkladů v tomto článku.
Pochopení typů uzlů a typů hran
Než začnete navrhovat schéma, seznamte se s těmito základními koncepty:
Typ uzlu definuje v grafu druh entity, například zákazník, produkt nebo objednávku. Skládá se z:
-
Popisek uzlu, což je název, který identifikuje tuto kategorii uzlu. Například:
Customer. Popisek v dotazech použijete k odkazování na uzly tohoto typu. - Zdrojová tabulka, což je tabulka lakehouse, která poskytuje zdrojová data pro typ uzlu. Například tabulka adventureworks_customers.
-
Klíčový sloupec, který jednoznačně identifikuje každý uzel. Například:
CustomerID_K. -
Vlastnosti, které jsou sloupce z tabulky, které můžete přidat jako atributy na každém uzlu. Například
FirstName,LastNameaEmailAddress.
Uzel je samostatná instance typu uzlu – jeden řádek ve zdrojové tabulce. Každý řádek v adventureworks_customers se například stane Customer uzlem.
Hraniční typ definuje druh vztahu mezi dvěma typy uzlů. Skládá se z:
-
Štítek hrany, což je název, jenž označuje tuto kategorii vztahu. Například:
purchases. - Zdrojová tabulka, která obsahuje data relace mezi počátečním a cílovým uzlem. Například tabulka adventureworks_orders.
- Typ počátečního uzlu a typ cílového uzlu, které hrana spojuje. Například
Customerjako zdroj aOrdercíl.
Hrana je samostatná instance typu hrany – jeden řádek ve zdrojové tabulce, který spojuje dva konkrétní uzly.
Poznámka:
V editoru modelů grafu vytvářejí tlačítka Přidat uzel a Přidat hrany typy uzlů a hrany, nikoli jednotlivé uzly nebo hrany.
Identifikace entit a relací
Začněte tím, že identifikujete entity (věci) a vztahy (připojení) ve vašich datech. Entity se stanou typem uzlu. Propojení mezi entitami se stávají hraničními typy.
Položte si tyto otázky týkající se zdrojových tabulek:
- Co jsou primární entity? Řádky, které představují jedinečné skutečné věci, jsou kandidáty pro typy uzlů. Například zákazníci, produkty, objednávky a zaměstnanci.
- Jak spolu tyto entity souvisejí? Sloupce odkazované na řádky v jiné tabulce (cizí klíče) navrhují typy okrajů. Například
CustomerID_FKvorderstabulce odkazuje nacustomerstabulku, která navrhuje modelování okrajůpurchases. - Existují vložené entity? Sloupec uvnitř tabulky může představovat jedinečnou entitu, která stojí za extrahování do vlastního typu uzlu. Příklad najdete v tématu Volba typů uzlů. Podrobný návod najdete v tématu Přidání více typů uzlů a hraničních zařízení z jedné zdrojové tabulky.
Volba typů uzlů
Vytvořte typ uzlu pro každou entitu, kterou potřebujete dotazovat nebo procházet nezávisle. Postupujte podle těchto pokynů:
| Udělejte z entity typ uzlu, když... | Ponechat ho jako vlastnost, když... |
|---|---|
| Musíte se k tomu dostat nebo tím projít. | Jedná se o popisná metadata, která pouze čtete, a ne procházíte. |
| Vztah s ním sdílí více entit. | Entita, do které patří, je jedinečná. |
| Musíte ho porovnat nebo seskupit přímo v dotazech. | Filtrujete ho jenom jako vlastnost jiné entity. |
Příklad: V datové sadě Country Adventure Works začíná jako sloupec v employees tabulce. Pokud potřebujete zadat dotaz na "které zaměstnance žijí ve stejné zemi?" nebo "které země mají nejvíce zaměstnanců?", extrahujte Country je do svého vlastního typu uzlu. Pokud potřebujete zobrazit jenom zemi zaměstnance jako popisek, nechejte ji jako vlastnost.
Výběr klíčových sloupců
Každý typ uzlu vyžaduje klíčový sloupec (nebo složený klíč), který jednoznačně identifikuje každý uzel. Pečlivě zvolte klíče:
-
Použijte existující jedinečné identifikátory ze zdrojových tabulek. Například
CustomerID_KneboProductID_K. -
Vyhněte se náhradním klíčům, které nemají obchodní význam , pokud neexistuje žádný přirozený klíč. Například upřednostněte
CustomerIDmísto automatického přírůstku čísla řádku. -
Složené klíče použijte , pokud jeden sloupec nezaručuje jedinečnost. Uzel
ProductVersionmůže například potřebovat jakProductID, takVersionNumberjako svůj klíč. - Porovná datové typy mezi klíčovými sloupci a sloupci cizího klíče používanými v hraničních mapováních. Neodpovídající typy způsobují selhání při vytváření hran.
Návod
Definujte omezení klíče uzlu , která umožňují dotazovacímu stroji provádět přímé vyhledávání vlastností klíče. Tato optimalizace zrychluje dotazy, které vyhledávají konkrétní uzly podle klíče.
Přidání vlastností uzlu
Při vytváření typu uzlu zvolte, které vlastnosti ze zdrojové tabulky chcete zahrnout jako vlastnosti v typu uzlu, zejména vlastnosti, pro které byla použita pravidla přístupu k zabezpečení OneLake na podkladovou zdrojovou tabulku.
Přidejte vlastnosti během vytváření uzlu pomocí tlačítka + Přidat vlastnost . Případně můžete do existujícího uzlu přidat vlastnosti tak, že poklikáním na typ uzlu v editoru modelů grafu otevřete dialogové okno pro úpravy uzlu a vyberete Upravit definici. Vyberte Přidat vlastnost a pak zvolte sloupce ze zdrojové tabulky.
Možná nebudete chtít přidat každý sloupec v tabulce jako vlastnost. Nadměrné množství vlastností zvyšuje úložiště, pomalé dotazy a znesnadní údržbu grafu. Z těchto důvodů se vyhněte přidávání vlastností, které nepotřebujete pro dotazy nebo analýzu.
Pro každý typ uzlu ponechte pouze vlastnosti, které jsou:
- Vyžadováno pro jedinečnost uzlu (klíčové sloupce)
- Používá se ve
WHEREfiltrech neboRETURNprojekcích v dotazech. - Potřeba pro podřízenou analýzu nebo vizualizaci
Další informace o tom, jak počet vlastností ovlivňuje výkon dotazů, najdete v tématu Vrácení pouze požadovaných vlastností.
Výběr datových typů
Vyberte pro každou vlastnost nejtypičtější datový typ. Správné typy zlepšují efektivitu úložiště i výkon dotazů:
- Použijte
INTneboUINT64pro číselné identifikátory a počty. Číselné porovnání jsou rychlejší než porovnání řetězců. - Používá se
ZONED DATETIMEpro časová razítka místo kalendářních dat formátovaných řetězcem. - Používá se
BOOLEANpro příznaky true/false místo řetězcových hodnot jako"yes"nebo"no".
Úplný seznam podporovaných typů najdete v tématu Aktuální omezení – Datové typy.
Volba typů okrajů
Typy hran definují vztahy mezi typy uzlů. Každý typ hraniční sítě propojuje typ počátečního uzlu s cílovým typem uzlu prostřednictvím zdrojové tabulky.
Postupujte podle těchto pokynů:
-
Používejte popisné popisky , které se čtou jako slovesa nebo slovesné fráze. Například ,
purchases,sells,livesInabelongsTo. Dobře pojmenovaná hrana grafu usnadňuje čtení dotazů. - Pečlivě zvažte směr. Hrany v grafu jsou směrovány. Zvolte směr, který nejlépe představuje skutečný vztah. Například
Customer--koupit –>Orderse čte přirozeněji nežOrder--zakoupenoOd –>Customer. - Dejte různým názvům typů hran, které propojují různé páry typů uzlů. Pokud se "zaměstnanec prodává objednávku" i "zákazník nakupuje objednávku" připojí k
Order, pojmenujte je jakosellsapurchases. Nedávejte jim stejný štítek. Další informace najdete v tématu Omezení vytváření na okraji sítě.
Přidání vlastností do typů okrajů
Stejně jako uzly jsou typy hran zpočátku bez vlastností. Volitelně můžete přidat vlastnosti, pokud data popisují samotný vztah, nikoli jeden koncový bod. Vlastnosti edge jsou nejužitečnější při psaní dotazů GQL, které potřebují filtrovat, agregovat nebo vracet data o samotné relaci.
Pokud chcete přidat vlastnost, poklikejte na typ okraje v editoru modelů grafu a otevřete dialogové okno pro úpravy okrajů a vyberte Upravit definici. Vyberte Přidat vlastnost a pak zvolte sloupce ze zdrojové tabulky.
Kdy přidat vlastnosti hran: Pokud sloupec odpovídá na otázku „kolik?“, „kdy?“ nebo „jakým způsobem?“ o spojení mezi dvěma uzly, patří k hraně, nikoli k žádnému z uzlů.
Příklad: V datové sadě Adventure Works hrana spojuje contains a Order přes tabulku Product. Sloupce jako OrderQty, UnitPricea LineTotal popisují vztah – kolik produktů bylo v určitém pořadí za jakou cenu. Sloupce jako OrderDate nebo ShipDate popisují samotné pořadí a patří do Order typu uzlu, ne na okraji.
Důležité
Zdrojová tabulka hrany musí obsahovat sloupce, které odpovídají klíčovým sloupcům počátečního i cílového uzlu v hodnotách a datovém typu. Tabulky, které používáte k vytvoření typů uzlů, můžou sloužit také jako hraniční zdrojové tabulky, pokud splňují tento požadavek.
Běžné vzory pro převod z tabulky na graf
Následující tabulka shrnuje, jak se některé běžné tabulkové datové struktury překládají na prvky grafu:
| Tabulková struktura | Výsledek grafu | Příklad |
|---|---|---|
| Jedna ku mnoha: Nadřazená tabulka + podřízená tabulka s cizím klíčem | Dva typy uzlů propojené typem hrany. |
Customer
--
nákupy-->Order |
| M:N: Spojovací tabulka propojující dvě tabulky | Hraniční typ mezi dvěma typy uzlů. |
Vendor
--
vyrábí-->Product |
| Vložená entita: Sloupec představující sdílenou entitu | Extrahovaný typ uzlu s hranou |
Employee
--
livesIn-->Country |
| Hierarchie: Řetěz nadřazených a podřízených tabulek | Typy uzlů propojené hranami na každé úrovni. |
Product
--
isOfType--->Subcategory --belongsTo-->Category |
Podrobný návod k modelu vložené entity najdete v tématu Přidání více typů uzlů a okrajů z jedné zdrojové tabulky.
Změna schématu grafu
Graph nepodporuje vývoj schématu. Po uložení modelu grafu je struktura typů uzlů, hraničních typů a jejich vlastností pevná. Pokud chcete provést strukturální změny, jako je přidání vlastnosti do typu uzlu, odebrání hraničního typu nebo změna klíčového sloupce, musíte vytvořit nový grafový model a znovu načíst data.
Změna schématu grafu:
- V pracovním prostoru vytvořte novou položku grafu, která se připojí ke stejnému jezeru.
- V editoru modelů grafu přidejte typy uzlů a typy hran, které potřebujete, včetně všech nových nebo upravených vlastností.
- Nakonfigurujte klíčové sloupce a mapování okrajů. Ujistěte se, že se datové typy shodují mezi klíčovými sloupci a sloupci cizího klíče.
- Vyberte Uložit a načtěte data ke sestavení nového grafu.
- Aktualizujte všechny querysets tak, aby ukazovaly na nový graf.
- Jakmile ověříte, že nový graf funguje podle očekávání, odstraňte původní položku grafu, pokud ji nepotřebujete.