Delen via


Een grafiekschema ontwerpen in Microsoft Fabric

Opmerking

Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview wordt geleverd zonder een service level agreement en wordt niet aanbevolen voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure previews voor meer informatie.

Een grafiekschema is de verzameling knooppunttypen, randtypen en de bijbehorende eigenschappen waarmee de structuur van uw grafiek wordt gedefinieerd. Een goed ontworpen grafiekschema maakt uw gegevens eenvoudiger om query's uit te voeren, te onderhouden en uit te breiden. Dit artikel biedt beste praktijken voor het omzetten van tabulaire gegevens in een lakehouse naar een effectieve gelabelde eigenschapsgrafiek in Microsoft Fabric.

Gebruik deze richtlijnen voordat u begint met modelleren in de grafiekmodeleditor. Zie de grafiekzelfstudie voor stapsgewijze instructies voor het maken van knooppunten en randen. Voorbeelden in dit artikel maken gebruik van de voorbeeldgegevensset Adventure Works.

Belangrijk

Graph biedt momenteel geen ondersteuning voor de ontwikkeling van schema's. Nadat u uw gegevens hebt gemodelleerd, is de structuur van knooppunten, randen en eigenschappen opgelost. Structurele wijzigingen, zoals het toevoegen van eigenschappen, het wijzigen van labels of het wijzigen van relatietypen, vereisen dat u een nieuw grafiekmodel maakt en alle gegevens opnieuw laadt. Dit proces kost tijd en verbruikt capaciteit, dus plan uw schema grondig voordat u begint met modelleren.

Vereiste voorwaarden

Meer informatie over knooppunttypen en edge-typen

Voordat u een schema ontwerpt, moet u de volgende kernconcepten begrijpen:

Een knooppunttype definieert een soort entiteit in uw grafiek, zoals een klant, product of bestelling. Het bestaat uit:

  • Een label, de naam die deze categorie van het knooppunt identificeert. Bijvoorbeeld: Customer. U gebruikt het label in query's om te verwijzen naar knooppunten van dit type.
  • Een koppelingstabel, dat de lakehouse-tabel is die de brongegevens voor het knooppunttype levert. Bijvoorbeeld de adventureworks_customers tabel.
  • Een sleutelkolom die elk knooppunt uniek identificeert (gelabelde id in de grafiekmodeleditor). Bijvoorbeeld: CustomerID_K.
  • Eigenschappen, die kolommen uit de tabel zijn die kenmerken op elk knooppunt worden. Bijvoorbeeld, FirstName, LastNameen EmailAddress.

Een knooppunt is een afzonderlijk exemplaar van een knooppunttype: één rij in de mappingtabel. Elke rij in adventureworks_customers wordt bijvoorbeeld een Customer knooppunt.

Een edge-type definieert een soort relatie tussen twee knooppunttypen. Het bestaat uit:

  • Een label, de naam waarmee deze relatiecategorie wordt geïdentificeerd. Bijvoorbeeld: purchases.
  • Een toewijzingstabel met gegevens over de relaties tussen de bron- en doelknooppunten. Bijvoorbeeld de tabel adventureworks_orders .
  • Een bronknooppunttype en een doelknooppunttype waarmee de edge verbinding maakt. Bijvoorbeeld Customer als bron en Order als doel.

Een rand is een afzonderlijk exemplaar van een edge-type: één rij in de toewijzingstabel die twee specifieke knooppunten verbindt.

Opmerking

In de grafiekmodeleditor maken de knoppen Knooppunt toevoegen en Edge-knoppen toevoegen knooppunttypen en randtypen, niet afzonderlijke knooppunten of randen.

Entiteiten en relaties identificeren

Begin met het identificeren van de entiteiten (dingen) en relaties (verbindingen) in uw gegevens. Entiteiten worden knooppunttypen. Verbindingen tussen entiteiten worden randtypen.

Stel deze vragen over uw brontabellen:

  • Wat zijn de primaire entiteiten? Rijen die onderscheidbare reële objecten vertegenwoordigen, zijn kandidaten voor knooppunttypen. Bijvoorbeeld klanten, producten, orders en werknemers.
  • Hoe verhouden deze entiteiten zich tot elkaar? Kolommen die verwijzen naar rijen in een andere tabel (refererende sleutels) stellen randtypen voor. In een CustomerID_FK tabel verwijst bijvoorbeeld orders naar de customers tabel, waarmee het modelleren van een purchases rand wordt voorgesteld.
  • Zijn er ingesloten entiteiten? Een kolom in een tabel kan een afzonderlijke entiteit vertegenwoordigen die moet worden geëxtraheerd in een eigen knooppunttype. Zie Knooppunttypen kiezen voor een voorbeeld. Voor een stapsgewijze procedure, zie meerdere knooppunt- en randtypen toevoegen vanuit één toewijzingstabel.

Knooppunttypen kiezen

Maak een knooppunttype voor elke entiteit die u onafhankelijk van elkaar moet doorzoeken of doorlopen. Gebruik deze richtlijnen:

De entiteit een knooppunttype maken wanneer... Bewaar het als eigenschap wanneer...
U moet ernaartoe gaan of erdoorheen gaan. Het zijn beschrijvende metagegevens die u alleen leest, niet doorzoekt.
Meerdere entiteiten hebben een relatie ermee. Het is uniek voor de entiteit waartoe deze behoort.
U moet deze rechtstreeks in query's vergelijken of groeperen. Je filtert er alleen op als het een eigenschap is van een andere entiteit.

Voorbeeld: In de Adventure Works-gegevensset begint het als een kolom op de employees tabel. Als u een query wilt uitvoeren op 'welke werknemers wonen in hetzelfde land?' of 'welke landen hebben de meeste werknemers?', moet u uitpakken Country in een eigen knooppunttype. Als u alleen het land van een werknemer als label hoeft weer te geven, laat u het als een eigenschap staan.

