Функции обработки логов

Материал из Документация Ключ-АСТРОМ
Версия от 18:24, 13 октября 2026; IKuznetsov (обсуждение | вклад) (Новая страница: « = Функции обработки логов = Функции запросов можно использовать для выполнения любых вычислений над полями в инструкциях <code>FIELDS_ADD</code> и <code>FILTER_OUT</code>. == Побитовые операции == === AND === <code>numeric_expr1 & numeric_expr2</code> <code>BITWISE_AND(numeric_expr1, numeric_expr2)</code> Побитовое И между...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Функции обработки логов

Функции запросов можно использовать для выполнения любых вычислений над полями в инструкциях FIELDS_ADD и FILTER_OUT.

Побитовые операции

AND

numeric_expr1 & numeric_expr2 BITWISE_AND(numeric_expr1, numeric_expr2) Побитовое И между числовыми выражениями. BITWISE_AND(ipaddr, numeric_expr) Побитовое И между аргументами IPADDR и числовыми аргументами. Тип вывода: LONG или IPADDR в зависимости от типов входных аргументов. Пример:

FIELDS_ADD(and_op:(ip & 0xffff), and_fn:BITWISE_AND(i, 0xffff));

OR

numeric_expr1 | numeric_expr2 BITWISE_OR(numeric_expr1, numeric_expr2) Побитовое ИЛИ между числовыми выражениями. Тип вывода: LONG Пример:

FIELDS_ADD(or_op:(i | 1), or_fn:BITWISE_OR(d, 0xffff));

XOR

numeric_expr1 ^ numeric_expr2 BITWISE_XOR(numeric_expr1, numeric_expr2) Побитовое исключающее ИЛИ между числовыми выражениями. Тип вывода: LONG Пример:

FIELDS_ADD(xor_op:(i ^ 1), xor_fn:BITWISE_XOR(d, 0xffff));

LEFT_SHIFT

numeric_expr1 << numeric_expr2 LEFT_SHIFT(numeric_expr1, numeric_expr2) Побитовый сдвиг влево numeric_expr1 на количество битов numeric_expr2. Тип вывода: LONG Пример:

FIELDS_ADD(lshift_op:(i << 1), lshift_fn:LEFT_SHIFT(d, 2));

RIGHT_SHIFT

numeric_expr1 >> numeric_expr2 RIGHT_SHIFT(numeric_expr1, numeric_expr2) Побитовый сдвиг вправо numeric_expr1 на количество битов numeric_expr2. Тип вывода: LONG Пример:

FIELDS_ADD(rshift_op:i >> 1, rshift_fn:RIGHT_SHIFT(d, 2));

ZERO_FILL_RIGHT_SHIFT

numeric_expr1 >>> numeric_expr2 ZERO_FILL_RIGHT_SHIFT(numeric_expr1, numeric_expr2) Беззнаковый побитовый сдвиг вправо numeric_expr1 на количество битов numeric_expr2 (сдвигает нули в крайнюю левую позицию). Тип вывода: LONG Пример:

FIELDS_ADD(rshift_op:i >>> 1, rshift_fn:ZERO_FILL_RIGHT_SHIFT(d, 2));

BITWISE_NOT

~ numeric_expr BITWISE_NOT(numeric_expr) Инвертирует биты numeric_expr. Тип вывода: LONG Пример:

FIELDS_ADD(not_op:~i, not_fn:BITWISE_NOT(i));

BIT_COUNT

BIT_COUNT(numeric_expr) Возвращает количество битов, установленных в 1, для numeric_expr. Тип вывода: LONG Пример:

FIELDS_ADD(BIT_COUNT(1));

Булевы операции

AND

boolean_expr1 AND boolean_expr2 Логическая конъюнкция между операндами boolean_expr1 и boolean_expr2. Возвращает true только тогда, когда оба операнда вычисляются в true. Возвращает NULL, если правый операнд или оба операнда вычисляются в NULL. Тип вывода: BOOLEAN Таблица истинности:

a b a AND b
TRUE TRUE TRUE
TRUE FALSE FALSE
TRUE NULL NULL
FALSE FALSE FALSE
FALSE NULL FALSE
NULL NULL NULL

Пример:

FIELDS_ADD(false AND true);

OR

boolean_expr1 OR boolean_expr2 Логическая дизъюнкция между операндами boolean_expr1 и boolean_expr2. Возвращает true только тогда, когда хотя бы один из операндов вычисляется в true. Возвращает NULL, если правый операнд или оба операнда вычисляются в NULL. Тип вывода: BOOLEAN Таблица истинности:

a b a OR b
TRUE TRUE TRUE
TRUE FALSE TRUE
TRUE NULL TRUE
FALSE FALSE FALSE
FALSE NULL NULL
NULL NULL NULL

Пример:

FIELDS_ADD(false OR true);

XOR

boolean_expr1 XOR boolean_expr2 Логическая исключающая дизъюнкция между операндами boolean_expr1 и boolean_expr2. Возвращает NULL, если любой из операндов вычисляется в NULL. Тип вывода: BOOLEAN Таблица истинности:

a b a XOR b
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
TRUE NULL NULL
FALSE NULL NULL
NULL NULL NULL

Пример:

FIELDS_ADD(true XOR true);

NOT

NOT boolean_expr Возвращает отрицание boolean_expr. Возвращает NULL, если boolean_expr вычисляется в NULL. Тип вывода: BOOLEAN Таблица истинности:

a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL

Пример:

FIELDS_ADD(NOT true);

Приведение типов

BOOLEAN

BOOLEAN(string) Возвращает TRUE для следующих строковых значений: T, t, Y, y, 1, YES, yes, TRUE, true. Возвращает NULL, если строковый аргумент вычисляется в NULL. Возвращает FALSE для любого другого строкового значения. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(bval:BOOLEAN('T'));

BOOLEAN(numeric_expr) Значение numeric_expr, равное 0, преобразуется в false, другие значения — в true. Возвращает NULL, если numeric_expr вычисляется в NULL. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(bval:BOOLEAN(i));

BYTES

BYTES(string) Преобразует строковый аргумент в BYTES. Возвращает NULL, если строка вычисляется в NULL. Тип вывода: BYTES Пример:

FIELDS_ADD(b:BYTES('01'));

BYTES(numeric_array) Преобразует значения numeric_array в BYTES. Возвращает NULL, если numeric_array вычисляется в NULL. Тип вывода: BYTES Пример:

FIELDS_ADD(b:BYTES([1023,1024,1]));

DOUBLE

DOUBLE(numeric_expr) Преобразует numeric_expr в DOUBLE. Возвращает NULL, если numeric_expr вычисляется в NULL. Тип вывода: DOUBLE Пример:

FIELDS_ADD(d:DOUBLE(2 * 300));

DOUBLE(string) Преобразует строковый аргумент в DOUBLE. Возвращает NULL, если строка вычисляется в NULL. Тип вывода: DOUBLE Пример:

FIELDS_ADD(d:DOUBLE("-4"));

DURATION

DURATION(nanoseconds) Преобразует числовое значение наносекунд в DURATION. Возвращает NULL, если nanoseconds вычисляется в NULL. Тип вывода: DURATION Пример:

FIELDS_ADD(DURATION(1000*60*60*24*30*1000000));

INTEGER

INTEGER(numeric_expr), INT(numeric_expr) Преобразует numeric_expr в INTEGER. Возвращает NULL, если numeric_expr вычисляется в NULL. Тип вывода: INTEGER Пример:

FIELDS_ADD(i:INT(2.498));

INTEGER(string), INT(string) Преобразует строковый аргумент в INTEGER. Возвращает NULL, если строка вычисляется в NULL. Тип вывода: INTEGER Пример:

FIELDS_ADD(i:INT("-4"));

INTEGER(timestamp), INT(timestamp) Преобразует аргумент временной метки в INTEGER. Возвращает NULL, если временная метка вычисляется в NULL. Тип вывода: INTEGER Пример:

FIELDS_ADD(i:INT(TIMESTAMP("2019-03-14 22:41:55.000 +0000")));

IPADDR

IPADDR(numeric_expr), IPV4(numeric_expr) Преобразует аргумент numeric_expr в IPADDR. Возвращает NULL, если numeric_expr вычисляется в NULL. Тип вывода: IPADDR Пример:

FIELDS_ADD(ip:IPADDR(-1062731520));

IPADDR(hi_64_bit_num, low_64_bit_num), IPV6(IPADDR(hi_64_bit_num, low_64_bit_num)) Преобразует 128-битный числовой аргумент в IPADDR. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: IPADDR Пример:

FIELDS_ADD(ip:IPADDR(1,1));

IPADDR(string), IPV4(string), IPV6(string) Преобразует строковый аргумент в IPADDR. Возвращает NULL, если строка вычисляется в NULL. Тип вывода: IPADDR Пример:

FIELDS_ADD(ip:IPADDR("192.168.1.0"));

LONG

LONG(numeric_expr) Преобразует numeric_expr в LONG. Возвращает NULL, если numeric_expr вычисляется в NULL. Тип вывода: LONG Пример:

FIELDS_ADD(l:LONG(2.498));

LONG(string) Преобразует строковый аргумент в LONG. Возвращает NULL, если строка вычисляется в NULL. Тип вывода: LONG Пример:

FIELDS_ADD(l:LONG("-4"));

STRING

STRING(expr) Преобразует expr, возвращающее любой тип, в STRING. Возвращает NULL, если expr вычисляется в NULL. Тип вывода: STRING Пример:

FIELDS_ADD(int_str:STRING(i), double_str:STRING(d), ip_str:STRING(ip));

TIMESTAMP

TIMESTAMP(integer), T(integer) Преобразует целое число секунд, прошедших с момента Unix epoch, в TIMESTAMP. Возвращает NULL, если целое число вычисляется в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(1552603315));

