Graph-shortest-paths-Operator (Vorschau)
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 |