Скалярные функции
Скалярные функции работают строго в пределах одной строки. Не требуют контекста датасета.
abs(x)
Модуль числа.
abs(-5) // → 5abs(amount - reference_amount)round(x, digits=0)
Округление к ближайшему. Второй аргумент — число знаков после запятой; по умолчанию 0.
round(3.7) // → 4round(3.14159, 2) // → 3.14round(amount / 12, 2) // месячная средняя, две цифрыfloor(x), ceil(x)
Округление вниз / вверх.
floor(7.9) // → 7ceil(7.1) // → 8min(a, b, …), max(a, b, …)
Минимум/максимум из аргументов. Null-аргументы игнорируются.
min(monthly_rent, 50000)max(0, profit) // отрицательное → 0coalesce(a, b, …)
Первый ненулевой аргумент. Удобно для значений по умолчанию.
coalesce(notes, "—") // если notes пусто, покажем «—»coalesce(actual_amount, planned_amount, 0)if(cond, then, else)
Условие. Замена тернарному оператору ? : — его в формулах нет.
if(amount > 100000, "Большая", "Малая")if(is_rented, monthly_rent, 0)if(category == "Зарплата", amount, 0)Вложенные условия:
if(score >= 80, "Высокий", if(score >= 50, "Средний", "Низкий"))not(x)
Логическое отрицание. Эквивалент !x.
not(is_rented) // строки только со «Свободно»!is_archived // то жеlower(s), upper(s)
Регистр текста.
lower(category) // "ЗАРПЛАТА" → "зарплата"upper(ticker)contains(haystack, needle)
Поиск подстроки без учёта регистра. Возвращает true/false.
contains(notes, "ипотека")contains(lower(address), "москва")Частые ошибки
- Используют тернарный
? :. Нет такого оператора. Пишитеif(...). - Ожидают, что
min(...)сравнит даты. Сравнение дат через арифметику в текущей версии не гарантировано — лучше пользуйтесьdate_diffи сравнениями. - Сравнивают строки регистрозависимо.
==чувствительно к регистру. Используйтеlower(a) == lower(b).