TIMESTAMP(long), T(long) Преобразует длинное целое число миллисекунд, прошедших с момента Unix epoch, в TIMESTAMP. Возвращает NULL, если длинное целое вычисляется в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(T(1552603315l*1000+333));

TIMESTAMP(year, month, day), T(year, month, day) Преобразует дату, заданную целочисленными аргументами, в TIMESTAMP. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(2019,03,14));

TIMESTAMP(year, month, day, hour), T(year, month, day, hour) Преобразует дату и время, заданные целочисленными аргументами, в TIMESTAMP. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(2019,03,14,22));

TIMESTAMP(year, month, day, hour, minutes), T(year, month, day, hour, minutes) Преобразует дату и время, заданные целочисленными аргументами, в TIMESTAMP. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(2019,03,14,22,41));

TIMESTAMP(year, month, day, hour, minutes, seconds), T(year, month, day, hour, minutes, seconds) Преобразует дату и время, заданные целочисленными аргументами, в TIMESTAMP. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(2019,03,14,22,41,55));

TIMESTAMP(year, month, day, hour, minutes, seconds, milliseconds), T(year, month, day, hour, minutes, seconds, milliseconds) Преобразует дату и время, заданные целочисленными аргументами, в TIMESTAMP. Возвращает NULL, если аргументы вычисляются в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP(2019,03,14,22,41,55,333));

