Compartilhar via


all() (função graph)

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

A all() função de grafo avalia uma condição para cada nó interno ou de borda ao longo de um caminho de comprimento variável.

Observação

Essa função é usada com os operadores graph-match e graph-shortest-paths .

Sintaxe

all( borda,condição)

all(inner_nodes( borda),condição)

Parâmetros

Nome Tipo Obrigatório Descrição
borda string ✔️ Uma borda de comprimento variável do operador de correspondência de grafo ou do padrão do operador graph-shortest-paths . Para obter mais informações, consulte a notação de padrão do Graph.
condição string ✔️ Uma expressão booliana composta de propriedades da borda ou nó interno, quando inner_nodes é usada, na borda de comprimento variável. Uma propriedade é referenciada usando o nome da propriedade diretamente. A expressão é avaliada para cada borda ou nó interno na borda de comprimento variável.

Devoluções

Retorna true se a condição for avaliada true para cada borda ou nó interno, quando inner_nodes for usado, na borda de comprimento variável. Caso contrário, ele retornará false.

Para caminhos de comprimento zero, a condição é avaliada como true.

Exemplos

O exemplo a seguir mostra como usar o graph-match operador com a all() função para localizar todos os caminhos de ida e volta entre duas estações em uma rede de transporte. Ele usa uma linha diferente para cada direção. A consulta constrói um grafo com base nos connections dados, localizando todos os caminhos de até cinco conexões longas que usam a "red" linha para a rota externa e a "blue" linha para a rota de retorno. A all() função garante que todas as bordas na borda de comprimento variável façam parte da mesma linha ou "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

Saída

De outward_stations para return_stations Voltar
Central Centro-Norte-Sul>>->South-West Oeste Central
Oeste Sudoeste-Sul-Centro-Norte>>> Central Oeste
Central Sul->South-West Oeste Central
Oeste Sudoeste-Sul> Central Oeste
Central Centro-Norte-Sul>>->South-West Oeste Centro-Leste> Central
Oeste Sudoeste-Sul-Centro-Norte>>> Central Leste-Central> Oeste
Central Sul->South-West Oeste Centro-Leste> Central
Oeste Sudoeste-Sul> Central Leste-Central> Oeste

O exemplo a seguir mostra como usar o graph-shortest-paths operador com as all() funções e inner_nodes funções para encontrar um caminho entre duas estações em uma rede de transporte. A consulta constrói um grafo com base nos connections dados e localiza o caminho mais curto da "South-West" estação para a "North" estação, passando pelas estações em que Wi-Fi está disponível.

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

Saída

De Estações para
Sudoeste Centro-Oeste> Norte