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 |
Решение:
Преобразование:
<Attr name="transform"><![CDATA[
function transform() {
//transform code
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;
}
]]>
</Attr>
Исходящие записи:
порт 0:
multiplied |
---|
30 |
6 |
2 |
порт 1:
added |
---|
11 |
5 |
3 |