TIMESTAMP(string), T(string) Преобразует строковые аргументы следующего формата в TIMESTAMP:

  • "yyyy-MM-dd HH:mm:ss"
  • "yyyy-MM-dd HH:mm:ss Z"
  • "yyyy-MM-dd HH:mm:ss.SSS"
  • "yyyy-MM-dd HH:mm:ss.SSS Z"
  • "yyyy-MM-dd HH:mm:ss.f"
  • "yyyy-MM-dd HH:mm:ss.f Z"

Возвращает NULL, если строковый аргумент вычисляется в NULL. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(TIMESTAMP("2019-03-14 22:41:55.333 GMT"));

TO_NULL

TO_NULL(expr) Возвращает значение NULL. Тип вывода: тип предоставленного аргумента Пример:

FIELDS_ADD(n_i:TO_NULL(i), n_ip:TO_NULL(ip), n_time:TO_NULL(t), n_str:TO_NULL(s));

TUPLE

TUPLE(expr, …) Преобразует одно или несколько выражений, возвращающих любой тип данных, в TUPLE. Тип вывода: TUPLE Пример:

FIELDS_ADD(t:TUPLE(1,2.0,"foo")) | FIELDS_ADD(TYPE(t));

VARIANT

VARIANT(expr), VAR(expr) Преобразует примитивный тип expr в VARIANT. Возвращает NULL, если expr вычисляется в NULL. Тип вывода: VARIANT Пример:

