Design et grafskema i Microsoft Fabric

Bemærkning

Denne funktion er i øjeblikket tilgængelig som offentlig prøveversion. Denne prøveversion leveres uden en serviceniveauaftale og anbefales ikke til produktionsarbejdsbelastninger. Visse funktioner understøttes muligvis ikke eller kan have begrænsede funktioner. For mere information, se Supplerende Brugsvilkår for Microsoft Azure Forhåndsvisninger.

Et grafskema er samlingen af nodetyper, kanttyper og deres egenskaber, der definerer strukturen af din graf. Et veludformet grafskema gør dine data lettere at forespørge, vedligeholde og udvide. Denne artikel giver bedste praksis for at omdanne tabeldata i et søhus til en effektiv mærket ejendomsgraf i Microsoft Fabric.

Brug disse retningslinjer, før du begynder at modellere i graf-modeleditoren. For trin-for-trin instruktioner til oprettelse af noder og kanter, se grafvejledningen. Eksempler i denne artikel bruger Adventure Works' eksempeldatasæt.

Vigtigt!

Graph understøtter i øjeblikket ikke skemaudvikling. Efter du har modelleret dine data, er strukturen af noder, kanter og egenskaber fastlagt. Strukturelle ændringer, såsom at tilføje egenskaber, ændre etiketter eller ændre relationstyper, kræver, at du opretter en ny grafmodel og genindlæser alle data. Denne proces tager tid og bruger kapacitet, så planlæg dit skema grundigt, før du begynder at modellere.

Forudsætninger

Forstå nodetyper og kanttyper

Før du designer et skema, skal du forstå disse kernebegreber:

En nodetype definerer en slags enhed i din graf, såsom en kunde, et produkt eller en ordre. Den består af:

  • En label, som er navnet, der identificerer denne kategori af node. F.eks., Customer. Du bruger mærkaten i forespørgsler til at henvise til noder af denne type.
  • En kortlægningstabel, som er lakehouse-tabellen, der leverer kildedata for nodetypen. For eksempel adventureworks_customers tabellen.
  • En nøglekolonne , der entydigt identificerer hver node (mærket ID i grafmodeleditoren). F.eks., CustomerID_K.
  • Egenskaber, som er kolonner fra tabellen, der bliver attributter på hver node. For eksempel , FirstNameLastName, og EmailAddress.

En node er en individuel instans af en nodetype – én række i mappingtabellen. For eksempel bliver hver række i adventureworks_customers en Customer node.

En kanttype definerer en slags relation mellem to nodetyper. Den består af:

  • En etiket, som er navnet, der identificerer denne kategori af relationer. F.eks., purchases.
  • En kortlægningstabel , der indeholder relationsdata mellem kilde- og målnoder. For eksempel adventureworks_orders-tabellen .
  • En kildenodetype og en målnodetype , som kanten forbinder. For eksempel Customer som kilde og Order som mål.

En kant er en individuel instans af en kanttype – én række i mapping-tabellen, der forbinder to specifikke noder.

Bemærkning

I grafmodeleditoren skaber knapperne Tilføj node og Tilføj kant nodetyper og kanttyper, ikke individuelle noder eller kanter.

Identificer enheder og relationer

Start med at identificere entiteter (ting) og relationer (forbindelser) i dine data. Entiteter bliver til nodetyper. Forbindelser mellem enheder bliver kanttyper.

Stil disse spørgsmål om dine kildetabeller:

  • Hvad er de primære enheder? Rækker, der repræsenterer forskellige virkelige ting, er kandidater til nodetyper. For eksempel kunder, produkter, ordrer og medarbejdere.
  • Hvordan relaterer disse enheder sig til hinanden? Kolonner, der refererer til rækker i en anden tabel (fremmednøgler), antyder kanttyper. For eksempel CustomerID_FK peger en orders tabel på tabellen customers , hvilket antyder modellering af en purchases kant.
  • Findes der indlejrede enheder? En kolonne inde i en tabel kan repræsentere en særskilt enhed, der er værd at udtrække til sin egen nodetype. For et eksempel, se Vælg nodetyper. For en trin-for-trin gennemgang, se Tilføj flere node- og kanttyper fra én mapping-tabel.

