Partager via


Opérateur graph-shortest-paths (préversion)

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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.

Remarque

Cet opérateur est utilisé conjointement avec l’opérateur make-graph.

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