Freigeben über


Graph-shortest-paths-Operator (Vorschau)

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Der graph-shortest-paths Operator findet die kürzesten Pfade zwischen einer Reihe von Quellknoten und einer Gruppe von Zielknoten in einem Diagramm und gibt eine Tabelle mit den Ergebnissen zurück.

Hinweis

Dieser Operator wird zusammen mit dem Make-Graph-Operator verwendet.

Syntax

G graph-shortest-paths | [output = OutputOption] Musterprädikat project where [ColumnName =] Ausdruck [, ...]

Parameter

Name Type Erforderlich Beschreibung
G Zeichenfolge ✔️ Die Diagrammquelle, in der Regel die Ausgabe eines make-graph Vorgangs.
Muster Zeichenfolge ✔️ Ein Pfadmuster , das den zu findenden Pfad beschreibt. Muster müssen mindestens einen Rand mit variabler Länge enthalten und dürfen nicht mehrere Sequenzen enthalten.
Prädikat expression Ein boolescher Ausdruck, der aus Eigenschaften benannter Variablen im Muster und konstanten besteht.
Ausdruck expression ✔️ Ein skalarer Ausdruck, der die Ausgabezeile für jeden gefundenen Pfad definiert, wobei Konstanten und Verweise auf Eigenschaften benannter Variablen im Muster verwendet werden.
OutputOption Zeichenfolge Gibt die Suchausgabe als any (Standard) oder all. Die Ausgabe wird für any einen einzelnen kürzesten Pfad pro Quell-/Zielpaar und all für alle kürzesten Pfade gleicher Mindestlänge angegeben.

Pfadmusternotation

Die folgende Tabelle zeigt die unterstützten Pfadmusternotationen.

Element Benannte Variable Anonymous-Element
Node (n) ()
Gerichtete Kante von links nach rechts -[e]-> -->
Gerichtete Kante von rechts nach links <-[e]- <--
Beliebige Richtungskante -[e]- --
Variabler Längenrand -[e*3..5]- -[*3..5]-

Variabler Längenrand

Ein Rand mit variabler Länge ermöglicht es einem bestimmten Muster, mehrere Male innerhalb definierter Grenzwerte zu wiederholen. Ein Sternchen (*) gibt diesen Edgetyp an, gefolgt von den Minimal- und Maximalwertwerten im Format "min"... Diese Werte müssen ganzzahlige Skalare sein. Jede Abfolge von Kanten innerhalb dieses Bereichs kann mit dem variablen Rand des Musters übereinstimmen, vorausgesetzt, alle Kanten in der Sequenz entsprechen den where Klauseleinschränkungen.

Gibt zurück

Der graph-shortest-paths Operator gibt ein tabellarisches Ergebnis zurück, wobei jeder Datensatz einem Pfad entspricht, der im Diagramm gefunden wird. Die zurückgegebenen Spalten werden in der Operatorklausel project mithilfe von Eigenschaften von Knoten und Kanten definiert, die im Muster definiert sind. Eigenschaften und Funktionen von Eigenschaften variabler Längenränder werden als dynamisches Array zurückgegeben. Jeder Wert im Array entspricht einem Vorkommen des Rands der variablen Länge.

Beispiele

In diesem Abschnitt finden Sie praktische Beispiele zur Verwendung des graph-shortest-paths Operators in verschiedenen Szenarien.

Kürzester any Weg zwischen zwei Bahnhöfen

Im folgenden Beispiel wird veranschaulicht, wie der Betreiber den graph-shortest-paths kürzesten Weg zwischen zwei Stationen in einem Verkehrsnetz finden kann. Die Abfrage erstellt ein Diagramm aus den Daten in connections und findet den kürzesten Pfad von der "South-West" "North" Station, wobei Pfade bis zu fünf Verbindungen lang berücksichtigt werden. Da die Standardausgabe lautet any, wird jeder kürzeste Pfad gefunden.

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

Von path line Bis
Sud-Ouest [
"Süd",
"Zentral",
"Nord"
]
[
"rot",
"rot",
"rot"
]
Nord

Alle kürzesten Wege zwischen zwei Bahnhöfen finden

Im folgenden Beispiel, wie im vorherigen Beispiel, werden die kürzesten Wege in einem Transportnetz gefunden. Es wird jedoch verwendet output=all, sodass alle kürzesten Pfade zurückgegeben werden.

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

Von path line Bis
Sud-Ouest [
"Süd",
"Zentral",
"Nord"
]
[
"rot",
"rot",
"rot"
]
Nord
Sud-Ouest [
"West",
"Zentral",
"Nord"
]
[
"rot",
"blau",
"rot"
]
Nord