Partager via


all() (fonction de graphe)

S’applique à : ✅Microsoft Fabric

La all() fonction de graphe évalue une condition pour chaque bord ou nœud interne le long d’un chemin de longueur variable .

Remarque

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

Syntaxe

all( bord,condition)

all(inner_nodes( bord),condition)

Paramètres

Nom Catégorie Obligatoire Descriptif
bord 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.
condition string ✔️ Expression booléenne composée de propriétés du nœud interne ou du bord, 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.

Retours

Retourne true si la condition prend true la valeur pour chaque bord ou nœud interne, lorsque inner_nodes est utilisé, dans le bord de longueur variable. Sinon, falseest retourné.

Pour les chemins de longueur zéro, la condition prend la truevaleur .

Exemples

L’exemple suivant montre comment utiliser l’opérateur graph-match avec la all() fonction pour rechercher tous les chemins d’aller-retour entre deux stations d’un réseau de transport. Il utilise une ligne différente pour chaque direction. La requête construit un graphique à partir des connections données, recherchant tous les chemins d’accès jusqu’à cinq connexions longues qui utilisent la "red" ligne pour l’itinéraire vers l’extérieur et la "blue" ligne de l’itinéraire de retour. La all() fonction garantit que tous les bords du bord de longueur variable font partie de la même ligne, soit "red""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

Sortie

de outward_stations à return_stations Précédent
Central Nord-Centre-Sud>>->South-West Ouest Central
Ouest Sud-Ouest-Sud-Centre-Nord>>> Central Ouest
Central Sud->South-West Ouest Central
Ouest Sud-Ouest-Sud> Central Ouest
Central Nord-Centre-Sud>>->South-West Ouest Centre-Est> Central
Ouest Sud-Ouest-Sud-Centre-Nord>>> Central Centre-Est> Ouest
Central Sud->South-West Ouest Centre-Est> Central
Ouest Sud-Ouest-Sud> Central Centre-Est> Ouest

L’exemple suivant montre comment utiliser l’opérateur graph-shortest-paths avec les all() fonctions et inner_nodes rechercher un chemin entre deux stations d’un réseau de transport. La requête construit un graphique à partir des connections données et trouve le chemin le plus court de la "South-West" station à la "North" station, en passant par les stations où Wi-Fi est disponible.

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

Sortie

de Stations à
Sud-ouest Ouest->Centre Nord