Condividi tramite


Progettare uno schema del grafo in Microsoft Fabric

Annotazioni

Questa funzionalità è attualmente disponibile in anteprima pubblica. Questa anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per ulteriori informazioni, vedere Condizioni d'uso supplementari per le anteprime di Microsoft Azure.

Uno schema del grafo è la raccolta di tipi di nodo, tipi di arco e le relative proprietà che definiscono la struttura del grafico. Uno schema di grafo ben progettato rende più semplice interrogare, gestire ed estendere i tuoi dati. Questo articolo illustra le procedure consigliate per trasformare i dati tabulari all'interno di un lakehouse in un grafo di proprietà etichettato in Microsoft Fabric.

Usare queste linee guida prima di iniziare la modellazione nell'editor di modelli a grafo. Per istruzioni dettagliate sulla creazione di nodi e archi, consultare il tutorial sul grafo. Gli esempi in questo articolo usano il set di dati di esempio Adventure Works.

Importante

Il grafico attualmente non supporta l'evoluzione dello schema. Dopo aver modellato i dati, la struttura di nodi, archi e proprietà è fissa. Le modifiche strutturali, ad esempio l'aggiunta di proprietà, la modifica di etichette o la modifica dei tipi di relazione, richiedono la creazione di un nuovo modello a grafo e il ricaricamento di tutti i dati. Questo processo richiede tempo e utilizza la capacità, quindi pianificare accuratamente lo schema prima di iniziare la modellazione.

Prerequisiti

Informazioni sui tipi di nodo e sui tipi di arco

Prima di progettare uno schema, comprendere questi concetti di base:

