Фильтры (where-операторы)
Фильтры выполняются до трансформеров и уточняют или отбирают значение. Они используют контракт item-filter: над массивом элементы фильтруются; скаляр трактуется как один элемент, а не прошедший фильтр скаляр отбрасывается (становится отсутствующим, поэтому правило маппинга откатывается к своему значению по умолчанию).
compact, unique и first разделяют имена с трансформерами того же id; здесь
описаны формы-фильтры. В маппере вид однозначен — список фильтров запускает
оператор вида where.
compact (filter)
Вид: фильтр · Обработка значения: item-filter
Удаляет пустые элементы из массива; скаляр отбрасывается, когда он пуст.
Пример. [null,"","a"] → ["a"] · "" → (отброшено) · "x" → "x"
drop_empty (filter)
Вид: фильтр · Обработка значения: item-filter · Синоним: mapper_drop_empty
Отбрасывает пустые значения из массива или скаляра (поведение идентично
compact (filter)).
Пример. ["a","",null] → ["a"]
unique (filter)
Вид: фильтр · Обработка значения: item-filter · Синоним: mapper_unique
Оставляет только уникальные элементы массива (структурное равенство).
Пример. ["a","a","b"] → ["a","b"]
first (filter)
Вид: фильтр · Обработка значения: item-filter · Синоним: mapper_first
Оставляет только первый элемент массива.
Пример. [1,2,3] → 1
where_exists (filter)
Вид: фильтр · Обработка значения: item-filter · Синоним: mapper_where_exists
Оставляет элементы массива, чьё значение (опционально по вложенному пути) существует (не пусто). Скаляр отбрасывается, когда проверяемое значение пусто.
| Аргумент | Тип | Обязателен | По умолчанию | Синонимы |
|---|---|---|---|---|
path |
string | нет | сам элемент | field |
Пример. [{"a":1},{"b":2}] с path="a" → [{"a":1}]
where_equals (filter)
Вид: фильтр · Обработка значения: item-filter · Синоним: mapper_where_equals
Оставляет элементы массива, чьё значение (опционально по вложенному пути)
строго равно переданному значению. Строгое равенство означает, что "1" не
совпадает с 1.
| Аргумент | Тип | Обязателен | По умолчанию | Синонимы |
|---|---|---|---|---|
path |
string | нет | сам элемент | field |
equals |
json | да | — | value, expected |
Пример. [{"a":1},{"a":"1"}] с path="a", equals=1 → [{"a":1}]
filter (filter)
Вид: фильтр · Обработка значения: item-filter
Оставляет элементы, удовлетворяющие сравнению поля. Сравнения приводятся к строке. Не прошедший скаляр отбрасывается.
| Аргумент | Тип | Обязателен | По умолчанию |
|---|---|---|---|
field |
string | нет | сам элемент |
value |
json | да | — |
operator |
string | нет | equals |
Поведение. operator — equals (по умолчанию), notEquals или contains.
Пример. [{"s":"hi"},{"s":"lo"}] с field="s", value="hi" →
[{"s":"hi"}] · скаляр "y" с value="x" → (отброшено)
If-Then-Else (filter)
Вид: фильтр · Обработка значения: whole-value
Возвращает then или else на основе ограниченного сравнения левой и правой
сторон. В маппере левая сторона по умолчанию равна текущему значению;
rhs/then/else — литеральные аргументы. Если выбранная ветвь опущена,
возвращается текущее значение.
| Аргумент | Тип | Обязателен | По умолчанию |
|---|---|---|---|
condition |
string | нет | lhs==rhs |
lhs |
json | нет | текущее значение |
rhs |
json | нет | — |
then |
json | нет | текущее значение |
else |
json | нет | текущее значение |
Поведение. condition — одно из lhs==rhs, lhs!=rhs, lhs>rhs, lhs<rhs,
lhs>=rhs, lhs<=rhs. Равенство приводится к строке; сравнения порядка числовые.
Вычисления выражений нет — грамматика фиксированная.
Пример. null с lhs="a", rhs="a", then="Y", else="N" → "Y"
RegexExtractAll (filter)
Вид: фильтр · Обработка значения: whole-value
Извлекает все совпадения regex из строки (первую группу захвата, если она есть, иначе всё совпадение). Возвращает массив.
| Аргумент | Тип | Обязателен | По умолчанию | Синонимы |
|---|---|---|---|---|
regex |
string (regex) | да | — | |
ignoreCase |
boolean | нет | false |
ignore_case |
Крайние случаи. Нестроковый вход проходит насквозь. Небезопасный/некорректный шаблон делает оператор no-op.
Пример. "id=42;id=7" с regex="id=(\\d+)" → ["42","7"]
SetByIndex (filter)
Вид: фильтр · Обработка значения: array
Заменяет элемент массива по индексу (неизменяемая копия). Не-массив проходит насквозь.
| Аргумент | Тип | Обязателен | По умолчанию |
|---|---|---|---|
index |
number | да | 0 |
value |
json | да | — |
Пример. [1,2,3] с index=1, value="x" → [1,"x",3]
Количество операторов по группам
| Группа | Вид | Кол-во |
|---|---|---|
| String | трансформер | 19 |
| List & array | трансформер | 28 |
| Object | трансформер | 13 |
| Date & time | трансформер | 16 |
| Number & math | трансформер | 10 |
| Conversion & encoding | трансформер | 14 |
| Network & IOC | трансформер | 20 |
| Conditional & content | трансформер | 18 |
| Filters | фильтр | 10 |
| Всего | 148 |
Все 148 статей выше взаимно-однозначно соответствуют реестру операторов платформы (138 трансформеров + 10 фильтров). Реестр — единый источник истины; редактор маппера, конвейер входящего маппера и трансформеры вывода узлов-задач плейбуков разрешают операторы из него.