Freigeben über


all() (Graph-Funktion)

Gilt für: ✅Microsoft Fabric

Die all() Diagrammfunktion wertet eine Bedingung für jeden Rand oder inneren Knoten entlang eines Pfads mit variabler Länge aus.

Hinweis

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

Syntax

all( Rand,Zustand)

all(inner_nodes( Rand),Zustand)

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.
Bedingung string ✔️ Ein boolescher Ausdruck, der aus Eigenschaften des Rands oder inneren Knotens besteht, wenn inner_nodes verwendet wird, im 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

Gibt zurücktrue, wenn die Bedingung für jeden true oder inneren Knoten ausgewertet wird, wenn inner_nodes verwendet wird, im Rand der variablen Länge. Andernfalls wird falsezurückgegeben.

Bei Pfaden der Länge null wird die Bedingung ausgewertet.true

Beispiele

Das folgende Beispiel zeigt, wie sie den graph-match Betreiber mit der all() Funktion verwenden können, um alle Roundtrippfade zwischen zwei Stationen in einem Verkehrsnetz zu finden. Für jede Richtung wird eine andere Linie verwendet. Die Abfrage erstellt ein Diagramm aus den connections Daten, sucht nach allen Pfaden bis zu fünf Verbindungen, die die "red" Linie für die nach außen gerichtete Route verwenden, und die "blue" Zeile für die Rückgaberoute. Die all() Funktion stellt sicher, dass alle Kanten am Rand der variablen Länge Teil derselben Linie sind, entweder "red" oder "blue".

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-match (start)-[outward*1..5]->(destination)-[return*1..5]->(start)
  where start.station != destination.station and 
        all(outward, line == "red") and
        all(return, line == "blue") 
  project from = start.station, 
          outward_stations = strcat_array(map(inner_nodes(outward), station), "->"), 
          to = destination.station, 
          return_stations = strcat_array(map(inner_nodes(return), station), "->"), 
          back=start.station

Ausgabe

Von outward_stations zu return_stations Zurück
Zentral Nord-Mittel-Süd>>->South-West Westen Zentral
Westen Süd-West-Süd-Mittel-Nord>>> Zentral Westen
Zentral Süd->South-West Westen Zentral
Westen Süd-West-Süd> Zentral Westen
Zentral Nord-Mittel-Süd>>->South-West Westen Zentral-Ost> Zentral
Westen Süd-West-Süd-Mittel-Nord>>> Zentral Ost-Zentral> Westen
Zentral Süd->South-West Westen Zentral-Ost> Zentral
Westen Süd-West-Süd> Zentral Ost-Zentral> Westen

Das folgende Beispiel zeigt, wie sie den graph-shortest-paths Betreiber mit den all() Funktionen inner_nodes verwenden können, um einen Weg zwischen zwei Stationen in einem Verkehrsnetz zu finden. Die Abfrage erstellt ein Diagramm aus den connections Daten und findet den kürzesten Weg vom "South-West" Bahnhof zur Station und "North" durchläuft Stationen, in denen Wi-Fi verfügbar ist.

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-shortest-paths (start)-[connections*2..5]->(destination)
  where start.station == "South-West" and
        destination.station == "North" and 
        all(inner_nodes(connections), wifi)
  project from = start.station, 
          stations = strcat_array(map(inner_nodes(connections), station), "->"), 
          to = destination.station

Ausgabe

Von Bahnhöfe zu
Sud-Ouest West-Zentral> Nord