Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 creato un modello a grafo e caricato i dati, eventuali modifiche strutturali, ad esempio l'aggiunta o la rimozione di tipi di nodo, tipi di arco e proprietà, richiedono di ricaricare tutti i dati prima di eseguire query sulla struttura aggiornata. Per ricaricare i dati, selezionare Salva nella barra multifunzione superiore. Questo processo di ricaricamento dei dati richiede tempo e utilizza la capacità, quindi pianificare accuratamente lo schema prima di iniziare la modellazione.
Prerequisiti
- Area di lavoro Fabric con una lakehouse contenente le tabelle di origine.
- Familiarità con l'editor di modelli a grafo.
- Facoltativo: il set di dati di esempio Adventure Works per seguire gli esempi in questo articolo.
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 del nodo, 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 origine, 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. Ad esempio:
CustomerID_K. -
Proprietà, ovvero colonne della tabella che è possibile aggiungere come attributi in ogni nodo. Ad esempio,
FirstName,LastName, eEmailAddress.
Un nodo è una singola istanza di un tipo di nodo, una riga nella tabella di origine. 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 di arco, ossia il nome che identifica questa categoria di relazione. Ad esempio:
purchases. - Tabella di origine che contiene i dati della relazione tra i nodi di origine e di destinazione. Ad esempio, la tabella adventureworks_orders .
- Un tipo di nodo di origine e un tipo di nodo di destinazione che l'arco collega. Ad esempio,
Customercome origine eOrdercome destinazione.
Un arco è una singola istanza di un tipo di arco, una riga nella tabella di origine 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_FKin unaorderstabella punta allacustomerstabella, che suggerisce la modellazione di unpurchasesbordo. - 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 nodi e archi da una tabella di origine.
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_KoProductID_K. -
Evitare chiavi surrogate che non hanno significato aziendale a meno che non esista alcuna chiave naturale. Ad esempio, preferire
CustomerIDrispetto a un numero di riga con incremento automatico. -
Usare chiavi composte quando una singola colonna non garantisce l'univocità. Ad esempio, un
ProductVersionnodo potrebbe richiedere siaProductIDcheVersionNumbercome 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.
Aggiungere le proprietà del nodo
Quando si crea un tipo di nodo, scegliere le proprietà della tabella di origine da includere come proprietà nel tipo di nodo, in particolare le proprietà per le quali sono state applicate le regole di accesso di OneLake Security alla tabella di origine sottostante.
Aggiungere proprietà durante la creazione del nodo con il pulsante + Aggiungi proprietà . In alternativa, aggiungere proprietà a un nodo esistente facendo doppio clic sul tipo di nodo nell'editor del modello a grafo per aprire la finestra di dialogo di modifica del nodo e selezionando Modifica definizione. Selezionare Aggiungi proprietà e quindi scegliere colonne dalla tabella di origine.
È possibile che non si voglia aggiungere ogni colonna nella tabella come proprietà. Le proprietà eccessive aumentano l'archiviazione, le query lente e rendono il grafico più difficile da gestire. Per questi motivi, evitare di aggiungere proprietà non necessarie per query o analisi.
Per ogni tipo di nodo mantenere solo le proprietà seguenti:
- Obbligatorio per l'univocità del nodo (colonne chiave)
- Usato nei filtri
WHEREo nelle proiezioniRETURNdelle 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
INToUINT64per identificatori numerici e conteggi. I confronti numerici sono più veloci rispetto ai confronti tra stringhe. - Usare
ZONED DATETIMEper i timestamp anziché per le date in formato stringa. - Usare
BOOLEANper flag true/false anziché valori stringa come"yes"o"no".
Per l'elenco completo dei tipi supportati, vedere Limitazioni correnti - Tipi di dati.
Scegliere i tipi di arco
I tipi di arco definiscono le relazioni tra i tipi di nodo. Ogni tipo di arco collega un tipo di nodo di origine a un tipo di nodo di destinazione attraverso una tabella di origine.
Seguire queste linee guida:
-
Usare etichette descrittive che vengono lette come verbi o frasi verbali. Ad esempio,
purchases,sells,livesInebelongsTo. 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-->Ordersi legge più naturalmente diOrder--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, denominarlisellsepurchasesinvece di assegnare a entrambi la stessa etichetta. Per altre informazioni, vedere Limitazioni per la creazione dei bordi.
Aggiungere proprietà ai tipi di arco
Come i nodi, 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 tipo di bordo nell'editor del modello a grafo per aprire la finestra di dialogo di modifica dei bordi e selezionare Modifica definizione. Selezionare Aggiungi proprietà e quindi scegliere colonne dalla tabella di origine.
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 uno dei due 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 origine 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 origine perimetrali se soddisfano questo requisito.
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
--
èDiTipo-->Subcategory --appartieneA-->Category |
Per una procedura dettagliata del modello di entità incorporata, vedere Aggiungere più nodi e tipi di arco da una tabella di origine.
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:
- Nella tua area di lavoro, crea un nuovo elemento grafico che si collega alla stessa lakehouse.
- Nell'editor dei modelli a grafo aggiungere i tipi di nodo e i tipi di arco necessari, incluse eventuali proprietà nuove o modificate.
- 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.
- Selezionare Salva per inserire i dati e compilare il nuovo grafico.
- Aggiornare tutti i set di query in modo che puntino al nuovo grafico.
- Dopo aver verificato che il nuovo grafico funzioni come previsto, eliminare l'elemento del grafo originale se non è necessario.