FIELDS_ADD(var:VARIANT(s));

VARIANT_ARRAY

VARIANT_ARRAY(arg), VAR_ARR(arg) Преобразует ARRAY или примитивный тип arg в VARIANT_array. Тип вывода: VARIANT_array Пример:

FIELDS_ADD(res:VARIANT_ARRAY([1,2,3])) | FIELDS_ADD(TYPE(res));

VARIANT_OBJECT

VARIANT_OBJECT(expr) Преобразует TUPLE, VARIANT или примитивный тип expr в VARIANT_OBJECT. Тип вывода: VARIANT_OBJECT Пример:

FIELDS_ADD(vo_tuple:VARIANT_OBJECT({a:1, b:2})) | FIELDS_ADD(TYPE(vo_tuple));

EMPTY_ARRAY

EMPTY_ARRAY(type) Создаёт пустой массив указанного типа. Тип вывода: ARRAY

NULL_ARRAY

NULL_ARRAY(type) Создаёт пустой (null) массив указанного типа. Тип вывода: ARRAY

NULL_TUPLE

NULL_TUPLE(type) Создаёт пустой (null) кортеж указанного типа. Тип вывода: TUPLE

Сравнение

EQUAL

expr1 = expr2 EQUAL(expr1, expr2) Возвращает true, если выражения равны. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(1 = 1);

NOT_EQUAL

expr1 <> expr2, expr1 != expr2 NOT_EQUAL(expr1, expr2) Возвращает true, если выражения не равны. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(1 != 1);

GREATER

expr1 > expr2 GREATER(expr1, expr2) Возвращает true, если expr1 больше expr2. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(gr_op:2 > 1, gr_f:GREATER(1,1));

LESS

expr1 < expr2 LESS(expr1, expr2) Возвращает true, если expr1 меньше expr2. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(l_op:1 < 2, l_f:LESS(1,1));

GREATER_OR_EQUAL

expr1 >= expr2 GREATER_OR_EQUAL(expr1, expr2) Возвращает true, если expr1 больше или равно expr2. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(gr_op:2 >= 1, gr_f:GREATER_OR_EQUAL(1,1));

LESS_OR_EQUAL

expr1 <= expr2 LESS_OR_EQUAL(expr1, expr2) Возвращает true, если expr1 меньше или равно expr2. Возвращает NULL, если expr1 или expr2 вычисляются в NULL. В противном случае возвращает FALSE. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(gr_op:1 <= 2, gr_f:GREATER_OR_EQUAL(1,1));

IS NULL

expr IS NULL IS_NULL(expr) Возвращает true, если expr равно NULL, в противном случае возвращает false. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(s, is_null:IS_NULL(s));

IS NOT NULL

expr IS NOT NULL IS_NOT_NULL(expr) Возвращает true, если expr не равно NULL, в противном случае возвращает false. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(s, is_not_null:s IS NOT NULL);

