Udostępnij przez


map() (funkcja graph)

Dotyczy: ✅Microsoft Fabric

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"]