Оформление
Математические функции
Округление, степени, модуль, тригонометрия. Применяются к числовому полю или выражению и возвращают число — чаще всего чтобы привести результат расчёта к нужному виду.
Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.
Не все функции доезжают до источника
В режиме прямого запроса формула переводится в 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.
Что дальше
- Все функции списком — каталог с поиском по странице.
- Вычисляемые поля — где и как написать формулу.