Skip to content

Синтаксис в формулах

Ниже описаны функции, синтаксис и поведение которых гарантируется на всех поддерживаемых data-движках. Помимо этого списка можно использовать любые функции конкретного движка, если их синтаксис укладывается в func ( arg, arg, ...)

Поддерживаемые функции в выражениях

Базовые операторы

Описание Пример
+, -, *, /, % стандартно как в математике A + B
=, !=, >, >=, <, <= стандартно как в математике A < B
not ... логическое отрицание not(A = B)
and, or логические операторы A and B
and(x, y, ...), or(x, y, ...) логические операторы or(A, B, C)
x in (...) x имеет значение из списка ( ... ) A in (1, 2, 3)
in (x, ...) то же самое что: x in ( ... ) in (A, 1, 2, 3)
x like string соответсвие текстовой маске A like '%retail%'
like(x, string) то же самое что: x like string like(A, '%retail%')
x between y and z значение x в интервале ( y, z ] A between D1 and D2
x not between y and z значение x не в интервалe ( y, z ] A not between D1 and D2
between(x, y, z) то же самое что: x between y and z A between D1 and D2
coalesce(x, ...) первое значение отличное от null coalesce(A, B, C)
cast (x as type) приведение к type (fs_type) cast(A as AMOUNT)
type (x) тоже самое что: cast(x as type) AMOUNT(A)
case {when x then y}+ [else z] end оператор выбора case when A then B else C end
case ({x, y}+ , [z]) то же самое что: case when case (A, B, C)

Функции арифметики

Описание Пример
abs(number) модуль abs (-1)
ceil(number) округление вверх ceil(0.1)
floor(number) округление вниз floor(1.1)
round(number, [digits]) математическое округление round(1.3), round(1.12345, 2)
trunc(number, [digits]) оставляет digits знаков после запятой trunc(0.1234, 2)
ln(number) натуральный логарифм ln(1)
log(base, number) логарифм, base - основание логарифма log(10), log(3, 10)
sqrt(number) квадратный корень sqrt(4)
power(number, number) возведение в степень power(2, 2)

Функции работы со строками

Описание Пример
concat(text, ...) объединяет строки в одну concat('a', 'b')
concat_ws(sep, text, ...) объединяет через sep concat_ws(';', 'a', 'b')
substr(text, start, [length]) подстрока substr('abc', 1)
length(text) длина length('abc')
replace(text, from, to) замена подстроки replace('abc', 'a', 'b')
reverse(text) разворот reverse('abc')
trim(text, [chars]) удаление символов из chars trim('__abc__', '_')
ltrim(text, [chars]) удаление символов слева ltrim('__abc', '_')
rtrim(text, [chars]) удаление символов справа rtrim('abc__', '_')
strpos(text, what) поиск подстроки strpos('abc','a')
translate(text, from, into) замена символов по словарю translate('abc', 'ab', '12')
upper(text) в верхний регистр upper('abc')
lower(text) в нижний регистр lower('ABC')

Функции работы с датами

Описание Пример
d'string' константа типа дата d'2022-01-13'
dt'string' константа типа дата+время dt'13.01.2023 00:30:59'
interval{number span}* константа типа интервал. span interval 1 day
date_add(date, interval) добавление интервала к дате date_add(DATE_1, interval 1 day)
date_sub(date, interval) вычитание интервала из даты date_sub(DATE_2, interval 1 month)
date_part(span, date) вычленение части даты. date_trunc('month', d'1900-01-01')
date_trunc(span, date) округление даты. date_part('day', d'1900-01-01')
today() текущая дата today()
now() текущие дата и время now()
day_start(date) начало дня в формате datetime day_start(now())
day_end(date) конец дня в формате datetime day_end(today())
x in LAST_itrv(y) Дата x в интервале (y - itrv; y] issue_dt in last_3d(report_dt)
x in BEFORE_itrv(y) Дата x в интервале (-inf; y - itrv] issue_dt in before_1y3w(report_dt)

Агрегирующие функции

Описание Пример
min(x) минимум min(customer_age)
max(x) максимум max(customer_age)
count(x) количество count(customer_id)
mean(x) среднее арифметическое mean(customer_age)
median(x) медиана – серединное значение median(customer_age)
mode(x) мо́да — наиболее часто встречающееся значение mode(customer_age)

Аналитические функции

func over ( [ partition by x, ...] [ order by z [ acs | desc ] [ nulls_last | nulls_first ], ...] )

func:

  • row_number()
  • min(...)
  • max(...)
  • mean(...)
  • count(...)

Appendix

Форматы дат

Для составляющей даты поддерживаются форматы: YYYY-MM-DD, DD.MM.YYYY, MM/DD/YYYY

Для составляющей времени формат: hh:mm:ss – который присоединяется к составляющей даты через пробел: '1999-01-02 03:04:05', '01.02.1999 03:04:05', '02/01/1999 03:04:05'

Форматы itrv

Литера Описание
y year
m month
w week
d day
h hour
mi minute
s second

Примеры: 1y2m3w, 12h30mi

Возможные значение span

  • second
  • minute
  • hour
  • day
  • week
  • month
  • year