any() (grafiekfunctie)

Schakelen tussen services met behulp van de vervolgkeuzelijst Versie . Meer informatie over navigatie.
Van toepassing op: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

De any() grafiekfunctie evalueert een voorwaarde voor elk edge - of binnenknooppunt langs een pad met de lengte van een variabele .

Notitie

Deze functie wordt gebruikt met de graph-match en graph-shortest-paths operators.

Syntaxis

any( rand,conditie)

any(inner_nodes( rand),conditie)

Parameterwaarden

Naam Typ Verplicht Beschrijving
edge- string ✔️ Een variabele lengterand van de operator voor grafiekovereenkomst of operator voor kortste paden patroon. Zie Graph-patroon notatievoor meer informatie.
voorwaarde string ✔️ Een Boole-expressie die bestaat uit eigenschappen van de rand of het binnenste knooppunt, wanneer inner_nodes wordt gebruikt, in de rand met de lengte van de variabele. Er wordt rechtstreeks naar een eigenschap verwezen met behulp van de naam van de eigenschap. De expressie wordt geëvalueerd voor elke edge- of binnenste knooppunt in de rand van de variabele lengte.

Retouren

Retourneert true als de voorwaarde resulteert in true ten minste één rand of binnenknooppunt, wanneer inner_nodes wordt gebruikt, in de rand met de lengte van de variabele. Anders retourneert het false.

Voor paden met lengte nul wordt de voorwaarde geëvalueerd false.

Voorbeelden

In het volgende voorbeeld worden de Locations en Routes gegevenstabellen gebruikt om een grafiek te maken waarmee paden worden gevonden van een bronlocatie naar een doellocatie via een route. Er wordt een functie gebruikt any() om paden te vinden die minstens één keer transportmethode gebruiken "Train" . De bronlocatienaam, doellocatienaam en transportmethoden langs de route worden geretourneerd.

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

Uitvoer

src_LocationName dest_LocationName route_TransportModes
Seattle San Francisco ["Trainen"]
Chicago Seattle ["Trainen"]
New York Chicago ["Trainen"]
Seattle Los Angeles [
"Trainen",
"Vrachtwagen"
]
Chicago San Francisco [
"Trainen",
"Trainen"
]
New York Seattle [
"Trainen",
"Trainen"
]
Los Angeles Chicago [
"Vrachtwagen",
"Trainen"
]

In het volgende voorbeeld ziet u hoe u de graph-shortest-paths operator gebruikt met de any() en inner_nodes functies om een pad tussen twee stations in een transportnetwerk te vinden. De query maakt een grafiek van de connections gegevens en zoekt het kortste pad van het "South-West" station naar het "North" station, waarbij ten minste één station wordt doorgegeven waar Wi-Fi beschikbaar is.

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

Uitvoer

Van Stations naar
South-West Zuid->- centraal Noorden
South-West West->- centraal Noorden