Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция map()
графа вычисляет выражение для каждого края или внутреннего узла вдоль пути переменной длины и возвращает динамический массив всех результатов.
Замечание
Эта функция используется с операторами graph-match и graph-shortest-paths.
Синтаксис
map
(*edge*
, *expression*
)'
map(inner_nodes(
край),
выражение)
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
край | string |
✔️ | Ребра переменной длины из оператора graph-match или шаблона оператора graph-shortest-paths . Дополнительные сведения см. в нотации шаблонов Graph. |
выражение | string |
✔️ | Вычисление для выполнения по свойствам пограничного или внутреннего узла при использовании inner_nodes в краю переменной длины. Свойство ссылается непосредственно с помощью имени свойства. Выражение вычисляется для каждого края или внутреннего узла в краю переменной длины. |
Возвраты
Динамический массив, в котором:
- Длина массива соответствует количеству ребер или внутренних узлов при использовании inner_nodes в краю переменной длины.
- Массив пуст для путей нулевой длины.
- Каждый элемент в массиве соответствует результатам применения выражения к каждому краю или внутреннему узлу в краю переменной длины.
Примеры
В примерах этого раздела показано, как использовать синтаксис для начала работы.
Поиск станции и линии для кратчайшего маршрута между двумя станциями
В следующем примере показано, как использовать graph-shortest-paths
оператор для поиска кратчайшего пути между "South-West"
станциями и "North"
станциями в транспортной сети. Он добавляет сведения о строке map()
в путь с помощью функции. Запрос создает граф из данных, учитывая пути до пяти подключений connections
.
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
Выходные данные
от / из / с (context-dependent) | путь | Кому |
---|---|---|
Юго-Западный регион | [ "Южная (красная)", "Центральная (красная)", "Север (красный)" ] |
Север |
Получение списка остановок с Wi-Fi во всех маршрутах между двумя станциями
В следующем примере показано, как использовать graph-match
оператор с функциями для all()
поиска всех остановок с inner_nodes
Wi-Fi вдоль всех маршрутов между двумя станциями в транспортной сети.
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, "")))
Выходные данные
Остановки | stopovers_with_wifi |
---|---|
Западная часть> | [ "Запад", "Центральная"] |
Южная центральная> часть | [ "Центральная"] |