Перейти к содержимому

Агрегатные функции

Агрегатные функции применяются ко всем строкам датасета, а не к одной строке. Результат — одно число.

sum(expr)

Сумма выражения по всем строкам датасета.

sum(amount)
sum(amount * (1 - tax_rate))
  • Если все значения пусты — 0.
  • Null и пустые значения игнорируются (не считаются как 0; они просто не входят в сумму).

avg(expr)

Среднее арифметическое значений выражения. Null’ы игнорируются.

avg(monthly_rent)
avg(roi(sale_price, purchase_price))
  • Если все значения пусты — null.

count(expr)

Количество строк, в которых выражение возвращает непустое (не null, не пустую строку) значение.

count(payment_date) // количество строк с заполненной датой
count(1) // итого строк (1 всегда непусто)

Когда использовать в формуле-поле

⚠️ Уточнить: агрегаты работают только когда есть контекст «весь датасет». В виджетах на дашборде такой контекст есть всегда. В формуле-поле — не везде: ошибка Aggregate sum() can't be used in a per-row formula появится, если контекст пуст. Если столкнулись — либо считайте на дашборде через KPI, либо проверьте, не используете ли вы формулу в drill-down вне обычного экрана таблицы.

Конкретный пример, где точно работает: KPI на дашборде:

  • Источник: «Транзакции».
  • Значение: sum(amount).
  • Итог — одна цифра.

Граничные случаи

  • Пустой датасет: sum0, avgnull, count0.
  • Все null: то же.
  • Текстовые значения, которые не парсятся как число — игнорируются в sum/avg.

Частые ошибки

  • sum(amount where category == "X"). В формулах нет фильтрации внутри функции. Фильтруйте на уровне виджета.
  • Используют агрегат для строкового значения. sum("Зарплата") бессмысленен; используйте count для подсчёта.

Что дальше