Оформление
Агрегатные функции
Считают одно значение по набору строк: сумму, среднее, количество. Такая функция кладётся на полку Мера и агрегирует все строки, попавшие в разрез виджета.
Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.
Не все функции доезжают до источника
В режиме прямого запроса формула переводится в SQL вашей базы, и часть функций в её диалекте отсутствует. У таких ниже стоит строка «В прямом запросе…» с перечнем баз, на которых расчёт не соберётся. Oracle, Firebird и Trino в этот перечень не входят: на них в прямом запросе не строится большинство виджетов — поддержка функций источниками.
Помечены как неисполняемые, но работают
У пяти функций — COUNTD_APPROX, STDEV, STDEVP, VAR, VARP — в справочнике продукта стоит пометка «источник пока не исполняет», и автодополнение их не предлагает. На витрине платформы они тем не менее считаются и возвращают значение: пометка расходится с поведением платформы.
ALL_CONCAT
ALL_CONCAT( string [, sep ] )Склеивает все значения в строку через разделитель.
Источник пока не исполняет эту функцию
Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».
ANY
ANY( value )Одно из значений набора — возвращается наименьшее.
Пример.
ANY([orders.status])«В обработке» — первый по алфавиту статус в категории. Берите, когда значение внутри группы одинаково и агрегат нужен только формально.
ARG_MAX
ARG_MAX( value, number )Значение, соответствующее максимуму второго аргумента.
Пример.
ARG_MAX([products.product_name], [orders.amount])Товар с самым крупным заказом категории: «Док-станция USB-C» у «Аксессуаров». Так находят лидера, не собирая отдельную сортировку.
Доступно на ClickHouse и файловых источниках.
В прямом запросе работает только на: ClickHouse.
ARG_MIN
ARG_MIN( value, number )Значение, соответствующее минимуму второго аргумента.
Пример.
ARG_MIN([products.product_name], [orders.amount])Товар с самым мелким заказом: «Кабель HDMI 2 м».
Доступно на ClickHouse и файловых источниках.
В прямом запросе работает только на: ClickHouse.
AVG
AVG( number )Среднее арифметическое всех значений.
Пример.
AVG([orders.amount])Результат — средний чек: Компьютеры — 330 960, Аксессуары — 16 014.
AVG_IF
AVG_IF( number, condition )Среднее значений, удовлетворяющих условию.
Пример.
AVG_IF([orders.amount], [orders.status] = 'Доставлен')Средний чек только доставленных заказов — 16 950 против 16 014 по всем: отменённые заказы занижают среднее.
COUNT
COUNT( [ value ] )Количество значений (строк).
Пример.
COUNT([orders.order_id])Результат — 250 заказов у «Аксессуаров», «Компьютеров» и «Мобильных устройств», 450 у «Периферии».
COUNTD
COUNTD( value )Количество уникальных значений.
Пример.
COUNTD([orders.customer_id])Результат — 25 уникальных покупателей в каждой категории, кроме «Периферии»: у неё 45.
COUNTD_APPROX
COUNTD_APPROX( value )Приближённое количество уникальных значений (быстрее).
Пример.
COUNTD_APPROX([orders.customer_id])25 покупателей — на демо-витрине результат совпал с точным COUNTD. Расхождение появляется на больших объёмах, ради чего функция и нужна.
Помечена в интерфейсе как неисполняемая, но работает — почему.
COUNTD_IF
COUNTD_IF( value, condition )Количество уникальных значений по условию.
Пример.
COUNTD_IF([orders.customer_id], [orders.amount] > 20000)Семь покупателей категории сделали хотя бы один заказ дороже 20 000.
COUNT_IF
COUNT_IF( condition )Количество значений, для которых условие истинно.
Пример.
COUNT_IF([orders.status] = 'Отменён')Результат — 50 отменённых заказов в каждой категории, кроме «Периферии»: у неё 150.
MAX
MAX( value )Максимальное значение.
Пример.
MAX([orders.amount])Самый крупный заказ категории: 49 000 у «Аксессуаров».
MAX_IF
MAX_IF( value, condition )Максимум среди значений по условию.
Пример.
MAX_IF([orders.amount], [orders.status] = 'Доставлен')Самый крупный доставленный заказ — 44 500. Общий максимум выше (49 000): он приходится на отменённый.
MEDIAN
MEDIAN( number )Медиана значений.
Источник пока не исполняет эту функцию
Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».
MIN
MIN( value )Минимальное значение.
Пример.
MIN([orders.amount])Самый мелкий заказ категории: 890 у «Аксессуаров».
MIN_IF
MIN_IF( value, condition )Минимум среди значений по условию.
Пример.
MIN_IF([orders.amount], [orders.status] = 'Доставлен')Самый мелкий доставленный заказ категории — 2 400.
QUANTILE
QUANTILE( number, quant )Точный квантиль уровня quant (0..1).
Источник пока не исполняет эту функцию
Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».
QUANTILE_APPROX
QUANTILE_APPROX( number, quant )Приближённый квантиль уровня quant.
Источник пока не исполняет эту функцию
Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».
STDEV
STDEV( number )Стандартное отклонение по выборке.
Пример.
STDEV([orders.amount])13 888,34 у «Аксессуаров» при среднем чеке 16 014 — разброс сопоставим со средним, то есть категория собрана из очень разных по сумме заказов.
Помечена в интерфейсе как неисполняемая, но работает — почему.
В прямом запросе не работает на: Vertica, MS SQL Server.
STDEVP
STDEVP( number )Стандартное отклонение по генеральной совокупности.
Пример.
STDEVP([orders.amount])13 860,53 — чуть меньше, чем STDEV: делитель на единицу больше.
Помечена в интерфейсе как неисполняемая, но работает — почему.
В прямом запросе не работает на: Vertica, MS SQL Server.
SUM
SUM( number )Сумма всех значений выражения.
Пример.
SUM([orders.amount])Результат — выручка по категории: Компьютеры — 82 740 000, Аксессуары — 4 003 500.
SUM_IF
SUM_IF( number, condition )Сумма значений, для которых условие истинно.
Пример.
SUM_IF([orders.amount], [orders.status] = 'Доставлен')Результат — выручка только по доставленным: Компьютеры — 6 345 000.
TOP_CONCAT
TOP_CONCAT( string, n [, sep ] )Склеивает первые n значений в строку.
Источник пока не исполняет эту функцию
Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».
VAR
VAR( number )Дисперсия по выборке.
Пример.
VAR([orders.amount])192 885 967,87 — квадрат STDEV.
Помечена в интерфейсе как неисполняемая, но работает — почему.
В прямом запросе не работает на: Vertica, MS SQL Server.
VARP
VARP( number )Дисперсия по генеральной совокупности.
Пример.
VARP([orders.amount])192 114 424 — квадрат STDEVP.
Помечена в интерфейсе как неисполняемая, но работает — почему.
В прямом запросе не работает на: Vertica, MS SQL Server.
Что дальше
- Все функции списком — каталог с поиском по странице.
- Вычисляемые поля — где и как написать формулу.