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

Функции для работы с массивами

Реализации скалярных функций Cloudflare Pipelines основаны на Apache DataFusion ↗ (через Arroyo ↗) и эта документация составлена на основе справочника функций DataFusion.

array_append

Добавляет элемент в конец массива.

array_append(array, element)

Аргументы

Пример

> select array_append([1, 2, 3], 4);
+--------------------------------------+
| array_append(List([1,2,3]),Int64(4)) |
+--------------------------------------+
| [1, 2, 3, 4]                         |
+--------------------------------------+

Псевдонимы

array_sort

Сортирует массив.

array_sort(array, desc, nulls_first)

Аргументы

Пример

> select array_sort([3, 1, 2]);
+-----------------------------+
| array_sort(List([3,1,2]))   |
+-----------------------------+
| [1, 2, 3]                   |
+-----------------------------+

Псевдонимы

array_resize

Изменяет размер списка так, чтобы он содержал size элементов. Новые элементы инициализируются значением value или пустым значением, если value не задано.

array_resize(array, size, value)

Аргументы

Пример

> select array_resize([1, 2, 3], 5, 0);
+-------------------------------------+
| array_resize(List([1,2,3],5,0))     |
+-------------------------------------+
| [1, 2, 3, 0, 0]                     |
+-------------------------------------+

Псевдонимы

array_cat

Псевдоним array_concat.

array_concat

Объединяет массивы.

array_concat(array[, ..., array_n])

Аргументы

Пример

> select array_concat([1, 2], [3, 4], [5, 6]);
+---------------------------------------------------+
| array_concat(List([1,2]),List([3,4]),List([5,6])) |
+---------------------------------------------------+
| [1, 2, 3, 4, 5, 6]                                |
+---------------------------------------------------+

Псевдонимы

array_contains

Псевдоним array_has.

array_has

Возвращает true, если массив содержит элемент

array_has(array, element)

Аргументы

Псевдонимы

array_has_all

Возвращает true, если все элементы вложенного массива присутствуют в массиве

array_has_all(array, sub-array)

Аргументы

Псевдонимы

array_has_any

Возвращает true, если в обоих массивах есть хотя бы один общий элемент

array_has_any(array, sub-array)

Аргументы

Псевдонимы

array_dims

Возвращает массив размерностей исходного массива.

array_dims(array)

Аргументы

Пример

> select array_dims([[1, 2, 3], [4, 5, 6]]);
+---------------------------------+
| array_dims(List([1,2,3,4,5,6])) |
+---------------------------------+
| [2, 3]                          |
+---------------------------------+

Псевдонимы

array_distinct

Возвращает уникальные значения массива после удаления дубликатов.

array_distinct(array)

Аргументы

Пример

> select array_distinct([1, 3, 2, 3, 1, 2, 4]);
+---------------------------------+
| array_distinct(List([1,2,3,4])) |
+---------------------------------+
| [1, 2, 3, 4]                    |
+---------------------------------+

Псевдонимы

array_element

Извлекает из массива элемент с индексом n.

array_element(array, index)

Аргументы

Пример

> select array_element([1, 2, 3, 4], 3);
+-----------------------------------------+
| array_element(List([1,2,3,4]),Int64(3)) |
+-----------------------------------------+
| 3                                       |
+-----------------------------------------+

Псевдонимы

array_extract

Псевдоним array_element.

array_fill

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

УСТАРЕЛО: используйте array_repeat вместо этого!

array_fill(element, array)

Аргументы

flatten

Преобразует массив массивов в плоский массив

Развёрнутый массив содержит все элементы из всех исходных массивов.

Аргументы

flatten(array)

array_indexof

Псевдоним array_position.

array_intersect

Возвращает массив элементов пересечения array1 и array2.

array_intersect(array1, array2)

Аргументы

Пример

