Yupana

Yupana

  • Документация
  • API
  • GitHub

›Язык запросов

Установка

  • Быстрый старт

Документация

  • Архитектура
  • Подключение внешних источников
  • Бенчмарки

Язык запросов

  • Язык запросов Yupana (YupanaQL)
  • SELECT
  • UPSERT
  • SHOW
  • KILL
  • DELETE

Язык запросов Yupana (YupanaQL)

Для выполнения запросов Yupana поддерживает собственный диалект SQL. Поддерживаются следующие операции:

  • SELECT -- выборка данных.
  • UPSERT -- вставка данных.
  • KILL QUERY -- остановка запроса.
  • DELETE QUERY -- удаление запроса из истории.
  • SHOW TABLES -- вывод списка таблиц.
  • SHOW COLUMNS FROM <table_name> -- вывод списка полей таблицы.
  • SHOW QUERIES -- просмотр истории запросов.
  • SHOW UPDATES_INTERVALS - вывод списка изменений временных рядов, произошедших в указанный период.

Правила наименования полей

  1. Время для любой схемы указывается как поле time типа TIMESTAMP. Доступны следующие функции для работы со временем: trunc_second, trunc_minute, trunc_hour, trunc_day, trunc_month, trunc_year. extract_second, extract_minute, extract_hour, extract_day, extract_month, extract_year.

  2. Поля таблицы указываются:

  • как есть (quantity или "quantity")
  • с указанием таблицы ("kkm_items"."quantity" или kkm_items.quantity)
  1. Тэги указываются как есть (например kkmId)

  2. Поля внешних связей указываются в виде имясвязи_имяполя (например ItemsInvertedIndex_phrase).

  3. Фильтровать можно по размерностям, метрикам и полям внешних связей, времени используя =,!=,IN,IS NULL/NOT NULL для строк и =,!=,>,>=,<,<=,IN,IS NULL/NOT NULL для остальных типов.

Литералы

Поддерживаются литералы следующих типов:

  1. Строки: 'Hello!'
  2. Числа (целые либо с плавающей запятой): 42 или 1234.567
  3. Даты:
  • TIMESTAMP '2018-08-06'
  • TIMESTAMP '2018-08-06 16:24:50'
  • TIMESTAMP '2018-08-06 16:24:50.123'
  • { ts '2017-06-13' }
  • { ts '2017-06-13 09:15:44' }
  • { ts '2017-06-13 09:15:44.666' }
  1. Интервалы:
  • INTERVAL '06:00:00' -- 6 часов
  • INTERVAL '1 12:00:00' -- 1 день и 12 часов
  • INTERVAL '1' HOUR -- 1 час
  • INTERVAL '30' MINUTE -- 30 минут
  • INTERVAL '2 12' DAY TO HOUR -- 2 дня 12 часов
  • INTERVAL '6 12:30' DAY TO MINUTE -- 6 дней 12 часов 30 минут
  • INTERVAL '3' MONTH -- 3 месяца
  • INTERVAL '1' YEAR -- 1 год
  • INTERVAL '3-10' MONTH TO DAY -- 3 месяца и 10 дней
  1. Массивы: {1, 2, 3,}, { 'one', 'two', 'three' }.

И т.д. Важно понимать, что интервалы содержащие месяца и/или годы не могут быть использованы при сравнении длительности интервала между двумя датами. Это обуславливается тем что длина месяца или года зависит от определенной даты.

При выполнении математических операций (плюс или минус) над интервалами можно использовать любые интервалы.

Функции

ФункцияТип функцииТипы аргументовТип значенияОписание
minагрегациячисло, строка, времятот жеМинимальное значение. Для строковых значение в лексикографическом порядке
maxагрегациячисло, строка, времятот жеМаксимальное значение. Для строковых значение в лексикографическом порядке
sumагрегациячислотот жеСумма
countагрегациялюбойчислоКоличество
distinct_countагрегациялюбойчислоКоличество уникальных значений
lagоконнаялюбойтот жеПредыдущее значение в группе записей. Группа определяется в запросе в секции группировки. Сортировка по времени.
trunc_yearунарнаявремявремяОкругление времени до года
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 (в любом порядке)

Типы функций

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

Кроме того, поддерживаются следующие 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
← БенчмаркиSELECT →
  • Правила наименования полей
  • Литералы
  • Функции
    • Типы функций
Copyright © Yupana, Первый ОФД 2022