IN

expr IN array Возвращает true, если expr присутствует в array, в противном случае возвращает FALSE. expr NOT IN array Отрицательная версия вышеуказанного: возвращает true, если expr отсутствует в array, в противном случае возвращает FALSE. Возвращает NULL, если array вычисляется в NULL. Тип вывода: BOOLEAN Примечание: expr должен быть того же типа, что и элементы в array. Пример:

FIELDS_ADD(str_in:'a' IN ['b','c','a']);

expr IN list Возвращает true, если expr присутствует в list, в противном случае возвращает FALSE. expr NOT IN list Отрицательная версия вышеуказанного: возвращает true, если expr отсутствует в list, в противном случае возвращает FALSE. Возвращает NULL, если list вычисляется в NULL. Тип вывода: BOOLEAN Примечание: Все элементы list должны быть того же типа, что и проверяемый expr.

FALSE_OR_NULL

FALSE_OR_NULL(boolean_expr) Возвращает true, если boolean_expr возвращает false или null. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(i, FALSE_OR_NULL(i = 0));

TRUE_OR_NULL

TRUE_OR_NULL(boolean_expr) Возвращает true, если boolean_expr возвращает true или null. Тип вывода: BOOLEAN Пример:

FIELDS_ADD(i, TRUE_OR_NULL(i = 0));

Составные данные

VARIANT_FIELD_SELECT

VARIANT_FIELD_SELECT(variant, fieldname) Выбирает fieldname из объекта VARIANT_OBJECT или VARIANT_ARRAY. Эту функцию можно использовать, когда аргументы вычисляются динамически во время выполнения. Примечание: Функция дополняет прямой доступ к элементам объекта. Тип вывода: тип выбранного fieldname Пример: выбрать элемент с именем "ip" из объекта variant:

FIELDS_ADD(obj:VARIANT_OBJECT(tuple)) | FIELDS_ADD(VARIANT_FIELD_SELECT(obj, 'ip'))

TUPLE_FIELD_SELECT

TUPLE_FIELD_SELECT(tuple, fieldname) Выбирает fieldname из tuple. Эту функцию можно использовать, когда аргументы вычисляются динамически во время выполнения. Примечание: Функция дополняет прямой доступ к элементам кортежа. Тип вывода: тип выбранного fieldname Пример: выбрать элемент с именем "ip" из кортежа:

FIELDS_ADD(tuple) | FIELDS_ADD(TUPLE_FIELD_SELECT(tuple, 'ip'))

ARRAY_AVG

ARRAY_AVG(array) Вычисляет среднее арифметическое числовых элементов массива. Тип вывода: DOUBLE Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_AVG(array));

ARRAY_COUNT

ARRAY_COUNT(array) Вычисляет количество не-NULL элементов массива. Тип вывода: LONG Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_COUNT(array));

ARRAY_FIRST

ARRAY_FIRST(array) Возвращает первое значение в массиве. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_FIRST(array));

ARRAY_LAST

ARRAY_LAST(array) Возвращает последнее значение в массиве. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_LAST(array));

ARRAY_MAX

ARRAY_MAX(array) Возвращает максимальное значение числовых элементов массива. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_MAX(array));

ARRAY_MIN

ARRAY_MIN(array) Возвращает минимальное значение числовых элементов массива. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_MIN(array));

ARRAY_JOIN

ARRAY_JOIN(array, str) Возвращает строку с элементами массива, объединёнными в порядке их появления и разделёнными str. Тип вывода: STRING Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_JOIN(array, " + "));

ARRAY_SORT

ARRAY_SORT(array) Возвращает копию массива с элементами, отсортированными по возрастанию. Тип вывода: ARRAY Пример:

FIELDS_ADD(array:[2,1,0,4,3]) | FIELDS_ADD(ARRAY_SORT(array));

