Функции обработки логов
Функции обработки логов
Функции запросов можно использовать для выполнения любых вычислений над полями в инструкциях 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.