Compartir a través de


any() (función de grafo)

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

La any() función de grafo evalúa una condición para cada borde o nodo interno a lo largo de una ruta de acceso de longitud variable .

Nota:

Esta función se usa con los operadores graph-match y graph-shortest-paths .

Sintaxis

any( borde,condición)

any(inner_nodes( borde),condición)

Parámetros

Nombre Tipo Obligatorio Descripción
borde string ✔️ Borde de longitud variable desde el operador graph-match o el patrón de operador graph-shortest-paths . Para obtener más información, consulte Notación de patrones de graph.
condición string ✔️ Expresión booleana compuesta de propiedades del nodo perimetral o interno, cuando se usa inner_nodes , en el borde de longitud variable. Se hace referencia a una propiedad mediante el nombre de propiedad directamente. La expresión se evalúa para cada borde o nodo interno en el borde de longitud variable.

Devoluciones

Devuelve true si la condición se evalúa como true para al menos un borde o nodo interno, cuando se usa inner_nodes , en el borde de longitud variable. De lo contrario, devuelve false.

Para rutas de acceso de longitud cero, la condición se evalúa como false.

Ejemplos

En el ejemplo siguiente se usan las Locations tablas de datos y Routes para construir un grafo que busca rutas de acceso de una ubicación de origen a una ubicación de destino a través de .route Usa any() la función para buscar rutas de acceso que usan "Train" el método de transporte al menos una vez. Devuelve el nombre de ubicación de origen, el nombre de ubicación de destino y los métodos de transporte a lo largo de la ruta.

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

Salida

src_LocationName dest_LocationName route_TransportModes
Seattle San Francisco ["Train"]
Chicago Seattle ["Train"]
Nueva York Chicago ["Train"]
Seattle Los Ángeles [
"Entrenar",
"Camión"
]
Chicago San Francisco [
"Entrenar",
"Entrenar"
]
Nueva York Seattle [
"Entrenar",
"Entrenar"
]
Los Ángeles Chicago [
"Camión",
"Entrenar"
]

En el ejemplo siguiente se muestra cómo usar el graph-shortest-paths operador con las any() funciones y inner_nodes para buscar una ruta de acceso entre dos estaciones de una red de transporte. La consulta construye un gráfico a partir de los connections datos y encuentra la ruta más corta de la "South-West" estación a la "North" estación, pasando por al menos una estación en la que 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-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

Salida

De Estaciones Para
Suroeste Centro-sur> Norte
Suroeste Centro-oeste> Norte