Operatore graph-shortest-paths (anteprima)
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
L'operatore graph-shortest-paths
trova i percorsi più brevi tra un set di nodi di origine e un set di nodi di destinazione in un grafico e restituisce una tabella con i risultati.
Sintassi
G graph-shortest-paths
|
[output
=
OutputOption] Predicato project
modello where
[ColumnName =
] Expression [,
...]
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
G | string | ✔️ | Origine del grafo, in genere l'output di un'operazione make-graph . |
Modello | string | ✔️ | Modello di percorso che descrive il percorso da trovare. I modelli devono includere almeno un bordo di lunghezza variabile e non possono contenere più sequenze. |
Predicato | expression | Espressione booleana costituita da proprietà di variabili denominate nel criterio e nelle costanti. | |
Expression | expression | ✔️ | Espressione scalare che definisce la riga di output per ogni percorso trovato, usando costanti e riferimenti alle proprietà delle variabili denominate nel criterio. |
OutputOption | string | Specifica l'output di ricerca come any (impostazione predefinita) o all . L'output viene specificato come any per un singolo percorso più breve per ogni coppia di origine/destinazione e all per tutti i percorsi più brevi di lunghezza minima uguale. |
Notazione del modello di percorso
Nella tabella seguente vengono illustrate le notazioni dei criteri di percorso supportate.
Elemento | Variabile denominata | Elemento Anonimo |
---|---|---|
Node | ( n) |
() |
Bordo diretto da sinistra a destra | -[ e]-> |
--> |
Bordo diretto da destra a sinistra | <-[ e]- |
<-- |
Qualsiasi bordo di direzione | -[ e]- |
-- |
Bordo a lunghezza variabile | -[ e*3..5]- |
-[*3..5]- |
Bordo a lunghezza variabile
Un bordo di lunghezza variabile consente a un modello specifico di ripetere più volte entro i limiti definiti. Un asterisco (*
) indica questo tipo di bordo, seguito dai valori di occorrenza minimo e massimo nel formato min..
max. Questi valori devono essere scalari interi. Qualsiasi sequenza di archi all'interno di questo intervallo può corrispondere al bordo variabile del criterio, purché tutti i bordi della sequenza soddisfino i vincoli della where
clausola.
Valori restituiti
L'operatore graph-shortest-paths
restituisce un risultato tabulare, in cui ogni record corrisponde a un percorso trovato nel grafico. Le colonne restituite vengono definite nella clausola dell'operatore project
usando proprietà di nodi e archi definiti nel modello. Le proprietà e le funzioni delle proprietà dei bordi di lunghezza variabile vengono restituite come matrice dinamica. Ogni valore nella matrice corrisponde a un'occorrenza del bordo della lunghezza variabile.
Esempi
Questa sezione fornisce esempi pratici che illustrano come usare l'operatore graph-shortest-paths
in scenari diversi.
Trovare any
il percorso più breve tra due stazioni ferroviarie
L'esempio seguente illustra come usare l'operatore graph-shortest-paths
per trovare il percorso più breve tra due stazioni in una rete di trasporto. La query costruisce un grafico dai dati in connections
e trova il percorso più breve dalla "South-West"
stazione alla "North"
stazione, considerando i percorsi fino a cinque connessioni lunghe. Poiché l'output predefinito è any
, trova qualsiasi percorso più breve.
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
connections
| make-graph from_station --> to_station with_node_id=station
| graph-shortest-paths (start)-[connections*1..5]->(destination)
where start.station == "South-West" and destination.station == "North"
project from = start.station, path = connections.to_station, line = connections.line, to = destination.station
Output
da | path | line | to |
---|---|---|---|
South-West | [ "Sud", "Centrale", "Nord" ] |
[ "rosso", "rosso", "rosso" ] |
North |
Trovare tutti i percorsi più brevi tra due stazioni ferroviarie
L'esempio seguente, come nell'esempio precedente, trova i percorsi più brevi in una rete di trasporto. Tuttavia, usa , quindi restituisce output=all
tutti i percorsi più brevi.
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
connections
| make-graph from_station --> to_station with_node_id=station
| graph-shortest-paths output=all (start)-[connections*1..5]->(destination)
where start.station == "South-West" and destination.station == "North"
project from = start.station, path = connections.to_station, line = connections.line, to = destination.station
Output
da | path | line | to |
---|---|---|---|
South-West | [ "Sud", "Centrale", "Nord" ] |
[ "rosso", "rosso", "rosso" ] |
North |
South-West | [ "West", "Centrale", "Nord" ] |
[ "rosso", "blu", "rosso" ] |
North |