Skip to content

Математические функции ​

Округление, степени, модуль, тригонометрия. Применяются к числовому полю или выражению и возвращают число — чаще всего чтобы привести результат расчёта к нужному виду.

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

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

В режиме прямого запроса формула переводится в SQL вашей базы, и часть функций в её диалекте отсутствует. У таких ниже стоит строка «В прямом запросе…» с перечнем баз, на которых расчёт не соберётся. Oracle, Firebird и Trino в этот перечень не входят: на них в прямом запросе не строится большинство виджетов — поддержка функций источниками.

ABS ​

ABS( number )

Абсолютное значение числа.

Пример.

MAX(ABS([orders.amount] * -1))

Знак отбрасывается, и наибольший по модулю заказ «Аксессуаров» — 49 000. Нужно там, где возвраты хранятся отрицательными суммами.

ACOS ​

ACOS( number )

Арккосинус.

Пример.

MAX(ACOS([orders.quantity] / 10))

Для 0,1 — 1,4706 радиана. Диапазон аргумента тот же, что у ASIN.

В прямом запросе не работает на: CockroachDB.

ASIN ​

ASIN( number )

Арксинус.

Пример.

MAX(ASIN([orders.quantity] / 10))

Аргумент должен лежать в диапазоне от −1 до 1, поэтому количество делится на 10: для 0,5 результат — 0,5236 радиана.

В прямом запросе не работает на: CockroachDB.

ATAN ​

ATAN( number )

Арктангенс.

Пример.

MAX(ATAN([orders.quantity]))

Для количества 5 — 1,3734 радиана.

В прямом запросе не работает на: CockroachDB.

ATAN2 ​

ATAN2( y, x )

Арктангенс y/x с учётом четверти.

Пример.

MAX(ATAN2([orders.quantity], 2))

Для 5 и 2 — 1,1903 радиана. В отличие от ATAN, различает четверти по знакам аргументов.

В прямом запросе не работает на: CockroachDB, MS SQL Server.

CEILING ​

CEILING( number )

Округление вверх до целого.

Пример.

MAX(CEILING([orders.amount] / 1000))

Сумма в тысячах с округлением вверх: 49 у «Аксессуаров».

COS ​

COS( number )

Косинус (радианы).

Пример.

MAX(COS([orders.quantity]))

Для количества 1 — 0,5403.

В прямом запросе не работает на: CockroachDB.

COT ​

COT( number )

Котангенс (радианы).

На витрине платформы не считается

В режиме извлечения расчёт идёт на витрине, а котангенса в ней нет: виджет отвечает «Внутренней ошибкой сервера». Функция доступна только в прямом запросе — на базе, которая её умеет.

В прямом запросе не работает на: ClickHouse, CockroachDB.

DEGREES ​

DEGREES( number )

Перевод радиан в градусы.

Пример.

MAX(DEGREES([orders.quantity]))

5 радиан — 286,48 градуса.

В прямом запросе не работает на: CockroachDB.

DIV ​

DIV( number, number )

Целочисленное деление — дробная часть отбрасывается.

Пример.

DIV(SUM([orders.amount]), COUNT([orders.order_id]))

Средний чек без копеек: 39 966 у «Периферии». Обычное деление дало бы 39 966,67.

В прямом запросе не работает на: Vertica, CockroachDB, MS SQL Server.

DIV_SAFE ​

DIV_SAFE( number, number [, default ] )

Целочисленное деление; при делителе 0 возвращает default (по умолчанию NULL).

Пример.

DIV_SAFE(SUM([orders.amount]), 0, 0)

При нулевом делителе вернёт третий аргумент — 0 — вместо ошибки.

Третий аргумент на деле обязателен

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

В прямом запросе не работает на: Vertica, MS SQL Server.

EXP ​

EXP( number )

Экспонента (e в степени number).

Пример.

MAX(EXP([orders.quantity]))

При количестве 5 результат — 148,41.

В прямом запросе не работает на: CockroachDB.

FDIV_SAFE ​

FDIV_SAFE( number, number [, default ] )