ARRAY_SORT(array, boolean) Возвращает отсортированный массив. Порядок сортировки определяется логическим аргументом: если true, то по возрастанию, иначе по убыванию. Тип вывода: ARRAY Пример:

FIELDS_ADD(array:[2,1,0,4,3]) | FIELDS_ADD(ARRAY_SORT(array, false));

ARRAY_SUM

ARRAY_SUM(array) Вычисляет сумму числовых элементов массива. Тип вывода: DOUBLE Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_SUM(array));

ARRAY_IDX

ARRAY_IDX(array, expr) Возвращает позицию первого элемента в массиве, равного expr. Если не найдено, возвращает NULL. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_IDX(array,4));

ARRAY_SELECT

ARRAY_SELECT(array, integer) Возвращает элемент из массива по позиции integer. Если не найдено, возвращает NULL. Тип вывода: тип элемента массива Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_SELECT(array,4));

ARRAY_SELECT(array, start_pos, end_pos) Возвращает элементы массива с start_pos по end_pos включительно. Если не найдено, возвращает пустой массив. Тип вывода: ARRAY Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_SELECT(array,1,3));

ARRAY_LEN

ARRAY_LEN(array) Возвращает количество элементов в массиве. Тип вывода: INTEGER Пример:

FIELDS_ADD(array:[0,1,2,3,4]) | FIELDS_ADD(ARRAY_LEN(array));

ARRAY_REMOVE_NULLS

ARRAY_REMOVE_NULLS(array) Удаляет элементы со значениями NULL из массива. Тип вывода: ARRAY Пример:

FIELDS_ADD(array:[0,1,TO_NULL(2),3,4]) | FIELDS_ADD(array, new_array:ARRAY_REMOVE_NULLS(array));

ARRAY_REVERSE

ARRAY_REVERSE(array) Возвращает массив с элементами в обратном порядке. Тип вывода: ARRAY Пример:

FIELDS_ADD(arr:[0,1,2,3]) | FIELDS_ADD(arr, reverse_arr:ARRAY_REVERSE(arr))

REMOVE_NULLS

REMOVE_NULLS(variant_object), REMOVE_NULLS(variant_array), REMOVE_NULLS(array) Удаляет элементы со значениями NULL из variant_object, variant_array или аргумента array. Тип вывода: VARIANT_OBJECT, VARIANT_ARRAY или ARRAY Пример:

FIELDS_ADD(v_obj:VARIANT_OBJECT({a:1, b:"oho", c:TO_NULL(1)})) | FIELDS_ADD(v_obj, REMOVE_NULLS(v_obj));

ARRAY_UNIQ

ARRAY_UNIQ(array) Возвращает массив с уникальными значениями из массива-аргумента. Тип вывода: ARRAY Пример:

FIELDS_ADD(arr:[1,2,3,4,5,1,1,2]) | FIELDS_ADD(arr, ARRAY_UNIQ(arr));

SPREAD

SPREAD(tuple) Разворачивает поля из аргумента TUPLE в поля строки результирующего набора. Пример:

FIELDS_ADD(tuple, SPREAD(tuple));

Криптография

MD5

MD5(string_expr) Вычисляет значение хеша MD5 для string_expr. Тип вывода: STRING Пример:

FIELDS_ADD(MD5('Astromkey'));

SHA

SHA1(string_expr) Вычисляет значение хеша SHA1 для строки. Тип вывода: STRING Пример:

FIELDS_ADD(SHA1('Astromkey'));

Дата и время

Операторы

timestamp_value[+ amount time_unit] Добавляет amount единиц времени time_unit к timestamp_value. Единицы времени: ms или millis, sec или s, min или m, hour или h, day или d, week или w Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now(), now_add_1_min:now()[+1 min]);

timestamp_value[- amount time_unit] Вычитает amount единиц времени time_unit из timestamp_value. Единицы времени: ms или millis, sec или s, min или m, hour или h, day или d, week или w Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now(), time_subtract_1_sec:now()[-1 sec]);

