Оформление
Логические функции
Ветвления и проверки: выбрать значение по условию, подставить замену вместо пустого.
Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.
Не все функции доезжают до источника
В режиме прямого запроса формула переводится в SQL вашей базы, и часть функций в её диалекте отсутствует. У таких ниже стоит строка «В прямом запросе…» с перечнем баз, на которых расчёт не соберётся. Oracle, Firebird и Trino в этот перечень не входят: на них в прямом запросе не строится большинство виджетов — поддержка функций источниками.
IF
IF cond THEN val [ ELSEIF … ] ELSE def ENDВозвращает значение по первому истинному условию.
Пример.
IF SUM([orders.amount]) > 30000000 THEN 'крупная' ELSE 'обычная' ENDВ разрезе по категориям «Компьютеры» получают метку «крупная», остальные три — «обычная».
IFNULL
IFNULL( value, default )Возвращает value, либо default, если value пустое.
Пример.
IFNULL(MAX([orders.status]), 'нет статуса')Если у категории нет ни одного заказа со статусом, вместо пустого значения выводится «нет статуса».
ISNULL
ISNULL( value )Истина, если значение пустое (NULL).
Пример.
ISNULL(MAX([orders.status]))Результат приходит числом: 0 — значение есть, 1 — пусто. На демо-данных у всех категорий 0.
В прямом запросе не работает на: MS SQL Server.
ZN
ZN( number )Заменяет NULL на 0.
Пример.
ZN(SUM([orders.amount]))У категории с заказами вернёт саму сумму — 4 003 500 у «Аксессуаров»; у категории без заказов вместо пустой ячейки будет 0. Удобно перед делением: пустое значение в знаменателе роняет весь расчёт.
Что дальше
- Все функции списком — каталог с поиском по странице.
- Вычисляемые поля — где и как написать формулу.