Sleutelkolommen kiezen

Elk knooppunttype vereist een sleutelkolom (of samengestelde sleutel) die elk knooppunt uniek identificeert. Kies zorgvuldig sleutels:

  • Gebruik bestaande unieke id's uit uw brontabellen. Een voorbeeld hiervan is CustomerID_K of ProductID_K.
  • Vermijd surrogaatsleutels die geen zakelijke betekenis hebben , tenzij er geen natuurlijke sleutel bestaat. Geef bijvoorbeeld de voorkeur aan CustomerID boven een automatisch oplopend rijnummer.
  • Gebruik samengestelde sleutels wanneer één kolom geen uniekheid garandeert. Een knooppunt heeft bijvoorbeeld ProductVersion mogelijk zowel ProductID als VersionNumber als de sleutel nodig.
  • Gegevenstypen vergelijken tussen sleutelkolommen en de refererende-sleutelkolommen die worden gebruikt in edge-toewijzingen. Niet-overeenkomende typen veroorzaken fouten bij het maken van edge's.

Aanbeveling

Definieer knooppuntsleutelbeperkingen om de query-engine in staat te stellen directe zoekopdrachten uit te voeren op sleuteleigenschappen. Deze optimalisatie versnelt query's die specifieke knooppunten per sleutel opzoeken.

Randtypen kiezen

Edge-typen definiëren de relaties tussen knooppunttypen. Elk edge-type verbindt een bronknooppunttype met een doelknooppunttype via een toewijzingstabel.

Volg deze richtlijnen:

  • Gebruik beschrijvende labels die als werkwoorden of werkwoordzinnen worden gelezen. Bijvoorbeeld, purchases, sells, livesInen belongsTo. Een goed benoemde rand maakt het gemakkelijker om query's te lezen.
  • Houd zorgvuldig rekening met de richting. Randen in de grafiek worden omgeleid. Kies de richting die het beste de echte relatie vertegenwoordigt. AankopenCustomer -- leest bijvoorbeeld >Order natuurlijker dan Order --gekochtBy.>Customer
  • Geef afzonderlijke namen aan randtypen waarmee verschillende knooppunttypeparen worden verbonden. Als zowel 'werknemer verkoopt bestelling' als 'klant koopt bestelling' verbinding maken met Order, geef ze de namen sells en purchases en geef ze niet beide hetzelfde label. Zie beperkingen voor het maken van randen voor meer informatie.
  • Voeg eigenschappen toe aan randtypen wanneer de relatie zelf kenmerken heeft. Bijvoorbeeld een quantity op een contains rand of een orderDate op een purchases rand.

Belangrijk

De toewijzingstabel voor een rand moet kolommen bevatten die overeenkomen met de sleutelkolommen van zowel de bron- als doelknooppunttypen in waarden en het gegevenstype. Tabellen die u gebruikt om knooppunttypen te maken, kunnen ook dienen als koppelingstoewijzingstabellen als ze aan deze vereisten voldoen.

Overbodige eigenschappen verwijderen

Wanneer u een knooppunttype aanmaakt vanuit een mapping-tabel, wordt elke kolom in de tabel standaard een eigenschap. Verwijder eigenschappen die u niet nodig hebt voor query's of analyses.

Overmatige eigenschappen vergroten de opslag, trage query's en zorgen ervoor dat de grafiek moeilijker te onderhouden is. Houd voor elk knooppunttype alleen eigenschappen bij die:

  • Vereist voor de uniekheid van het knooppunt (sleutelkolommen)
  • Wordt gebruikt in WHERE filters of RETURN projecties in uw queries
  • Vereist voor downstreamanalyse of visualisatie

Zie Alleen de eigenschappen retourneren die u nodig hebt voor meer informatie over hoe het aantal eigenschappen van invloed is op de queryprestaties.

Gegevenstypen kiezen

Selecteer het meest specifieke gegevenstype voor elke eigenschap. De juiste typen verbeteren zowel de opslagefficiëntie als de queryprestaties:

  • Gebruik INT of UINT64 voor numerieke id's en aantallen. Numerieke vergelijkingen zijn sneller dan tekenreeksvergelijkingen.
  • Gebruik ZONED DATETIME voor tijdstempels in plaats van tekenreeks-geformatteerde datums.
  • Gebruik BOOLEAN deze optie voor waar/onwaar-vlaggen in plaats van tekenreekswaarden zoals "yes" of "no".

Zie Huidige beperkingen : gegevenstypen voor de volledige lijst met ondersteunde typen.

Algemene patronen van tabel naar grafiek

De volgende tabel geeft een overzicht van de wijze waarop enkele algemene gegevensstructuren in tabelvorm worden omgezet in grafiekelementen:

Tabellaire structuur Grafiekresultaat Voorbeeld
Een-op-veel: Ouder- + kindtabel met vreemde sleutel Twee knooppunttypen die zijn verbonden door een kanttype. Customer -- aankopen-->Order
Veel-op-veel: Verbindingstabel die twee tabellen koppelt Randtype tussen twee knooppunten. Vendor -- produceert-->Product
Ingesloten entiteit: Kolom die een gedeelde entiteit vertegenwoordigt Geëxtraheerd knooppunttype met rand. Employee -- livesIn-->Country
Hiërarchie: Reeks van ouder- en kindtabellen Knooppunttypen die zijn gekoppeld aan randen op elk niveau. Product -- isOfType-->Subcategory --belongsTo-->Category

Zie Meerdere knooppunt- en edge-typen toevoegen uit één toewijzingstabel voor een stapsgewijze handleiding van het ingesloten entiteitspatroon.