timestamp_value[% amount time_unit] Усекает timestamp_value до amount единиц времени. Единицы времени: ms или millis, sec или s, min или m, hour или h, day или d, week или w Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now(), now_truncated_1_h:now()[1 hour]);

DAY

DAY(timestamp_expr) Возвращает целое число, представляющее день месяца из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(DAY(T('2017-01-22 15:00:00')));

DAY_OF_WEEK

DAY_OF_WEEK(timestamp_expr) Возвращает целое число от 1 до 7, представляющее день недели из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(DAY_OF_WEEK(T('2017-01-22 15:00:00')));

DAY_OF_YEAR

DAY_OF_YEAR(timestamp_expr) Возвращает целое число от 1 до 365, представляющее день года (или 366 в високосный год) из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(DAY_OF_YEAR(T('2017-05-22 15:00:00')));

HOUR

HOUR(timestamp_expr) Возвращает целое число от 0 до 23, представляющее час дня из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(HOUR(T('2016-09-23 17:58:00')));

MINUTE

MINUTE(timestamp_expr) Возвращает целое число от 0 до 59, представляющее минуту часа из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(MINUTE(T('2016-09-23 17:58:00')));

MONTH

MONTH(timestamp_expr) Возвращает целое число от 1 до 12, представляющее месяц года из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(MONTH(T('2016-09-23 17:58:00')));

NOW

NOW() Возвращает временную метку начала выполнения запроса. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(t, NOW());

SECOND

SECOND(timestamp_expr) Возвращает целое число от 0 до 59, представляющее секунду минуты из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(SECOND(T('2016-09-23 17:58:32')));

STR_SEC_TO_TIME

STR_SEC_TO_TIME(seconds_str) Преобразует секунды seconds_str, прошедшие с момента Unix epoch, в TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(STR_SEC_TO_TIME("1552603315"));

STR_TO_TIME

STR_TO_TIME(string) Преобразует строку в TIMESTAMP. Строка-аргумент должна быть в одном из следующих форматов:

  • "yyyy-MM-dd HH:mm:ss"
  • "yyyy-MM-dd HH:mm:ss Z"
  • "yyyy-MM-dd HH:mm:ss.SSS"
  • "yyyy-MM-dd HH:mm:ss.SSS Z"

Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(STR_TO_TIME('2016-09-23 17:58:00'));

SYS_TIME

SYS_TIME() Возвращает текущую временную метку системных часов операционной системы. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(SYS_TIME());

TIME_ADD

TIME_ADD(timestamp, millis) Добавляет millis миллисекунд к timestamp. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(t, TIME_ADD(t, 1000));

TIME_ADD_DAY

TIME_ADD_DAY(timestamp, numeric_expr) Добавляет numeric_expr дней к timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_year_from_now:TIME_ADD_DAY(NOW(), 365));

TIME_ADD_WEEK

TIME_ADD_WEEK(timestamp, numeric_expr) Добавляет numeric_expr недель к timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), about_a_year_from_now:TIME_ADD_WEEK(NOW(), 52))

TIME_ADD_MONTH

TIME_ADD_MONTH(timestamp, numeric_expr) Добавляет numeric_expr месяцев к timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), about_a_year_from_now:TIME_ADD_MONTH(NOW(), 12))

TIME_ADD_YEAR

TIME_ADD_YEAR(timestamp, numeric_expr) Добавляет numeric_expr лет к timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_century_from_now:TIME_ADD_YEAR(NOW(), 100))

TIME_SUB

TIME_SUB(timestamp, millis) Вычитает millis миллисекунд из timestamp. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(t, TIME_SUB(t, 60*1000));

TIME_SUB_DAY

TIME_SUB_DAY(timestamp, numeric_expr) Вычитает numeric_expr дней из timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_day_ago:TIME_SUB_DAY(NOW(), 1));

TIME_SUB_WEEK

