Udostępnij przez


all() (funkcja graph)

Dotyczy: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Funkcja grafu all() ocenia warunek dla każdej krawędzi lub węzła wewnętrznego wzdłuż ścieżki o zmiennej długości.

Nuta

Ta funkcja jest używana z dopasowania grafu i najkrótszych ścieżek grafów operatorów.

Składnia

all(brzegowej

all(inner_nodes(brzegowej

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.
warunku string ✔️ Wyrażenie logiczne składające się z właściwości krawędzi lub węzła wewnętrznego, gdy jest używana inner_nodes, w 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

Zwraca true, jeśli warunek oblicza true dla każdej krawędzi lub węźle wewnętrznym, gdy inner_nodes jest używany, w krawędzi zmiennej długości. W przeciwnym razie zwraca false.

W przypadku ścieżek o zerowej długości warunek oblicza wartość true.

Przykłady

W poniższym przykładzie pokazano, jak używać operatora graph-match z funkcją all(), aby znaleźć wszystkie ścieżki dwukierunkowe między dwoma stacjami w sieci transportowej. Używa innej linii dla każdego kierunku. Zapytanie konstruuje wykres z danych connections, wyszukując wszystkie ścieżki o długości do pięciu połączeń, które używają linii "red" dla trasy zewnętrznej oraz linii "blue" dla trasy zwracanej. Funkcja all() gwarantuje, że wszystkie krawędzie w krawędzi zmiennej długości są częścią tego samego wiersza, "red" lub "blue".

Uruchom zapytania

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-match (start)-[outward*1..5]->(destination)-[return*1..5]->(start)
  where start.station != destination.station and 
        all(outward, line == "red") and
        all(return, line == "blue") 
  project from = start.station, 
          outward_stations = strcat_array(map(inner_nodes(outward), station), "->"), 
          to = destination.station, 
          return_stations = strcat_array(map(inner_nodes(return), station), "->"), 
          back=start.station

wyjściowe

z outward_stations do return_stations Wstecz
Centralny Północno->środkowa>Południowa>South-West Zachód Centralny
Zachód Południowo-zachodni ->Południowe->Środkowe>Północ Centralny Zachód
Centralny Południowo->South-West Zachód Centralny
Zachód Południowo-zachodni ->Południe Centralny Zachód
Centralny Północno->środkowa>Południowa>South-West Zachód Środkowy—>Wschód Centralny
Zachód Południowo-zachodni ->Południowe->Środkowe>Północ Centralny Wschodnie>Środkowe Zachód
Centralny Południowo->South-West Zachód Środkowy—>Wschód Centralny
Zachód Południowo-zachodni ->Południe Centralny Wschodnie>Środkowe Zachód

W poniższym przykładzie pokazano, jak używać operatora graph-shortest-paths z funkcjami all() i inner_nodes, aby znaleźć ścieżkę między dwiema stacjami w sieci transportowej. Zapytanie tworzy graf z danych connections i znajduje najkrótszą ścieżkę ze stacji "South-West" do stacji "North", przechodząc przez stacje, w których jest dostępna Wi-Fi.

Uruchom zapytania

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-shortest-paths (start)-[connections*2..5]->(destination)
  where start.station == "South-West" and
        destination.station == "North" and 
        all(inner_nodes(connections), wifi)
  project from = start.station, 
          stations = strcat_array(map(inner_nodes(connections), station), "->"), 
          to = destination.station

wyjściowe

z Stacje do
South-West (Południowy zachód) Zachodnia>Środkowa Północ