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

Вычисляемые поля

Вычисляемые поля позволяют автоматически создавать новые данные на основе существующих полей DataPacket с помощью формул. Это работает по принципу формул в Excel: вы задаёте выражение, и оно автоматически вычисляется для каждой записи данных.

Вычисляемые поля не тратят токены, так как все операции выполняются локально, без обращения к внешним API.

Формула может содержать три типа элементов:

Ссылки на поля текущего пакета данных, заключённые в двойные фигурные скобки:

{{firstName}} -- значение поля firstName
{{company.name}} -- вложенный доступ к данным

Вызываются с префиксом $ и принимают аргументы в скобках:

$upper({{name}}) -- верхний регистр
$concat({{firstName}}, " ", {{lastName}}) -- объединение строк
$if($gt({{age}}, 18), "Взрослый", "Ребёнок") -- условие

Полный список функций описан в разделе Функции шаблонов.

Константные значения:

  • Строки: "текст" или 'текст'
  • Числа: 42, 3.14, -100
  • Логические: true, false
  • Пустое значение: null

Вычисляемые поля выполняются последовательно сверху вниз. Это означает, что каждое следующее поле может использовать результаты предыдущих вычислений.

Пример:

  1. Поле fullName = $concat({{firstName}}, " ", {{lastName}})
  2. Поле greeting = $concat("Здравствуйте, ", {{fullName}}, "!")

Второе поле использует результат первого. Если поменять их местами, greeting не сможет обратиться к ещё не вычисленному fullName.

Нажмите на иконку редактирования у нужного процессора в воронке.

Шаг 2: Перейти в раздел “Вычисляемые поля”

Заголовок раздела «Шаг 2: Перейти в раздел “Вычисляемые поля”»

В настройках процессора найдите раздел “Вычисляемые поля” (Computed Fields).

Нажмите кнопку “Добавить поле” и заполните:

ПолеОписание
Имя поляНазвание нового поля (латиницей, без пробелов). Например: fullName, totalPrice
ФормулаВыражение для вычисления. Например: $concat({{firstName}}, " ", {{lastName}})
ОписаниеНеобязательное пояснение для понимания назначения поля

Система автоматически проверяет формулу при вводе. Индикатор валидации показывает, корректна ли формула или содержит ошибки.

Нажмите “Сохранить”. Новое вычисляемое поле будет применяться ко всем новым записям, создаваемым процессором.

Если у вас уже есть данные и вы добавили новое вычисляемое поле, его нужно применить к существующим записям:

  1. В разделе вычисляемых полей найдите нужное поле.
  2. Нажмите иконку запуска (треугольник Play) справа от поля.
  3. Дождитесь завершения — система обработает все существующие записи.

Кнопка запуска активна только для валидных формул.

При удалении вычисляемого поля система предлагает два варианта:

  • Удалить только настройку — поле не будет вычисляться для новых записей, но существующие вычисленные данные сохранятся в пакетах.
  • Удалить настройку и данные — также удалит вычисленные значения из всех существующих записей.

Поля вычисляются сверху вниз. Если поле B использует результат поля A, то A должно быть выше в списке. Используйте стрелки для изменения порядка полей.

Если исходное поле пустое (null), большинство функций вернут null или пустую строку. Используйте функции $default() или $coalesce() для задания значений по умолчанию:

$default({{middleName}}, "Не указано")
$coalesce({{phone1}}, {{phone2}}, {{phone3}}, "Нет телефона")

Функции автоматически преобразуют типы данных при необходимости: строка "123" в числовых функциях станет числом 123, а число 456 в строковых функциях станет строкой "456". Для явного преобразования используйте $toString(), $toNumber(), $toBool().

Если формула содержит ошибку при выполнении (например, обращение к несуществующему полю), результат будет содержать текст ошибки. Проверяйте данные после вычислений.

Сложные вложенные формулы выполняются дольше. При большом объёме данных (10 000+ записей) вычисление может занять некоторое время. Рекомендуется тестировать формулы на небольшой выборке.

При вводе формулы доступно автодополнение:

  • Введите / — появится список доступных переменных (полей данных).
  • Введите $ — появится список доступных функций.
$concat({{lastName}}, " ", {{firstName}}, $if($isNotEmpty({{middleName}}), $concat(" ", {{middleName}}), ""))

Результат: "Петров Иван Сергеевич" или "Петров Иван"

$if($gte({{totalAmount}}, 1000000), "VIP",
$if($gte({{totalAmount}}, 100000), "Premium",
$if($gte({{totalAmount}}, 10000), "Standard", "Basic")))
$sub({{price}}, $mul({{price}}, $div({{discountPercent}}, 100)))

Если телефон хранится как 79991234567:

$concat("+", $substring({{phone}}, 0, 1), " (", $substring({{phone}}, 1, 4), ") ", $substring({{phone}}, 4, 7), "-", $substring({{phone}}, 7, 9), "-", $substring({{phone}}, 9, 11))

Результат: "+7 (999) 123-45-67"

$if($isNotEmpty({{email}}), $lower($trim({{email}})), "email не указан")
$concat("[", $today(), "] ", {{title}})

Результат: "[2026-03-02] Название записи"