TIME_SUB_WEEK(timestamp, numeric_expr) Вычитает numeric_expr недель из timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_week_ago:TIME_SUB_WEEK(NOW(), 1));

TIME_SUB_MONTH

TIME_SUB_MONTH(timestamp, numeric_expr) Вычитает numeric_expr месяцев из timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_month_ago:TIME_SUB_MONTH(NOW(), 1));

TIME_SUB_YEAR

TIME_SUB_YEAR(timestamp, numeric_expr) Вычитает numeric_expr лет из timestamp и возвращает результирующее значение TIMESTAMP. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), a_century_ago:TIME_SUB_YEAR(NOW(), 100));

TIME_SUBMOD

TIME_SUBMOD(timestamp, millis) Возвращает остаток от деления timestamp на millis, т. е. усекает timestamp до точности millis миллисекунд. Тип вывода: TIMESTAMP Пример: усечь временную метку до точности часа:

FIELDS_ADD(TIME_SUBMOD(T('2016-09-23 17:58:00'), 60*60*1000));

TIME_SUBMOD_DAY

TIME_SUBMOD_DAY(timestamp, numeric_expr) Возвращает timestamp, усечённую до точности numeric_expr дней. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), trunc_day:TIME_SUBMOD_DAY(NOW(), 1));

TIME_SUBMOD_WEEK

TIME_SUBMOD_WEEK(timestamp, numeric_expr) Возвращает timestamp, усечённую до точности numeric_expr недель. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), trunc_4_week:TIME_SUBMOD_WEEK(NOW(), 4));

TIME_SUBMOD_MONTH

TIME_SUBMOD_MONTH(timestamp, numeric_expr) Возвращает timestamp, усечённую до точности numeric_expr месяцев. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), trunc_1_month:TIME_SUBMOD_MONTH(NOW(), 1));

TIME_SUBMOD_YEAR

TIME_SUBMOD_YEAR(timestamp, numeric_expr) Возвращает timestamp, усечённую до точности numeric_expr лет. Тип вывода: TIMESTAMP Пример:

FIELDS_ADD(now:NOW(), trunc_1_year:TIME_SUBMOD_YEAR(NOW(), 1));

TIME_TO_STR

TIME_TO_STR(timestamp, format_str) Преобразует timestamp в строку в соответствии с format_str. Тип вывода: STRING Пример:

FIELDS_ADD(TIME_TO_STR(t, "EEEE, MMMM d 'anno domini' yyyy") );

TO_STR_SEC

TO_STR_SEC(timestamp) Преобразует timestamp в строку секунд с плавающей запятой, прошедших с момента Unix epoch (цифры в дробной части представляют наносекунды). Тип вывода: STRING Пример:

FIELDS_ADD(t, TO_STR_SEC(t));

YEAR

YEAR(timestamp_expr) Возвращает целое число, представляющее год из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(YEAR(T('2017-01-22 15:00:00')));

WEEK_OF_YEAR

WEEK_OF_YEAR(timestamp_expr) Возвращает целое число, представляющее неделю года из timestamp_expr. Тип вывода: INTEGER Пример:

FIELDS_ADD(WEEK_OF_YEAR(T('2017-01-22 15:00:00')));

Управление потоком

IF

IF(boolean_expr,true_expr,[else_expr]) IF_THEN(boolean_expr,true_expr,[else_expr]) IF_THEN_ELSE(boolean_expr,true_expr,[else_expr]) Возвращает true_expr, если boolean_expr вычисляется в true, в противном случае возвращает else_expr. Тип вывода: тип, возвращаемый true_expr или else_expr (должны совпадать). Пример:

FIELDS_ADD(s, IF(s CONTAINS '0', 'contains zero', 'has no zero'));

IF_THEN(boolean_expr,true_expr) IF_THEN_ELSE(boolean_expr,true_expr) Возвращает true_expr, если boolean_expr вычисляется в true, в противном случае возвращает NULL. Тип вывода: тип, возвращаемый true_expr.