Формула
Поле «Формула» — это поле, значение которого вычисляется автоматически из других полей строки. Никакого ручного ввода — система сама пересчитает значение при изменении исходных данных.
Как создать
- На странице схемы — «+ Поле» → тип «Формула».
- Введите название и ключ (как обычно).
- В большом текстовом поле — выражение. Подробный синтаксис: «Синтаксис формул».
- Под полем формулы — рейл «Доступные поля» с чипами. Клик по русскому названию вставляет ключ поля в курсорную позицию.
- Сохраните. Поле появится в таблице как ещё одна колонка.
Простой пример
В датасете «Транзакции» есть поле 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, не ошибка. См. «Решение проблем».