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

Функции

Типы функций

  • Агрегация — функция вычисляющая общее значение из множества значений (например сумму или максимум). Агрегации не могут использоваться вместе с оконными функциями.
  • Оконная — функция вычисляющая общее значение из множества значении и их порядка. Оконные функции не могут использоваться вместе с агрегациями. Не поддерживаются в реализации Yupana для Spark.
  • Унарная — функция над одним значением (например length или tokens).
  • Инфиксная — функция над двумя значениями, в SQL записывается между аргументами (например + или -).
  • Бинарная — функция с двумя значениями, например contains_all.

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

ФункцияТип функцииТипы аргументовТип значенияОписание
minагрегациячисло, строка, времятот жеМинимальное значение. Для строковых значение в лексикографическом порядке
maxагрегациячисло, строка, времятот жеМаксимальное значение. Для строковых значение в лексикографическом порядке
sumагрегациячислотот жеСумма
avgагрегациячислоBigDecimalСреднее значение
countагрегациялюбойLongКоличество
distinct_countагрегациялюбойLongКоличество уникальных значений
hll_countагрегациячисло, строка, времяLongАпроксимированное количество уникальных значений
lagоконнаялюбойтот жеПредыдущее значение в группе записей. Группа определяется в запросе в секции группировки. Сортировка по времени.
trunc_yearунарнаявремявремяОкругление времени до года
trunc_quarterунарнаявремявремяОкругление времени до начала квартала
trunc_monthунарнаявремявремяОкругление времени до месяца
trunc_dayунарнаявремявремяОкругление времени до дня
trunc_hourунарнаявремявремяОкругление времени до часа
trunc_minuteунарнаявремявремяОкругление времени до минуты
trunc_secondунарнаявремявремяОкругление времени до секунды
exract_yearунарнаявремячислоИзвлечение значения года из времени
exract_monthунарнаявремячислоИзвлечение значения месяца из времени
exract_dayунарнаявремячислоИзвлечение значения дня из времени
exract_hourунарнаявремячислоИзвлечение значения часа из времени
exract_minuteунарнаявремячислоИзвлечение значения минуты из времени
exract_secondунарнаявремячислоИзвлечение значения секунды из времени
absунарнаячислочислоЗначение числа по модулю
tokensунарнаястрокамассив строкПолучение стемированых транслитерированых строк из строки
tokensунарнаямассив строкмассив строкПолучение стемированых транслитерированых строк из массива строк
splitунарнаястрокамассив строкРазбиение строки на слова по пробелам
lengthунарнаястроки, массивыстроки, массивыДлина строки или количество элементов в массиве
array_to_stringунарнаямассивстрокаПреобразование массивы в строку в формате ”( a, b, .., n)”
idунарнаяразмерностьчислоИдентификатор значения размерности в словаре
+инфикснаячисло, строка, интервалтот жеСложение
-инфикснаячислотот жеВычитание
*инфикснаячислотот жеУмножение
/инфикснаячислотот жеДеление
+инфикснаявремя и интервалвремяСложение
-инфикснаявремя и интервалвремяВычитание
-инфикснаявремя и времяинтервалВычитание
=инфикснаячисло, строка, времялогическийСравнение на равенство
<> или !=инфикснаячисло, строка, времялогическийСравнение на неравенство
>инфикснаячисло, строка, времялогическийСравнение на больше
<инфикснаячисло, строка, времялогическийСравнение на меньше
>=инфикснаячисло, строка, времялогическийСравнение на больше или равно
<=инфикснаячисло, строка, времялогическийСравнение на меньше или равно
containsбинарнаямассив и тип элементалогическийTrue если массив содержит элемент, иначе False
contains_allбинарнаямассив и массивлогическийTrue если массив1 содержит все элементы массива2, иначе False
contains_anyбинарнаямассив и массивлогическийTrue если массив1 содержит хотя бы один элемент из массива2, иначе False
contains_sameбинарнаямассив и массивлогическийTrue если массив1 содержит те же элементы что и массив2 (в любом порядке)

Функция avg

Функция avg представляет собой функцию агрегации, позволяющую вычислять среднее значение для поля (metric, dimension) и возвращающяя значение типа BigDecimal.

Синтаксис:

avg(column_name)

Ограничения и особенности:

  • Опеделена для следующих типов данных: Double, BigDecimal, Long, Int, BigInt, Short
  • Игнорирует строки, в которых поле принимает значение NULL.
  • Возвращает null в случае, если все значения поля в выборке имеют значение null.

Пример:

SELECT avg(column_name), id
FROM some_table
WHERE time >= TIMESTAMP '2019-06-01' AND time < TIMESTAMP '2019-07-01'
GROUP BY id

Функция count

Функция count представляет собой функцию агрегации, позволяющую получать колличество строк в выборке для поля (metric, dimension) и возвращающяя значение типа Long.

Синтаксис:

count(column_name)

Ограничения и особенности:

  • Опеделена для всех типов данных
  • Игнорирует строки, в которых поле принимает значение NULL
  • Возвращает 0 в случае, если все значения поля в выборке имеют значение null.

Пример:

SELECT count(column_name), id
FROM some_table
WHERE time >= TIMESTAMP '2019-06-01' AND time < TIMESTAMP '2019-07-01'
GROUP BY id

Функция distinct_count

Функция distinct_count представляет собой функцию агрегации, позволяющую получать колличество строк с уникальным значением в выборке для поля (metric, dimension) и возвращающяя значение типа Long.

Синтаксис:

distinct_count(column_name)

Ограничения и особенности:

  • Опеделена для всех типов данных
  • Игнорирует строки, в которых поле принимает значение NULL
  • Возвращает 0 в случае, если все значения поля в выборке имеют значение null.

Пример:

SELECT distinct_count(column_name), id
FROM some_table
WHERE time >= TIMESTAMP '2019-06-01' AND time < TIMESTAMP '2019-07-01'
GROUP BY id

Функция hll_count

Функция hll_count представляет собой функцию агрегации, позволяющую получать апроксимированное колличество строк с уникальным значением в выборке для поля (metric, dimension) и возвращающяя значение типа Long.

Синтаксис:

hll_count(column_name, std_err)
  • column_name - имя поля табницы
  • std_err - стандартная ошибка. Представляет собой допустмое отклонение от истинного числа уникальных элементов (например, 0.18 - это допустимая ошибка в 18%). Реализация позволяет использовать ошибку в диапазоне от 0.00003 до 0.367.

Ограничения и особенности:

  • Определена для целочисленных типов данных, строк и даты/времени
  • Игнорирует строки, в которых поле принимает значение NULL
  • Возвращает 0 в случае, если все значения поля в выборке имеют значение null.

Пример:

SELECT hll_count(column_name, 0.18), id
FROM some_table
WHERE time >= TIMESTAMP '2019-06-01' AND time < TIMESTAMP '2019-07-01'
GROUP BY id

Кроме того, поддерживаются следующие SQL выражения:

ВыражениеОписание
x IN (1, 2 .. z)Проверка что x является одним из элементов заданного множества констант
x NOT IN (3, 4, .. z)Проверка что x не является одним из элементов заданного множества констант
x IN NULLПроверка что значение x не определено
x IS NOT NULLПроверка что значение x определено
x BETWEEN 1 AND 10То же самое что x >= 1 AND x <= 10