Partager via


map() (fonction de graphe)

S’applique à : ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

La fonction de graphique map() calcule une expression pour chaque edge ou nœud interne le long d’une longueur variable chemin et retourne un tableau dynamique de tous les résultats.

Remarque

Cette fonction est utilisée avec les de correspondance de graphique et les chemins d’accès les plus courts graphiques.

Syntaxe

map(*edge*, *expression*)'

map(inner_nodes( expression de périphérie),)

Paramètres

Nom Catégorie Obligatoire Descriptif
de périphérie string ✔️ Un bord de longueur variable de l’opérateur de correspondance de graphique ou opérateur de chemins d’accès les plus courts du graphique modèle. Pour plus d’informations, consultez notation de modèle Graph.
expression string ✔️ Calcul à effectuer sur les propriétés de l'de périphérie ou nœud interne, lorsque inner_nodes est utilisé, dans le bord de longueur variable. Une propriété est référencée directement à l’aide du nom de propriété. L’expression est évaluée pour chaque bord ou nœud interne dans le bord de longueur variable.

Retourne

Tableau dynamique dans lequel :

  • La longueur du tableau correspond au nombre de bords ou de nœuds internes, lorsque inner_nodes est utilisé, dans le bord de longueur variable.
  • Le tableau est vide pour les chemins de longueur nulle.
  • Chaque élément du tableau correspond aux résultats de l’application de l’expression à chaque bord ou nœud interne dans le bord de longueur variable.

Exemples

Les exemples de cette section montrent comment utiliser la syntaxe pour vous aider à commencer.

Trouver la station et la ligne pour le trajet le plus court entre deux stations

L’exemple suivant montre comment utiliser l’opérateur graph-shortest-paths pour trouver le chemin le plus court entre le "South-West" et les stations de "North" dans un réseau de transport. Il ajoute des informations de ligne au chemin à l’aide de la fonction map(). La requête construit un graphique à partir des données connections, compte tenu des chemins d’accès jusqu’à cinq connexions longues.

Exécuter le de requête

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 = map(connections, strcat(to_station, " (", line, ")")), to = destination.station

de sortie

De chemin À
Sud-ouest [
« Sud (rouge) »,
« Central (rouge) »,
« Nord (rouge) »
]
Nord

Obtenir la liste des escales avec Wi-Fi dans tous les itinéraires entre deux stations

L’exemple suivant montre comment utiliser l’opérateur graph-match avec les fonctions all() et inner_nodes pour rechercher toutes les escales avec des Wi-Fi le long de tous les itinéraires entre deux stations dans un réseau de transport.

Exécuter le de requête

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",
]; 
let stations = datatable(station:string, wifi:bool) 
[ 
  "Central", true,
  "North", false,
  "South", false,
  "South-West", true,
  "West", true,
  "East", false
];
connections 
| make-graph from_station --> to_station with stations on station
| graph-match cycles=none (start)-[connections*1..5]->(destination)
  where start.station == "South-West" and destination.station == "East"
  project stopovers = strcat_array(map(inner_nodes(connections), station), "->"),
          stopovers_with_wifi = set_intersect(map(inner_nodes(connections), station), map(inner_nodes(connections), iff(wifi, station, "")))

de sortie

Escales stopovers_with_wifi
Ouest->Centre [ « Ouest », « Centre"]
Sud->Centre [ « Central"]