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

Скалярные функции

Скалярные функции работают строго в пределах одной строки. Не требуют контекста датасета.

Модуль числа.

abs(-5) // → 5
abs(amount - reference_amount)

Округление к ближайшему. Второй аргумент — число знаков после запятой; по умолчанию 0.

round(3.7) // → 4
round(3.14159, 2) // → 3.14
round(amount / 12, 2) // месячная средняя, две цифры

Округление вниз / вверх.

floor(7.9) // → 7
ceil(7.1) // → 8

Минимум/максимум из аргументов. Null-аргументы игнорируются.

min(monthly_rent, 50000)
max(0, profit) // отрицательное → 0

Первый ненулевой аргумент. Удобно для значений по умолчанию.

coalesce(notes, "—") // если notes пусто, покажем «—»
coalesce(actual_amount, planned_amount, 0)

Условие. Замена тернарному оператору ? : — его в формулах нет.

if(amount > 100000, "Большая", "Малая")
if(is_rented, monthly_rent, 0)
if(category == "Зарплата", amount, 0)

Вложенные условия:

if(score >= 80, "Высокий",
if(score >= 50, "Средний", "Низкий"))

Логическое отрицание. Эквивалент !x.

not(is_rented) // строки только со «Свободно»
!is_archived // то же

Регистр текста.

lower(category) // "ЗАРПЛАТА" → "зарплата"
upper(ticker)

Поиск подстроки без учёта регистра. Возвращает true/false.

contains(notes, "ипотека")
contains(lower(address), "москва")
  • Используют тернарный ? :. Нет такого оператора. Пишите if(...).
  • Ожидают, что min(...) сравнит даты. Сравнение дат через арифметику в текущей версии не гарантировано — лучше пользуйтесь date_diff и сравнениями.
  • Сравнивают строки регистрозависимо. == чувствительно к регистру. Используйте lower(a) == lower(b).