Condividi tramite


any() (funzione del grafo)

Si applica a: ✅Microsoft Fabric

La any() funzione graph valuta una condizione per ogni bordo o nodo interno lungo un percorso di lunghezza variabile .

Nota

Questa funzione viene usata con gli operatori graph-match e graph-shortest-paths .

Sintassi

any( bordo,condizione)

any(inner_nodes( bordo),condizione)

Parametri

Nome TIPO Obbligatorio Descrizione
bordo string ✔️ Bordo di lunghezza variabile dall'operatore graph-match o dal modello di operatore graph-shortest-paths . Per altre informazioni, vedere Notazione del modello a grafo.
condizione string ✔️ Espressione booleana composta da proprietà del nodo interno o del bordo, quando viene usata inner_nodes, nel bordo di lunghezza variabile. Viene fatto riferimento a una proprietà usando direttamente il nome della proprietà. L'espressione viene valutata per ogni bordo o nodo interno nel bordo della lunghezza variabile.

Restituzioni

Restituisce true se la condizione restituisce true almeno un bordo o un nodo interno, quando viene utilizzata inner_nodes , nel bordo della lunghezza variabile. In caso contrario, restituisce false.

Per i percorsi di lunghezza zero, la condizione restituisce false.

Esempi

Nell'esempio seguente vengono usate le Locations tabelle di dati e Routes per costruire un grafo che trova i percorsi da una posizione di origine a una posizione di destinazione tramite un oggetto route. any() Usa la funzione per trovare percorsi che utilizzano "Train" il metodo di trasporto almeno una volta. Restituisce il nome della posizione di origine, il nome della posizione di destinazione e i metodi di trasporto lungo il percorso.

// 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)

Risultato

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

Nell'esempio seguente viene illustrato come usare l'operatore graph-shortest-paths con le any() funzioni e inner_nodes per trovare un percorso tra due stazioni in una rete di trasporto. La query costruisce un grafico dai connections dati e trova il percorso più breve dalla "South-West" stazione alla "North" stazione, passando attraverso almeno una stazione in cui è disponibile Wi-Fi.

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

Risultato

Da Stazioni a
South-West Centro-sud> A nord
South-West Centro-ovest> A nord