Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja map() grafu oblicza wyrażenie dla każdej krawędzi lub węzła wewnętrznego wzdłuż zmiennej ścieżki długości i zwraca tablicę dynamiczną wszystkich wyników.
Uwaga / Notatka
Ta funkcja jest używana z dopasowania grafu i najkrótszych ścieżek grafów operatorów.
Składnia
map(*edge*, *expression*)"
map(inner_nodes(
brzeg),wyrażenie)
Parametry
| Nazwa | Typ | Wymagane | Opis |
|---|---|---|---|
| krawędzi | string |
✔️ | Krawędź zmiennej długości od operatora dopasowania grafu lub wzorca operatorów grafów najkrótszych ścieżek. Aby uzyskać więcej informacji, zobacz notacja wzorców Graph. |
| wyrażenie | string |
✔️ | Obliczenie do wykonania we właściwościach krawędzi lub węzła wewnętrznego, gdy jest używana inner_nodes , na krawędzi zmiennej długości. Właściwość jest odwołuje się bezpośrednio przy użyciu nazwy właściwości. Wyrażenie jest obliczane dla każdej krawędzi lub węzła wewnętrznego w zmiennej długości krawędzi. |
Zwraca
Tablica dynamiczna, w której:
- Długość tablicy jest zgodna z liczbą krawędzi lub węzłów wewnętrznych, gdy jest używana inner_nodes , na krawędzi zmiennej długości.
- Tablica jest pusta dla ścieżek o zerowej długości.
- Każdy element w tablicy odpowiada wynikom zastosowania wyrażenia do każdej krawędzi lub węzła wewnętrznego w zmiennej długości krawędzi.
Przykłady
W przykładach w tej sekcji pokazano, jak używać składni, aby ułatwić rozpoczęcie pracy.
Znajdź stację i linię dla najkrótszej trasy między dwiema stacjami
W poniższym przykładzie pokazano, jak za pomocą graph-shortest-paths operatora znaleźć najkrótszą ścieżkę między "South-West" stacjami i "North" w sieci transportowej. Dodaje informacje o wierszu do ścieżki przy użyciu map() funkcji . Zapytanie konstruuje graf z connections danych, biorąc pod uwagę ścieżki o długości do pięciu połączeń.
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 = map(connections, strcat(to_station, " (", line, ")")), to = destination.station
Wynik
| z | ścieżka | na |
|---|---|---|
| South-West (Południowy zachód) | [ "Południe (czerwony)", "Środkowy (czerwony)", "Północ (czerwony)" ] |
Północ |
Pobieranie listy przystanków z Wi-Fi we wszystkich trasach między dwiema stacjami
W poniższym przykładzie pokazano, jak używać graph-match operatora z funkcją all() i inner_nodes , aby znaleźć wszystkie przystanki z Wi-Fi wzdłuż wszystkich tras między dwoma stacjami w sieci transportowej.
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*1..5]->(destination)
where start.station == "South-West" and destination.station == "East"
project stopovers = strcat_array(map(inner_nodes(connections), station), "->"),
stopovers_with_wifi = set_intersect(map(inner_nodes(connections), station), map(inner_nodes(connections), iff(wifi, station, "")))
Wynik
| Międzylądowania | stopovers_with_wifi |
|---|---|
| Zachodnia>Środkowa | [ "Zachód", "Środkowy"] |
| Południowo-środkowe> | [ "Środkowe"] |