Vælg nodetyper

Opret en nodetype for hver enhed, som du skal forespørge eller gennemgå uafhængigt. Brug disse retningslinjer:

Gør entiteten til en nodetype , når... Behold det som ejendom , når...
Du skal bevæge dig ind til eller igennem den. Det er beskrivende metadata, du kun læser, ikke gennemfører.
Flere enheder deler et forhold til den. Det er unikt for den enhed, det tilhører.
Du skal matche eller gruppere efter det direkte i forespørgsler. Du filtrerer kun efter den som en egenskab fra en anden enhed.

Eksempel: I Adventure Works-datasættet Country starter det som en kolonne i tabellen employees . Hvis du skal forespørge "hvilke medarbejdere bor i samme land?" eller "hvilke lande har flest ansatte?", så uddrag Country det til en egen nodetype. Hvis du kun behøver at vise en medarbejders land som en etiket, så lad det være en ejendom.

Vælg nøglekolonner

Hver nodetype kræver en nøglekolonne (eller sammensat nøgle), der entydigt identificerer hver node. Vælg nøgler med omhu:

  • Brug eksisterende unikke identifikatorer fra dine kildetabeller. Du kan f.eks. CustomerID_K eller ProductID_K.
  • Undgå surrogatnøgler, der mangler forretningsmæssig betydning , medmindre der ikke findes en naturlig nøgle. For eksempel foretræk CustomerID frem for et automatisk ømenende rækkenummer.
  • Brug sammensatte nøgler , når en enkelt kolonne ikke garanterer entydighed. For eksempel kan en ProductVersion node have brug for både ProductID og VersionNumber som sin nøgle.
  • Match datatyper mellem nøglekolonner og de fremmednøglekolonner, der bruges i kantmappinger. Mismatchede typer forårsager fejl i kantoprettelse.

Tips

Definer nodenøglebegrænsninger , så forespørgselsmotoren kan udføre direkte opslag på nøgleegenskaber. Denne optimering fremskynder forespørgsler, der slår specifikke noder op efter nøgle.

Vælg kanttyper

Kanttyper definerer relationerne mellem nodetyper. Hver kanttype forbinder en kildenodetype med en målnodetype via en kortlægningstabel.

Følg disse retningslinjer:

  • Brug beskrivende etiketter , der læses som verber eller verbumsfraser. For eksempel , purchasessells, , livesInog belongsTo. En velnavngiven kant gør forespørgsler lettere at læse.
  • Overvej retningen nøje. Kanterne i grafen er rettede. Vælg den retning, der bedst repræsenterer det virkelige forhold. For eksempel Customer -- læses køb –>Order mere naturligt end Order --købt af.>Customer
  • Giv forskellige navne til kanttyper, der forbinder forskellige nodetypepar. Hvis både "medarbejder sælger ordre" og "kunde køber ordre" forbinder til Order, nævn dem sells og purchases i stedet for at give begge samme mærkat. For mere information, se begrænsninger for edge-oprettelse.

Tilføj egenskaber til kanttyper

I modsætning til nodetyper starter kanttyper uden egenskaber. Du kan valgfrit tilføje egenskaber, når dataene beskriver selve relationen i stedet for enten endepunktet. Kantegenskaber er mest nyttige, når du skriver GQL-forespørgsler, der skal filtrere, aggregere eller returnere data om selve relationen.

For at tilføje en egenskab dobbeltklikker du på en kanttype i grafmodeleditoren for at åbne dialogen Rediger kantskema , vælg Tilføj egenskab, og vælg derefter en kolonne fra mapping-tabellen.

Hvornår skal kantegenskaber tilføjes: Hvis en kolonne svarer på "hvor meget?", "hvornår?" eller "på hvilken måde?" om forbindelsen mellem to noder, hører den til på kanten – ikke på nogen af noder.

Eksempel: I Adventure Works-datasættet forbinder containsOrder kanten til via Productadventureworks_orders-tabellen . Kolonner som OrderQty, UnitPrice, og LineTotal beskriver forholdet – hvor mange af et produkt der var i en bestemt ordre, til hvilken pris. Kolonner som OrderDate eller ShipDate beskriver selve rækkefølgen og hører hjemme på Order nodetypen, ikke på kanten.

