operator grafów najkrótszych ścieżek (wersja zapoznawcza)
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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.
Składnia
G graph-shortest-paths
|
[output
=
OutputOption] Predykat project
wzorca where
[ColumnName =
] Expression [,
...]
Parametry
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=all
metody , 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 |