Синтаксис в формулах
Ниже описаны функции, синтаксис и поведение которых гарантируется на всех поддерживаемых 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