Un tipo di nodo definisce un tipo di entità nel grafico, ad esempio un cliente, un prodotto o un ordine. È costituito da:

  • Etichetta, ovvero il nome che identifica questa categoria di nodo. Ad esempio: Customer. Si usa l'etichetta nelle query per fare riferimento ai nodi di questo tipo.
  • Tabella di mapping, ovvero la tabella lakehouse che fornisce i dati di origine per il tipo di nodo. Ad esempio, la tabella adventureworks_customers .
  • Colonna chiave che identifica in modo univoco ogni nodo (ID etichettato nell'editor dei modelli a grafo). Ad esempio: CustomerID_K.
  • Proprietà, ovvero colonne della tabella che diventano attributi in ogni nodo. Ad esempio, FirstName, LastName, e EmailAddress.

Un nodo è una singola istanza di un tipo di nodo, una riga nella tabella di mapping. Ad esempio, ogni riga in adventureworks_customers diventa un Customer nodo.

Un tipo di arco definisce un tipo di relazione tra due tipi di nodo. È costituito da:

  • Etichetta, ovvero il nome che identifica questa categoria di relazione. Ad esempio: purchases.
  • Tabella di mapping che contiene i dati della relazione tra i nodi di origine e di destinazione. Ad esempio, la tabella adventureworks_orders .
  • Un tipo di nodo sorgente e un tipo di nodo di destinazione che l'arco connette. Ad esempio, Customer come origine e Order come destinazione.

Un arco è una singola istanza di un tipo di arco, una riga nella tabella di mapping che connette due nodi specifici.

Annotazioni

Nell'editor dei modelli a grafo i pulsanti Aggiungi nodo e Aggiungi bordo creano tipi di nodo e tipi di arco, non singoli nodi o archi.

Identificare entità e relazioni

Per iniziare, identificare le entità (elementi) e le relazioni (connessioni ) nei dati. Le entità diventano tipi di nodo. Le connessioni tra le entità diventano tipi di arco.

Porre queste domande sulle tabelle di origine:

  • Quali sono le entità primarie? Le righe che rappresentano elementi reali distinti sono candidati per i tipi di nodo. Ad esempio, clienti, prodotti, ordini e dipendenti.
  • In che modo queste entità sono correlate tra loro? Le colonne che fanno riferimento a righe in un'altra tabella (chiavi esterne) suggeriscono tipi di arco. Ad esempio, CustomerID_FK in una orders tabella punta alla customers tabella, che suggerisce la modellazione di un purchases bordo.
  • Sono presenti entità incorporate? Una colonna all'interno di una tabella può rappresentare un'entità distinta da estrarre nel proprio tipo di nodo. Per un esempio, vedere Scegliere i tipi di nodo. Per una procedura dettagliata, vedere Aggiungere più tipi di nodo e di arco da una tabella di mapping.

Scegliere i tipi di nodo

Creare un tipo di nodo per ogni entità di cui è necessario eseguire query o attraversare in modo indipendente. Usare queste linee guida:

Impostare l'entità su un tipo di nodo quando... Mantieni come proprietà quando...
È necessario arrivare fino a esso o attraversarlo. Si tratta di metadati descrittivi che vengono letti, non esplorati.
Più entità condividono una relazione con essa. È univoco per l'entità a cui appartiene.
È necessario abbinare o raggruppare direttamente in base a esso nelle query. Puoi filtrare solo in base a essa come proprietà di un'altra entità.

Esempio: Nel set di dati Adventure Works Country inizia come colonna nella tabella employees. Se è necessario eseguire una query su "quali dipendenti risiedono nello stesso paese?" o "quali paesi hanno la maggior parte dei dipendenti?", estrarre Country nel proprio tipo di nodo. Se è sufficiente visualizzare il paese di un dipendente come etichetta, lasciarlo come proprietà.

Scegliere le colonne chiave

Ogni tipo di nodo richiede una colonna chiave (o una chiave composta) che identifica in modo univoco ogni nodo. Scegliere attentamente le chiavi:

  • Usare gli identificatori univoci esistenti dalle tabelle di origine. Ad esempio, CustomerID_K o ProductID_K.
  • Evitare chiavi surrogate che non hanno significato aziendale a meno che non esista alcuna chiave naturale. Ad esempio, preferire CustomerID rispetto a un numero di riga con incremento automatico.
  • Usare chiavi composte quando una singola colonna non garantisce l'univocità. Ad esempio, un ProductVersion nodo potrebbe richiedere sia ProductID che VersionNumber come chiave.
  • Trova la corrispondenza dei tipi di dati tra le colonne chiave e le colonne chiave esterna usate nei mapping dei bordi. I tipi non corrispondenti causano errori di creazione dei bordi.

Suggerimento

Definire i vincoli di chiave del nodo per consentire al motore di query di eseguire ricerche dirette sulle proprietà chiave. Questa ottimizzazione velocizza le query che cercano nodi specifici in base alla chiave.

Scegliere i tipi di arco

I tipi di arco definiscono le relazioni tra i tipi di nodo. Ogni tipo di arco connette un tipo di nodo di origine a un tipo di nodo di destinazione tramite una tabella di mappatura.

Seguire queste linee guida:

  • Usare etichette descrittive che vengono lette come verbi o frasi verbali. Ad esempio, purchases, sells, livesIne belongsTo. Un "edge" ben nominato semplifica la lettura delle query.
  • Considerare attentamente la direzione. I bordi del grafico sono diretti. Scegliere la direzione che meglio rappresenta la relazione reale. Ad esempio, Customer --acquisti-->Order si legge più naturalmente di Order --acquistatoDa-->Customer.
  • Assegnate nomi distinti ai tipi di edge che connettono coppie di tipi di nodo diverse. Se sia "ordine venduto da dipendente" che "ordine acquistato da cliente" si connettono a Order, denominarli sells e purchases invece di assegnare a entrambi la stessa etichetta. Per altre informazioni, vedere Limitazioni per la creazione dei bordi.

Aggiungere proprietà ai tipi di arco

A differenza dei tipi di nodo, i tipi di arco iniziano senza proprietà. Facoltativamente, è possibile aggiungere proprietà quando i dati descrivono la relazione stessa anziché uno degli endpoint. Le proprietà edge sono più utili quando si scrivono query GQL che devono filtrare, aggregare o restituire dati sulla relazione stessa.

Per aggiungere una proprietà, fare doppio clic su un bordo nell'editor del modello a grafo per aprire la finestra di dialogo Modifica schema arco, selezionare Aggiungi proprietà e quindi scegliere una colonna dalla tabella di mappatura.

Quando aggiungere proprietà perimetrali: Se una colonna risponde a "quanto?", "quando?", o "in che modo?" sulla connessione tra due nodi, appartiene al bordo, non su entrambi i nodi.

Esempio: Nel set di dati Adventure Works, l'contains arco collega Order a Product tramite la tabella adventureworks_orders. Colonne come OrderQty, UnitPricee LineTotal descrivono la relazione , ovvero il numero di un prodotto in un ordine specifico, a quale prezzo. Colonne come OrderDate o ShipDate descrivono l'ordine stesso e appartengono al Order tipo di nodo, non sul bordo.

Importante

La tabella di mapping per un arco deve contenere colonne che corrispondono alle colonne chiave dei tipi di nodo di origine e di destinazione nei valori e nel tipo di dati. Le tabelle usate per creare tipi di nodo possono fungere anche da tabelle di mapping dei bordi se soddisfano questo requisito.

Rimuovere le proprietà non necessarie

Quando si crea un tipo di nodo da una tabella di mapping, ogni colonna della tabella diventa una proprietà per impostazione predefinita. Le proprietà eccessive aumentano l'archiviazione, le query lente e rendono il grafico più difficile da gestire. Per questi motivi, rimuovere le proprietà non necessarie per le query o l'analisi.

Annotazioni

I tipi di arco funzionano in modo diverso: iniziano senza proprietà. È possibile aggiungere manualmente solo le proprietà necessarie usando il pulsante Aggiungi proprietà nella finestra di dialogo Modifica schema edge .

Per ogni tipo di nodo mantenere solo le proprietà seguenti:

  • Obbligatorio per l'univocità del nodo (colonne chiave)
  • Usato nei filtri WHERE o nelle proiezioni RETURN delle query
  • Necessario per l'analisi o la visualizzazione downstream

Per altre informazioni sul modo in cui il conteggio delle proprietà influisce sulle prestazioni delle query, vedere Restituire solo le proprietà necessarie.

Scegliere i tipi di dati

Selezionare il tipo di dati più specifico per ogni proprietà. I tipi corretti migliorano sia l'efficienza di archiviazione che le prestazioni delle query:

  • Usare INT o UINT64 per identificatori numerici e conteggi. I confronti numerici sono più veloci rispetto ai confronti tra stringhe.
  • Usare ZONED DATETIME per i timestamp anziché per le date in formato stringa.
  • Usare BOOLEAN per flag true/false anziché valori stringa come "yes" o "no".

Per l'elenco completo dei tipi supportati, vedere Limitazioni correnti - Tipi di dati.

Modelli tabulari a grafo comuni

Nella tabella seguente viene riepilogato il modo in cui alcune strutture di dati tabulari comuni vengono convertite in elementi del grafo:

Struttura tabulare Risultato grafico Esempio
Uno-a-molti: Tabella padre + tabella figlio con chiave esterna Due tipi di nodo connessi da un tipo di arco. Customer -- acquisti-->Order
Molti-a-molti: Tabella di giunzione che collega due tabelle Tipo di arco tra due tipi di nodo. Vendor -- produce-->Product
Entità incorporata: Colonna che rappresenta un'entità condivisa Tipo di nodo estratto con arco. Employee -- livesIn-->Country
Gerarchia: Catena di tabelle padre-figlio Tipi di nodo collegati da archi a ogni livello. Product -- isOfType-->Subcategory --belongsTo-->Category

Per una procedura dettagliata del modello di entità incorporata, vedere Aggiungere più tipi di nodi e archi da una tabella di mapping.

Modificare lo schema del grafo

Graph non supporta l'evoluzione dello schema. Dopo aver salvato un modello a grafo, la struttura dei tipi di nodo, i tipi di arco e le relative proprietà è fissa. Per apportare modifiche strutturali, ad esempio l'aggiunta di una proprietà a un tipo di nodo, la rimozione di un tipo di arco o la modifica di una colonna chiave, è necessario creare un nuovo modello a grafo e ricaricare i dati.

Per modificare lo schema del grafo:

  1. Nella tua area di lavoro, crea un nuovo elemento grafico che si collega alla stessa lakehouse.
  2. Nell'editor dei modelli a grafo aggiungere i tipi di nodo e i tipi di arco necessari, incluse eventuali proprietà nuove o modificate.
  3. Configurare le colonne chiave e le mappature dei bordi. Assicurarsi che i tipi di dati corrispondano tra le colonne chiave e le colonne chiave esterna.
  4. Selezionare Salva per inserire i dati e compilare il nuovo grafico.
  5. Aggiornare tutti i set di query in modo che puntino al nuovo grafico.
  6. Dopo aver verificato che il nuovo grafico funzioni come previsto, eliminare l'elemento del grafo originale se non è necessario.