Дробное деление; при делителе 0 возвращает default (по умолчанию NULL).

Пример.

FDIV_SAFE(SUM([orders.amount]), 0, 0)

То же, что DIV_SAFE, но результат дробный.

Третий аргумент на деле обязателен

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

В прямом запросе не работает на: Vertica, MS SQL Server.

FLOOR ​

FLOOR( number )

Округление вниз до целого.

Пример.

MAX(FLOOR([orders.amount] / 1000))

Сумма в полных тысячах: 49 у «Аксессуаров». Пара к CEILING.

GREATEST ​

GREATEST( a, b, … )

Наибольшее из перечисленных значений; NULL в аргументах даёт NULL.

Пример.

MAX(GREATEST([orders.amount], 50000))

Подтягивает все суммы к нижней границе 50 000: у «Аксессуаров», где максимум 49 000, результат станет 50 000.

В прямом запросе не работает на: ClickHouse, CockroachDB.

LEAST ​

LEAST( a, b, … )

Наименьшее из перечисленных значений; NULL в аргументах даёт NULL.

Пример.

MAX(LEAST([orders.amount], 1000))

Обрезает суммы сверху: любое значение больше 1000 станет 1000. Так ставят потолок выбросам перед усреднением.

В прямом запросе не работает на: ClickHouse, CockroachDB.

LN ​

LN( number )

Натуральный логарифм.

Пример.

MAX(LN([orders.amount]))

Для суммы 49 000 — 10,7996.

В прямом запросе не работает на: MS SQL Server.

LOG ​

LOG( number, base )

Логарифм числа по заданному основанию.

Пример.

MAX(LOG([orders.amount], 10))

Основание обязательно: LOG([orders.amount]) без него отвечает не подсказкой, а 500 Внутренняя ошибка сервера.

В прямом запросе не работает на: CockroachDB, MS SQL Server.

LOG10 ​

LOG10( number )

Десятичный логарифм.

Пример.

MAX(LOG10([orders.amount]))

То же, что LOG(x, 10), но короче: 4,6902 для 49 000.

В прямом запросе не работает на: CockroachDB.

PI ​

PI()

Число π.

Пример.

MAX(PI())

3,141592653589793. Аргументов не принимает.

POWER ​

POWER( number, exp )

Возведение в степень.

Пример.

MAX(POWER([orders.quantity], 2))

Количество в квадрате: 25 при пяти штуках.

RADIANS ​

RADIANS( number )

Перевод градусов в радианы.

Пример.

MAX(RADIANS([orders.quantity]))

5 градусов — 0,0873 радиана.

В прямом запросе не работает на: CockroachDB.

ROUND ​

ROUND( number [, precision ] )

Округление до заданной точности.

Пример.

ROUND(AVG([orders.amount]), 2)

Средний чек до копеек: 16 014,00 у «Аксессуаров». Второй аргумент необязателен — без него округляет до целого.

В прямом запросе не работает на: MS SQL Server.

SIGN ​

SIGN( number )

Знак числа: -1, 0 или 1.

Пример.

MAX(SIGN([orders.amount] - 20000))

1, если заказ превысил 20 000, -1 — если нет. Удобно как признак для раскраски.

SIN ​

SIN( number )

Синус (радианы).

Пример.

MAX(SIN([orders.quantity]))

Для количества 2 — 0,9093. Аргумент в радианах: градусы переводите через RADIANS.

В прямом запросе не работает на: CockroachDB.

SQRT ​

SQRT( number )

Квадратный корень.

Пример.

MAX(SQRT([orders.amount]))

Для 49 000 — 221,36.

SQUARE ​

SQUARE( number )

Квадрат числа.

Пример.

MAX(SQUARE([orders.quantity]))

25 при количестве 5 — то же, что POWER(x, 2).

TAN ​

TAN( number )

Тангенс (радианы).

Пример.

MAX(TAN([orders.quantity]))

Для количества 1 — 1,5574.

В прямом запросе не работает на: CockroachDB.

Что дальше ​