Vigtigt!

Mappingtabellen for en kant skal indeholde kolonner, der matcher nøglekolonnerne for både kilde- og målnodetyper med hensyn til værdier og datatyper. Tabeller, du bruger til at oprette nodetyper, kan også fungere som kantkortlægningstabeller, hvis de opfylder dette krav.

Fjern unødvendige egenskaber

Når du opretter en nodetype ud fra en mapping-tabel, bliver hver kolonne i tabellen som standard en egenskab. For mange egenskaber øger lagerpladsen, langsomt i forespørgsler og gør grafen sværere at vedligeholde. Af disse grunde skal du fjerne egenskaber, som du ikke har brug for til forespørgsler eller analyser.

Bemærkning

Kanttyper fungerer anderledes – de starter uden egenskaber. Du tilføjer manuelt kun de egenskaber, du har brug for, ved at bruge knappen Tilføj egenskab i dialogen Rediger kantskema .

For hver nodetype behold kun egenskaber, der er:

  • Påkrævet for nodens unikhed (nøglekolonner)
  • Bruges i WHERE filtre eller RETURN projektioner i dine forespørgsler
  • Nødvendig til downstream-analyse eller visualisering

For mere information om, hvordan egenskabsantal påvirker forespørgselsydelsen, se Returner kun de egenskaber, du har brug for.

Vælg datatyper

Vælg den mest specifikke datatype for hver egenskab. De rette typer forbedrer både lagringseffektiviteten og forespørgselsydelsen:

  • Brug INT eller UINT64 til numeriske identifikatorer og tællinger. Numeriske sammenligninger er hurtigere end strengsammenligninger.
  • Brug ZONED DATETIME til tidsstempler i stedet for strengformaterede datoer.
  • Brug BOOLEAN til sande/falske flag i stedet for strengværdier som "yes" eller "no".

For den fulde liste over understøttede typer, se Nuværende begrænsninger — Datatyper.

Almindelige tabel-til-graf-mønstre

Følgende tabel opsummerer, hvordan nogle almindelige tabulære datastrukturer oversættes til grafelementer:

Tabularstruktur Grafresultat Eksempel
En til mange: Forældretabel + undertabeltabel med fremmednøgle To nodetyper forbundet af en kanttype. Customer -- køb-->Order
Mange-til-mange: Koblingstabel, der forbinder to tabeller Kanttype mellem to nodetyper. Vendor -- producerer-->Product
Indlejret entitet: Kolonne, der repræsenterer en delt enhed Udtrukket nodetype med kant. Employee -- livesI-->Country
Hierarki: Kæde af forældre-barn-tabeller Nodetyper forbundet af kanter på hvert niveau. Product -- isAfType-->Subcategory --tilhører-->Category

For en trin-for-trin gennemgang af det indlejrede entitetsmønster, se Tilføj flere node- og kanttyper fra én mapping-tabel.

Ændr dit grafskema

Graph understøtter ikke skemaudvikling. Efter du har gemt en grafmodel, er strukturen af nodetyper, kanttyper og deres egenskaber fastlagt. For at foretage strukturelle ændringer – såsom at tilføje en egenskab til en nodetype, fjerne en kanttype eller ændre en nøglekolonne – skal du oprette en ny grafmodel og genindlæse dine data.

For at ændre dit grafskema:

  1. Opret et nyt grafelement i dit arbejdsområde, der forbinder til det samme søhus.
  2. I grafmodeleditoren tilføjer du de nodetyper og kanttyper, du har brug for, inklusive eventuelle nye eller ændrede egenskaber.
  3. Konfigurer nøglekolonner og kantmappinger. Sørg for, at datatyperne matcher mellem nøglekolonner og fremmednøglekolonner.
  4. Vælg Gem for at indlæse data og opbygge den nye graf.
  5. Opdater alle forespørgselssæt til at pege på den nye graf.
  6. Efter du har bekræftet, at den nye graf fungerer som forventet, slet det oprindelige grafelement, hvis du ikke har brug for det.