Condividi tramite


Operatore graph-shortest-paths (anteprima)

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft 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.

Nota

Questo operatore viene usato insieme all'operatore make-graph.

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=alltutti 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