Freigeben über


any() (Graph-Funktion)

Gilt für: ✅Microsoft Fabric

Die any() 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

any( Rand,Zustand)

any(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ückgaben

Gibt zurücktrue, wenn die Bedingung für mindestens einen 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.false

Beispiele

Im folgenden Beispiel werden die Locations Tabellen und Routes Daten verwendet, um ein Diagramm zu erstellen, das Pfade von einem Quellspeicherort zu einem Zielspeicherort durch ein route. Sie verwendet any() Funktion, um Pfade zu finden, die die Transportmethode mindestens einmal verwenden "Train" . Er gibt den Namen des Quellstandorts, den Zielstandortnamen und die Transportmethoden entlang der Route zurück.

// Locations table (nodes)
let Locations = datatable(LocationName: string, LocationType: string) [
    "New York", "City",
    "San Francisco", "City",
    "Chicago", "City",
    "Los Angeles", "City",
    "Seattle", "Warehouse"
];
// Routes table (edges)
let Routes = datatable(OriginLocationID: string, DestinationLocationID: string, TransportMode: string) [
    "New York", "San Francisco", "Truck",
    "New York", "Chicago", "Train",
    "San Francisco", "Los Angeles", "Truck",
    "Chicago", "Seattle", "Train",
    "Los Angeles", "New York", "Truck",
    "Seattle", "San Francisco", "Train"
];
Routes
| make-graph OriginLocationID --> DestinationLocationID with Locations on LocationName
| graph-match (src)-[route*1..2]->(dest)
  where any(route, TransportMode == "Train")
  project src.LocationName, 
        dest.LocationName, 
        route_TransportModes = map(route, TransportMode)

Ausgabe

src_LocationName dest_LocationName route_TransportModes
Seattle San Francisco ["Train"]
Chicago Seattle ["Train"]
New York Chicago ["Train"]
Seattle Los Angeles [
"Train",
"Truck"
]
Chicago San Francisco [
"Train",
"Train"
]
New York Seattle [
"Train",
"Train"
]
Los Angeles Chicago [
"Truck",
"Train"
]

Das folgende Beispiel zeigt, wie sie den graph-shortest-paths Betreiber mit den any() 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 zum Bahnhof, der mindestens eine Station durchläuft, an der "North" 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-match cycles=none  (start)-[connections*2..5]->(destination)
  where start.station == "South-West" and
        destination.station == "North" and 
        any(inner_nodes(connections), wifi)
  project from = start.station, 
          stations = strcat_array(map(inner_nodes(connections), station), "->"), 
          to = destination.station

Ausgabe

Von Bahnhöfe Bis
Sud-Ouest Süd-Zentral> Nord
Sud-Ouest West-Zentral> Nord