> select array_intersect([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_intersect([1, 2, 3, 4], [5, 6, 3, 4]);       |
+----------------------------------------------------+
| [3, 4]                                             |
+----------------------------------------------------+
> select array_intersect([1, 2, 3, 4], [5, 6, 7, 8]);
+----------------------------------------------------+
| array_intersect([1, 2, 3, 4], [5, 6, 7, 8]);       |
+----------------------------------------------------+
| []                                                 |
+----------------------------------------------------+

Псевдонимы

array_join

Псевдоним array_to_string.

array_length

Возвращает длину измерения массива.

array_length(array, dimension)

Аргументы

Пример

> select array_length([1, 2, 3, 4, 5]);
+---------------------------------+
| array_length(List([1,2,3,4,5])) |
+---------------------------------+
| 5                               |
+---------------------------------+

Псевдонимы

array_ndims

Возвращает количество измерений массива.

array_ndims(array, element)

Аргументы

Пример

> select array_ndims([[1, 2, 3], [4, 5, 6]]);
+----------------------------------+
| array_ndims(List([1,2,3,4,5,6])) |
+----------------------------------+
| 2                                |
+----------------------------------+

Псевдонимы

array_prepend

Добавляет элемент в начало массива.

array_prepend(element, array)

Аргументы

Пример

> select array_prepend(1, [2, 3, 4]);
+---------------------------------------+
| array_prepend(Int64(1),List([2,3,4])) |
+---------------------------------------+
| [1, 2, 3, 4]                          |
+---------------------------------------+

Псевдонимы

array_pop_front

Возвращает массив без первого элемента.

array_pop_front(array)

Аргументы

Пример

> select array_pop_front([1, 2, 3]);
+-------------------------------+
| array_pop_front(List([1,2,3])) |
+-------------------------------+
| [2, 3]                        |
+-------------------------------+

Псевдонимы

array_pop_back

Возвращает массив без последнего элемента.

array_pop_back(array)

Аргументы

Пример

> select array_pop_back([1, 2, 3]);
+-------------------------------+
| array_pop_back(List([1,2,3])) |
+-------------------------------+
| [1, 2]                        |
+-------------------------------+

Псевдонимы

array_position

Возвращает позицию первого вхождения указанного элемента в массиве.

array_position(array, element)
array_position(array, element, index)

Аргументы

Пример

> select array_position([1, 2, 2, 3, 1, 4], 2);
+----------------------------------------------+
| array_position(List([1,2,2,3,1,4]),Int64(2)) |
+----------------------------------------------+
| 2                                            |
+----------------------------------------------+

Псевдонимы

array_positions

Выполняет поиск элемента в массиве, возвращает все вхождения.

array_positions(array, element)

Аргументы

Пример

> select array_positions([1, 2, 2, 3, 1, 4], 2);
+-----------------------------------------------+
| array_positions(List([1,2,2,3,1,4]),Int64(2)) |
+-----------------------------------------------+
| [2, 3]                                        |
+-----------------------------------------------+

Псевдонимы

array_push_back

Псевдоним array_append.

array_push_front

Псевдоним array_prepend.

array_repeat

Возвращает массив, содержащий элемент count раз.

array_repeat(element, count)

Аргументы

Пример

> select array_repeat(1, 3);
+---------------------------------+
| array_repeat(Int64(1),Int64(3)) |
+---------------------------------+
| [1, 1, 1]                       |
+---------------------------------+
> select array_repeat([1, 2], 2);
+------------------------------------+
| array_repeat(List([1,2]),Int64(2)) |
+------------------------------------+
| [[1, 2], [1, 2]]                   |
+------------------------------------+

Псевдонимы

array_remove

Удаляет из массива первый элемент, равный заданному значению.

array_remove(array, element)

Аргументы

Пример

> select array_remove([1, 2, 2, 3, 2, 1, 4], 2);
+----------------------------------------------+
| array_remove(List([1,2,2,3,2,1,4]),Int64(2)) |
+----------------------------------------------+
| [1, 2, 3, 2, 1, 4]                           |
+----------------------------------------------+

Псевдонимы

array_remove_n

Удаляет первые max элементы массива, равные заданному значению.

array_remove_n(array, element, max)

Аргументы

Пример

> select array_remove_n([1, 2, 2, 3, 2, 1, 4], 2, 2);
+---------------------------------------------------------+
| array_remove_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(2)) |
+---------------------------------------------------------+
| [1, 3, 2, 1, 4]                                         |
+---------------------------------------------------------+

Псевдонимы

array_remove_all

Удаляет из массива все элементы, равные заданному значению.

array_remove_all(array, element)

Аргументы

Пример

> select array_remove_all([1, 2, 2, 3, 2, 1, 4], 2);
+--------------------------------------------------+
| array_remove_all(List([1,2,2,3,2,1,4]),Int64(2)) |
+--------------------------------------------------+
| [1, 3, 1, 4]                                     |
+--------------------------------------------------+

Псевдонимы

array_replace

Заменяет первое вхождение указанного элемента другим указанным элементом.

array_replace(array, from, to)

Аргументы

Пример

> select array_replace([1, 2, 2, 3, 2, 1, 4], 2, 5);
+--------------------------------------------------------+
| array_replace(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
+--------------------------------------------------------+
| [1, 5, 2, 3, 2, 1, 4]                                  |
+--------------------------------------------------------+

Псевдонимы

array_replace_n

Заменяет первые max вхождений указанного элемента другим указанным элементом.

array_replace_n(array, from, to, max)

Аргументы

Пример

> select array_replace_n([1, 2, 2, 3, 2, 1, 4], 2, 5, 2);
+-------------------------------------------------------------------+
| array_replace_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(5),Int64(2)) |
+-------------------------------------------------------------------+
| [1, 5, 5, 3, 2, 1, 4]                                             |
+-------------------------------------------------------------------+

Псевдонимы

array_replace_all

Заменяет все вхождения указанного элемента другим указанным элементом.

array_replace_all(array, from, to)

Аргументы

Пример

> select array_replace_all([1, 2, 2, 3, 2, 1, 4], 2, 5);
+------------------------------------------------------------+
| array_replace_all(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
+------------------------------------------------------------+
| [1, 5, 5, 3, 5, 1, 4]                                      |
+------------------------------------------------------------+

Псевдонимы

array_reverse

Возвращает массив с обратным порядком элементов.

array_reverse(array)

Аргументы

Пример

> select array_reverse([1, 2, 3, 4]);
+------------------------------------------------------------+
| array_reverse(List([1, 2, 3, 4]))                          |
+------------------------------------------------------------+
| [4, 3, 2, 1]                                               |
+------------------------------------------------------------+

Псевдонимы

array_slice

Возвращает срез массива на основе начальной и конечной позиций с индексацией от 1.

array_slice(array, begin, end)

Аргументы

Пример

> select array_slice([1, 2, 3, 4, 5, 6, 7, 8], 3, 6);
+--------------------------------------------------------+
| array_slice(List([1,2,3,4,5,6,7,8]),Int64(3),Int64(6)) |
+--------------------------------------------------------+
| [3, 4, 5, 6]                                           |
+--------------------------------------------------------+

Псевдонимы

array_to_string

Преобразует каждый элемент в его текстовое представление.

array_to_string(array, delimiter)

Аргументы

Пример

> select array_to_string([[1, 2, 3, 4], [5, 6, 7, 8]], ',');
+----------------------------------------------------+
| array_to_string(List([1,2,3,4,5,6,7,8]),Utf8(",")) |
+----------------------------------------------------+
| 1,2,3,4,5,6,7,8                                    |
+----------------------------------------------------+

Псевдонимы

array_union

Возвращает массив элементов, присутствующих в обоих массивах (все элементы из обоих массивов), без дубликатов.

array_union(array1, array2)

Аргументы

Пример

> select array_union([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_union([1, 2, 3, 4], [5, 6, 3, 4]);           |
+----------------------------------------------------+
| [1, 2, 3, 4, 5, 6]                                 |
+----------------------------------------------------+
> select array_union([1, 2, 3, 4], [5, 6, 7, 8]);
+----------------------------------------------------+
| array_union([1, 2, 3, 4], [5, 6, 7, 8]);           |
+----------------------------------------------------+
| [1, 2, 3, 4, 5, 6, 7, 8]                           |
+----------------------------------------------------+

Псевдонимы

array_except

Возвращает массив элементов, которые присутствуют в первом массиве, но отсутствуют во втором.

array_except(array1, array2)

Аргументы

Пример

> select array_except([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_except([1, 2, 3, 4], [5, 6, 3, 4]);           |
+----------------------------------------------------+
| [1, 2]                                 |
+----------------------------------------------------+
> select array_except([1, 2, 3, 4], [3, 4, 5, 6]);
+----------------------------------------------------+
| array_except([1, 2, 3, 4], [3, 4, 5, 6]);           |
+----------------------------------------------------+
| [1, 2]                                 |
+----------------------------------------------------+

Псевдонимы

cardinality

Возвращает общее количество элементов в массиве.

cardinality(array)

Аргументы

Пример

> select cardinality([[1, 2, 3, 4], [5, 6, 7, 8]]);
+--------------------------------------+
| cardinality(List([1,2,3,4,5,6,7,8])) |
+--------------------------------------+
| 8                                    |
+--------------------------------------+

empty

Возвращает 1 для пустого массива и 0 для непустого.

empty(array)

Аргументы

Пример

> select empty([1]);
+------------------+
| empty(List([1])) |
+------------------+
| 0                |
+------------------+

Псевдонимы

generate_series

Работает аналогично функции range, но включает верхнюю границу.

generate_series(start, stop, step)

Аргументы

Пример

> select generate_series(1,3);
+------------------------------------+
| generate_series(Int64(1),Int64(3)) |
+------------------------------------+
| [1, 2, 3]                          |
+------------------------------------+

list_append

Псевдоним array_append.

list_cat

Псевдоним array_concat.

list_concat

Псевдоним array_concat.

list_dims

Псевдоним array_dims.

list_distinct

Псевдоним array_dims.

list_element

Псевдоним array_element.

list_empty

Псевдоним пусто.

list_except

Псевдоним array_element.

list_extract

Псевдоним array_element.

list_has

Псевдоним array_has.

list_has_all

Псевдоним array_has_all.

list_has_any

Псевдоним array_has_any.

list_indexof

Псевдоним array_position.

list_intersect

Псевдоним array_position.

list_join

Псевдоним array_to_string.

list_length

Псевдоним array_length.

list_ndims

Псевдоним array_ndims.

list_prepend

Псевдоним array_prepend.

list_pop_back

Псевдоним array_pop_back.

list_pop_front

Псевдоним array_pop_front.

list_position

Псевдоним array_position.

list_positions

Псевдоним array_positions.

list_push_back

Псевдоним array_append.

list_push_front

Псевдоним array_prepend.

list_repeat

Псевдоним array_repeat.

list_resize

Псевдоним array_resize.

list_remove

Псевдоним array_remove.

list_remove_n

Псевдоним array_remove_n.

list_remove_all

Псевдоним array_remove_all.

list_replace

Псевдоним array_replace.

list_replace_n

Псевдоним array_replace_n.

list_replace_all

Псевдоним array_replace_all.

list_reverse

Псевдоним array_reverse.

list_slice

Псевдоним array_slice.

list_sort

Псевдоним array_sort.

list_to_string

Псевдоним array_to_string.

list_union

Псевдоним array_union.

make_array

Возвращает Arrow-массив на основе указанных входных выражений.

make_array(expression1[, ..., expression_n])

array_empty

Псевдоним пусто.

Аргументы

Пример

> select make_array(1, 2, 3, 4, 5);
+----------------------------------------------------------+
| make_array(Int64(1),Int64(2),Int64(3),Int64(4),Int64(5)) |
+----------------------------------------------------------+
| [1, 2, 3, 4, 5]                                          |
+----------------------------------------------------------+

Псевдонимы

make_list

Псевдоним make_array.

string_to_array

Разбивает строку на массив подстрок по разделителю. Все подстроки, соответствующие необязательному null_str аргументу заменяются на NULL. SELECT string_to_array('abc##def', '##') или SELECT string_to_array('abc def', ' ', 'def')

starts_with(str, delimiter[, null_str])

Аргументы

Псевдонимы

string_to_list

Псевдоним string_to_array.

trim_array

Удаляет последние n элементов массива.

УСТАРЕЛО: используйте array_slice вместо этого!

trim_array(array, n)

Аргументы

range

Возвращает Arrow-массив от start до stop с шагом step. SELECT range(2, 10, 3) -> [2, 5, 8] или SELECT range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH);

Диапазон start..end содержит все значения, для которых start <= x < end. Он пуст, если start >= end.

Шаг не может быть равен 0 (иначе диапазон не будет иметь смысла).

Обратите внимание: если требуемый диапазон является числом, функция принимает параметры (stop), (start, stop) и (start, stop, step), но если диапазон является датой, требуется ровно 3 параметра, не равных NULL. Например,

SELECT range(3);
SELECT range(1,5);
SELECT range(1,5,1);

разрешены в числовых диапазонах

но в диапазонах дат допустимо только

SELECT range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH);

разрешено, а

SELECT range(DATE '1992-09-01', DATE '1993-03-01', NULL);
SELECT range(NULL, DATE '1993-03-01', INTERVAL '1' MONTH);
SELECT range(DATE '1992-09-01', NULL, INTERVAL '1' MONTH);

не допускаются

Аргументы

Псевдонимы