Freigeben über


map() (Graph-Funktion)

Gilt für: ✅Microsoft Fabric

Die map() Diagrammfunktion berechnet einen Ausdruck für jeden Rand oder inneren Knoten entlang eines Pfads mit variabler Länge und gibt ein dynamisches Array aller Ergebnisse zurück.

Hinweis

Diese Funktion wird mit den Operatoren "graph-match " und " graph-shortest"-Pfade verwendet.

Syntax

map(*edge*, *expression*)'

map(inner_nodes( Rand),Ausdruck)

Die Parameter

Name Typ Erforderlich BESCHREIBUNG
Rand string ✔️ Ein Rand mit variabler Länge vom Operator für Diagramm-Übereinstimmungen oder vom Operatormuster "Graph-shortest-paths" . Weitere Informationen finden Sie unter Graph-Musternotation.
Ausdruck string ✔️ Die Berechnung, die über die Eigenschaften des Rands oder des inneren Knotens ausgeführt werden soll, wenn inner_nodes verwendet wird, am Rand der variablen Länge. Auf eine Eigenschaft wird direkt mithilfe des Eigenschaftennamens verwiesen. Der Ausdruck wird für jeden Rand oder inneren Knoten am Rand der variablen Länge ausgewertet.

Rückkehr

Ein dynamisches Array, in dem:

  • Die Arraylänge entspricht der Anzahl der Kanten oder inneren Knoten, wenn inner_nodes verwendet wird, am Rand der variablen Länge.
  • Das Array ist für Pfade der Länge Null leer.
  • Jedes Element im Array entspricht den Ergebnissen des Anwendens des Ausdrucks auf jeden Rand oder inneren Knoten am Rand der Variablenlänge.

Beispiele

Die Beispiele in diesem Abschnitt zeigen, wie Sie die Syntax verwenden, um Ihnen den Einstieg zu erleichtern.

Finden Sie den Bahnhof und die Linie für die kürzeste Strecke zwischen zwei Stationen

Das folgende Beispiel zeigt, wie sie den graph-shortest-paths Betreiber verwenden können, um den kürzesten Weg zwischen den "South-West" Stationen "North" in einem Verkehrsnetz zu finden. Er fügt den Pfad mithilfe der map() Funktion Zeileninformationen hinzu. Die Abfrage erstellt ein Diagramm aus den connections Daten, wobei Pfade bis zu fünf Verbindungen lang berücksichtigt 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 (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

Ausgabe

Von Pfad zu
Sud-Ouest [
"Süd (rot)",
"Zentral (rot)",
"Nord (Rot)"
]
Nord

Liste der Haltestellen mit Wi-Fi in allen Strecken zwischen zwei Stationen abrufen

Das folgende Beispiel zeigt, wie sie den graph-match Betreiber mit den all() Funktionen inner_nodes verwenden, um alle Haltestellen mit Wi-Fi entlang aller Routen zwischen zwei Stationen in einem Verkehrsnetz zu finden.

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, "")))

Ausgabe

Zwischenstopps stopovers_with_wifi
West-Zentral> [ "West", "Central"]
Süd-Zentral> [ "Zentral"]