Skip to content

Логические функции ​

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

Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.

Не все функции доезжают до источника

В режиме прямого запроса формула переводится в 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. Удобно перед делением: пустое значение в знаменателе роняет весь расчёт.

Что дальше ​