Перейти к содержимому

Фильтрация входных данных

Фильтрация позволяет процессору обрабатывать только те входные DataPackets, которые соответствуют заданным условиям. Это экономит токены и время: вместо обработки всех входных данных процессор работает только с нужными записями.

Например, если предыдущий процессор нашёл 500 компаний, а вам нужны только те, у которых указан ИНН и выручка больше миллиона рублей, вы задаёте условие фильтрации — и процессор обработает только подходящие записи.

Фильтр настраивается в параметрах процессора. Откройте настройки процессора и найдите поле “Условия фильтрации входных данных” (Filter Conditions). В это поле вводится выражение фильтра.

Условие фильтра записывается в формате, похожем на SQL:

{{поле}} оператор "значение"

Имя поля заключается в двойные фигурные скобки {{}}, а строковые значения — в двойные кавычки.

{{inn}} IS NOT NULL
{{status}} == "active"
{{companyName}} != "Тест"

Доступны следующие операторы:

ОператорОписаниеПример
==Равно{{status}} == "active"
!=Не равно{{type}} != "individual"
IS NULLЗначение отсутствует{{email}} IS NULL
IS NOT NULLЗначение присутствует{{inn}} IS NOT NULL

Операторы IS NULL и IS NOT NULL не требуют значения для сравнения.

Несколько условий можно объединить с помощью логических операторов AND и OR:

  • AND — оба условия должны быть истинны.
  • OR — хотя бы одно из условий должно быть истинно.

Компании с заполненным ИНН и активным статусом:

{{inn}} IS NOT NULL AND {{status}} == "active"

Компании с email или телефоном:

{{email}} IS NOT NULL OR {{phone}} IS NOT NULL

Компании из Москвы с выручкой:

{{city}} == "Москва" AND {{revenue}} IS NOT NULL

Фильтрация по данным родительских процессоров

Заголовок раздела «Фильтрация по данным родительских процессоров»

Условия фильтрации могут обращаться к данным не только текущего процессора-источника, но и любого процессора выше по цепочке. Для этого используйте синтаксис с именем процессора:

{{имяПроцессора.поле}} оператор "значение"

Фильтровать по полю из процессора “search”:

{{search.region}} == "Москва" AND {{inn}} IS NOT NULL

Комбинация условий из разных уровней цепочки:

{{hhSearch.name}} IS NOT NULL AND {{enrichment.hasFinanceData}} == "true"

При запуске процессора система выполняет следующие шаги:

  1. Получает все необработанные входные пакеты от подключённых процессоров-источников.
  2. Для каждого пакета строит полный набор данных цепочки (chain data), включая данные от всех предков.
  3. Проверяет каждый пакет на соответствие заданным условиям.
  4. Пакеты, прошедшие фильтр, передаются на обработку.
  5. Пакеты, не прошедшие фильтр, получают статус filtered и исключаются из обработки.

Чем раньше в цепочке вы отсеиваете нерелевантные данные, тем меньше токенов тратится на обработку. Если вам нужны только компании с ИНН, добавьте фильтр {{inn}} IS NOT NULL на первом обогащающем процессоре, а не на последнем.

Перед сравнением значения убедитесь, что поле не пустое. Комбинация IS NOT NULL AND == "значение" гарантирует, что пакет с отсутствующим полем не вызовет ошибки.

Тестируйте фильтры на небольших выборках

Заголовок раздела «Тестируйте фильтры на небольших выборках»

При первой настройке фильтра ограничьте количество обрабатываемых пакетов (параметр maxPackets) и проверьте, что фильтр работает корректно, прежде чем запускать обработку всего объёма данных.

Система автоматически проверяет синтаксис фильтра при сохранении настроек процессора. Если фильтр содержит ошибки — несбалансированные скобки, некорректные операторы или отсутствующие выражения — будет показано сообщение об ошибке с указанием проблемы.