Udostępnij za pośrednictwem


operator grafów najkrótszych ścieżek (wersja zapoznawcza)

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Operator graph-shortest-paths znajduje najkrótsze ścieżki między zestawem węzłów źródłowych a zestawem węzłów docelowych na grafie i zwraca tabelę z wynikami.

Uwaga

Ten operator jest używany w połączeniu z operatorem make-graph.

Składnia

G graph-shortest-paths | [output = OutputOption] Predykat project wzorca where [ColumnName =] Expression [, ...]

Parametry

Nazwisko Type Wymagania opis
G string ✔️ Źródło grafu, zazwyczaj dane wyjściowe z make-graph operacji.
Wzorzec string ✔️ Wzorzec ścieżki opisujący ścieżkę do znalezienia. Wzorce muszą zawierać co najmniej jedną zmienną długość krawędzi i nie mogą zawierać wielu sekwencji.
Predykat wyrażenie Wyrażenie logiczne składające się z właściwości nazwanych zmiennych we wzorcu i stałej.
Expression wyrażenie ✔️ Wyrażenie skalarne definiujące wiersz wyjściowy dla każdej znalezionej ścieżki przy użyciu stałych i odwołań do właściwości nazwanych zmiennych we wzorcu.
OutputOption string Określa dane wyjściowe wyszukiwania jako any (wartość domyślna) lub all. Dane wyjściowe są określane jako any dla jednej najkrótszej ścieżki dla pary źródłowej/docelowej i all dla wszystkich najkrótszych ścieżek o równej minimalnej długości.

Notacja wzorca ścieżki

W poniższej tabeli przedstawiono obsługiwane notacje wzorców ścieżek.

Element Nazwana zmienna Element anonimowy
Węzeł (n) ()
Skierowana krawędź od lewej do prawej -[e]-> -->
Skierowana krawędź od prawej do lewej <-[e]- <--
Dowolna krawędź kierunku -[e]- --
Krawędź zmiennej długości -[e*3..5]- -[*3..5]-

Krawędź zmiennej długości

Krawędź o zmiennej długości umożliwia wielokrotne powtarzanie określonego wzorca w ramach zdefiniowanych limitów. Gwiazdka (*) określa ten typ krawędzi, a następnie minimalne i maksymalne wartości wystąpień w formacie min..maksimum. Te wartości muszą być skalarnymi liczbami całkowitymi. Każda sekwencja krawędzi w tym zakresie może być zgodna ze zmienną krawędzią wzorca, pod warunkiem, że wszystkie krawędzie w sekwencji spełniają where ograniczenia klauzuli.

Zwraca

Operator graph-shortest-paths zwraca wynik tabelaryczny, w którym każdy rekord odpowiada ścieżce znalezionej na grafie. Zwrócone kolumny są definiowane w klauzuli project operatora przy użyciu właściwości węzłów i krawędzi zdefiniowanych we wzorcu. Właściwości i funkcje właściwości krawędzi o zmiennej długości są zwracane jako tablica dynamiczna. Każda wartość w tablicy odpowiada wystąpieniu krawędzi zmiennej długości.

Przykłady

W tej sekcji przedstawiono praktyczne przykłady pokazujące, jak używać graph-shortest-paths operatora w różnych scenariuszach.

Znajdź najkrótszą ścieżkę między dwoma any stacjami kolejowymi

W poniższym przykładzie pokazano, jak za pomocą graph-shortest-paths operatora znaleźć najkrótszą ścieżkę między dwoma stacjami w sieci transportowej. Zapytanie konstruuje graf z danych w connections obiekcie i znajduje najkrótszą ścieżkę z "South-West" "North" do stacji, biorąc pod uwagę ścieżki do pięciu połączeń długich. Ponieważ domyślne dane wyjściowe to any, znajduje dowolną najkrótszą ścieżkę.

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

Wyjście

z path linia na wartość
South-West (Południowy zachód) [
"Południe",
"Środkowy",
"Północ"
]
[
"czerwony",
"czerwony",
"czerwony"
]
Północ

Znajdowanie wszystkich najkrótszych ścieżek między dwoma stacjami kolejowymi

Poniższy przykład, podobnie jak w poprzednim przykładzie, znajduje najkrótsze ścieżki w sieci transportowej. Jednak używa output=allmetody , więc zwraca wszystkie najkrótsze ścieżki.

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

Wyjście

z path linia na wartość
South-West (Południowy zachód) [
"Południe",
"Środkowy",
"Północ"
]
[
"czerwony",
"czerwony",
"czerwony"
]
Północ
South-West (Południowy zachód) [
"Zachód",
"Środkowy",
"Północ"
]
[
"czerwony",
"niebieski",
"czerwony"
]
Północ