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

Формула

Поле «Формула» — это поле, значение которого вычисляется автоматически из других полей строки. Никакого ручного ввода — система сама пересчитает значение при изменении исходных данных.

Как создать

  1. На странице схемы — «+ Поле» → тип «Формула».
  2. Введите название и ключ (как обычно).
  3. В большом текстовом поле — выражение. Подробный синтаксис: «Синтаксис формул».
  4. Под полем формулы — рейл «Доступные поля» с чипами. Клик по русскому названию вставляет ключ поля в курсорную позицию.
  5. Сохраните. Поле появится в таблице как ещё одна колонка.

Простой пример

В датасете «Транзакции» есть поле amount (Деньги) и category (Текст). Хотим колонку «Сумма зарплаты»:

if(category == "Зарплата", amount, 0)

Колонка покажет сумму, если категория — «Зарплата», иначе 0.

Что доступно в формуле

  • Ссылки на поля — по ключу: amount, category, purchase_date.
  • 47 встроенных функций — см. «Функции». Своих функций добавить нельзя.
  • Операторы — арифметика, сравнения, логика. См. «Синтаксис».
  • Литералы — числа (12, 0.05), строки ("Зарплата"), true, false, null.

Ограничения

  • Нельзя ссылаться на поля связанной таблицы. Если у строки есть «Связь», то в формуле доступен только сам id связи, а не поля целевой строки. Подробнее: «Связи в формулах».
  • Нельзя ссылаться на саму формулу из неё же. Это приведёт к ошибке (циклическая зависимость не разрешается).
  • Формула не может быть обязательной — вычисление работает само.
  • Нельзя редактировать значение вручную — это не строка ввода, а только результат.

В виджетах

  • KPI / графики / таблицы могут брать значение формулы как любое другое поле.
  • Агрегаты (sum, avg, count) на дашборде применяются к колонке-формуле так же, как к обычной колонке.

Частые ошибки

  • Тернарный оператор ? :. В формулах не поддерживается. Используйте if(cond, then, else) вместо cond ? then : else.
  • Ссылка на несуществующее поле. Под полем формулы появится предупреждение «Неизвестные идентификаторы». Проверьте ключ.
  • Циклическая зависимость. Формула A ссылается на формулу B, которая ссылается на A. Поправьте, иначе обе ячейки будут пустыми.
  • Деление на 0. Результат — null, не ошибка. См. «Решение проблем».

Что дальше