Compartilhar via


graph-shortest-paths Operador (versão prévia)

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

O graph-shortest-paths operador encontra os caminhos mais curtos entre um conjunto de nós de origem e um conjunto de nós de destino em um gráfico e retorna uma tabela com os resultados.

Observação

Esse operador é usado em conjunto com o operador make-graph.

Sintaxe

G | graph-shortest-paths [output = OutputOption] Predicado project de padrão where [ColumnName =] Expressão [, ...]

Parâmetros

Nome Digitar Obrigatória Descrição
G string ✔️ A origem do gráfico, normalmente a saída de uma make-graph operação.
Padrão string ✔️ Um padrão de caminho que descreve o caminho a ser localizado. Os padrões devem incluir pelo menos uma aresta de comprimento variável e não podem conter várias sequências.
Predicado expressão Uma expressão booleana que consiste em propriedades de variáveis nomeadas no padrão e constantes.
Expressão expressão ✔️ Uma expressão escalar que define a linha de saída para cada caminho encontrado, usando constantes e referências a propriedades de variáveis nomeadas no padrão.
Opção de saída string Especifica a saída da pesquisa como any (padrão) ou all. A saída é especificada como any para um único caminho mais curto por par de origem/destino e all para todos os caminhos mais curtos de comprimento mínimo igual.

Notação de padrão de caminho

A tabela a seguir mostra as notações de padrão de caminho com suporte.

Element Variável nomeada Elemento anônimo
(n) ()
Borda direcionada da esquerda para a direita -[e]-> -->
Borda direcionada da direita para a esquerda <-[e]- <--
Qualquer borda de direção -[e]- --
Borda de comprimento variável -[e*3..5]- -[*3..5]-

Borda de comprimento variável

Uma aresta de comprimento variável permite que um padrão específico se repita várias vezes dentro de limites definidos. Um asterisco (*) denota esse tipo de aresta, seguido pelos valores mínimo e máximo de ocorrência no formato min..max. Esses valores devem ser escalares inteiros. Qualquer sequência de arestas dentro desse intervalo pode corresponder à aresta variável do padrão, desde que todas as arestas na sequência atendam às restrições da where cláusula.

Devoluções

O graph-shortest-paths operador retorna um resultado tabular, em que cada registro corresponde a um caminho encontrado no gráfico. As colunas retornadas são definidas na cláusula do project operador usando propriedades de nós e arestas definidas no padrão. As propriedades e funções das propriedades das arestas de comprimento variável são retornadas como uma matriz dinâmica. Cada valor na matriz corresponde a uma ocorrência da aresta de comprimento variável.

Exemplos

Esta seção fornece exemplos práticos que demonstram como usar o graph-shortest-paths operador em diferentes cenários.

Encontre any o caminho mais curto entre duas estações de trem

O exemplo a seguir demonstra como usar o graph-shortest-paths operador para encontrar o caminho mais curto entre duas estações em uma rede de transporte. A consulta constrói um gráfico a partir dos dados e connections encontra o "South-West" caminho mais curto da estação para a "North" estação, considerando caminhos de até cinco conexões. Como a saída padrão é any, ele encontra qualquer caminho mais curto.

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-shortest-paths (start)-[connections*1..5]->(destination)
  where start.station == "South-West" and destination.station == "North"
  project from = start.station, path = connections.to_station, line = connections.line, to = destination.station

Saída

de caminho line até
Sudoeste [
"Sul",
"Central",
"Norte"
]
[
"vermelho",
"vermelho",
"vermelho"
]
Norte

Encontrando todos os caminhos mais curtos entre duas estações de trem

O exemplo a seguir, como o exemplo anterior, localiza os caminhos mais curtos em uma rede de transporte. No entanto, ele usa output=all, portanto, retorna todos os caminhos mais curtos.

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-shortest-paths output=all (start)-[connections*1..5]->(destination)
  where start.station == "South-West" and destination.station == "North"
  project from = start.station, path = connections.to_station, line = connections.line, to = destination.station

Saída

de caminho line até
Sudoeste [
"Sul",
"Central",
"Norte"
]
[
"vermelho",
"vermelho",
"vermelho"
]
Norte
Sudoeste [
"Oeste",
"Central",
"Norte"
]
[
"vermelho",
"azul",
"vermelho"
]
Norte