Opérateur graph-shortest-paths (préversion)
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
L’opérateur graph-shortest-paths
trouve les chemins les plus courts entre un ensemble de nœuds sources et un ensemble de nœuds cibles dans un graphique et retourne une table avec les résultats.
Syntaxe
G graph-shortest-paths
|
[output
=
OutputOption] Prédicat project
pattern where
[ColumnName =
] Expression [,
...]
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
G | string | ✔️ | Source du graphique, généralement la sortie d’une make-graph opération. |
Modèle | string | ✔️ | Modèle de chemin qui décrit le chemin d’accès à rechercher. Les modèles doivent inclure au moins un bord de longueur variable et ne peuvent pas contenir plusieurs séquences. |
Prédicat | expression | Expression booléenne qui se compose de propriétés de variables nommées dans le modèle et les constantes. | |
Expression | expression | ✔️ | Expression scalaire qui définit la ligne de sortie pour chaque chemin trouvé, à l’aide de constantes et de références aux propriétés de variables nommées dans le modèle. |
OutputOption | string | Spécifie la sortie de recherche comme any (par défaut) ou all . La sortie est spécifiée comme any pour un chemin le plus court par paire source/cible et all pour tous les chemins les plus courts d’une longueur minimale égale. |
Notation du modèle de chemin d’accès
Le tableau suivant montre les notations de modèle de chemin prises en charge.
Élément | Variable nommée | Élément anonyme |
---|---|---|
Nœud | ( n) |
() |
Bord dirigé de gauche à droite | -[ e]-> |
--> |
Bord dirigé de droite à gauche | <-[ e]- |
<-- |
N’importe quel bord de direction | -[ e]- |
-- |
Arête de longueur variable | -[ e*3..5]- |
-[*3..5]- |
Arête de longueur variable
Un bord de longueur variable permet à un modèle spécifique de répéter plusieurs fois dans les limites définies. Un astérisque (*
) désigne ce type de bord, suivi des valeurs d’occurrence minimale et maximale au format max..
. Ces valeurs doivent être des scalaires entiers. Toute séquence d’arêtes de cette plage peut correspondre au bord variable du modèle, à condition que tous les bords de la séquence répondent aux where
contraintes de clause.
Retours
L’opérateur graph-shortest-paths
retourne un résultat tabulaire, où chaque enregistrement correspond à un chemin d’accès trouvé dans le graphique. Les colonnes retournées sont définies dans la clause de project
l’opérateur à l’aide des propriétés des nœuds et des arêtes définies dans le modèle. Les propriétés et les fonctions des propriétés des arêtes de longueur variable sont retournées sous la forme d’un tableau dynamique. Chaque valeur du tableau correspond à une occurrence du bord de longueur variable.
Exemples
Cette section fournit des exemples pratiques illustrant comment utiliser l’opérateur graph-shortest-paths
dans différents scénarios.
Trouver le any
chemin le plus court entre deux gares
L’exemple suivant montre comment utiliser l’opérateur graph-shortest-paths
pour trouver le chemin le plus court entre deux stations dans un réseau de transport. La requête construit un graphique à partir des données et connections
trouve le chemin le plus court de la "South-West"
"North"
station, en tenant compte des chemins jusqu’à cinq connexions. Étant donné que la sortie par défaut est any
, il trouve n’importe quel chemin le plus court.
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
Sortie
from | path | line | à |
---|---|---|---|
Sud-ouest | [ « Sud », « Central », « Nord » ] |
[ « rouge », « rouge », « rouge » ] |
Nord |
Trouver tous les chemins les plus courts entre deux gares
L’exemple suivant, comme l’exemple précédent, recherche les chemins les plus courts dans un réseau de transport. Toutefois, elle utilise output=all
, retourne donc tous les chemins les plus courts.
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
Sortie
from | path | line | à |
---|---|---|---|
Sud-ouest | [ « Sud », « Central », « Nord » ] |
[ « rouge », « rouge », « rouge » ] |
Nord |
Sud-ouest | [ « Ouest », « Central », « Nord » ] |
[ « rouge », « blue », « rouge » ] |
Nord |