MAP
MAP позволяет написать пользовательский алгоритм обработки данных, используя внутренний язык системы. Можно по своему усмотрению трансформировать данные между входным и выходными портами, если предложенных узлов не хватает для выполнения необходимых преобразований данных.
Имеет единственный входной порт и как минимум один выходной. Может отправлять разные записи в разные выходные порты или даже отправлять одну и ту же запись на несколько выходных портов. Работает только с одним элементом, сохраняет порядок записей.
С помощью MAP можно:
- удалить ненужные значения полей
- проверить записи с помощью функций или регулярных выражений
- создать новые или изменить существующие поля
- преобразовать типы данных
Порты MAP:
| Тип порта | Номер | Обязательный | Описание | Метаданные |
|---|---|---|---|---|
| Input | 0 | да | Для входящего потока записей | Любые |
| Output | 0 | да | Для преобразованных записей | |
| 1-n | нет |
Атрибуты MAP:
| Атрибут | Обязательный | Описание | Возможные значения |
|---|---|---|---|
| transform | да | Алгоритм преобразования данных |
|
Пример. Обработка данных с помощью MAP.
Нужно получить произведение и сумму полученных на вход данных и отправить результаты на разные выходные порты. Входные метаданные содержат поля a, b. Нужно отправить результат перемножения a*b на первый порт, а результат сложения a+b на второй порт.
Входящие записи:
| a | b |
|---|---|
| 5 | 6 |
| 2 | 4 |
| 1 | 2 |
Решение:
Преобразование:
function transform() {
var res_mul = $in[0].a * $in[0].b;
var res_add = $in[0].a + $in[0].b;
$out[0].res_mul = res_mul;
$out[1].res_add = res_add;
return ALL;
}
Исходящие записи:
порт 0:
| multiplied |
|---|
| 30 |
| 6 |
| 2 |
порт 1:
| added |
|---|
| 11 |
| 5 |
| 3 |