ДокументацияОператоры маппера9. Фильтры (where-операторы)

Фильтры (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

Поведение. operatorequals (по умолчанию), 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 фильтров). Реестр — единый источник истины; редактор маппера, конвейер входящего маппера и трансформеры вывода узлов-задач плейбуков разрешают операторы из него.