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

Функции для работы с массивами в RQL предоставляют набор операций для манипуляции массивами данных. Эти функции позволяют выполнять проверку на пустоту или заполненность массива, определять его длину, создавать пустые массивы различных типов, генерировать числовые диапазоны, объединять массивы, извлекать элементы, а также проводить более сложные операции, такие как вычисление уникальности элементов, работу с подмассивами и манипуляцию порядком элементов.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL.

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

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

array(x1[, x2, …, xN])

Создает массив из аргументов функции. Аргументы должны быть константами и иметь типы, для которых есть наименьший общий тип. Должен быть передан хотя бы один аргумент для определения типа массива. Возвращает результат типа Array(T), где T — наименьший общий тип от переданных аргументов.

arrayAUC(arr_scores, arr_labels)

Вычисляет площадь под кривой (AUC) для заданных массивов оценок arr_scores и меток arr_labels.

arrayCompact(array)

Удаляет последовательно повторяющиеся элементы из массива array, сохраняя только уникальные последовательности. Возвращает новый массив без последовательных дубликатов.

arrayConcat(arrays)

Объединяет массивы, переданные в качестве аргументов, в один массив. Пример: SELECT arrayConcat([1, 2], [3, 4], [5, 6]) возвращает [1,2,3,4,5,6].

arrayDifference(array)

Вычисляет разность между соседними элементами массива array. Возвращает массив, где первый элемент равен нулю, а каждый следующий элемент равен разности между текущим и предыдущим элементами исходного массива.

arrayDistinct(array)

Возвращает массив, содержащий только уникальные элементы из исходного массива array.

arrayElement(arr, n)

Извлекает элемент с индексом n из массива arr. Индексы начинаются с единицы. Поддерживаются отрицательные индексы для доступа к элементам с конца массива. Если индекс выходит за границы массива, то возвращается значение по умолчанию для типа элементов массива.

arrayEnumerate(arr)

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

arrayEnumerateDense(arr)

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

arrayEnumerateUniq(arr, …)

Возвращает массив, где каждый элемент указывает на его первое вхождение в массиве arr. Если функция принимает несколько массивов, уникальность определяется по комбинации элементов на соответствующих позициях во всех массивах.

arrayFlatten(array_of_arrays)

Преобразует массив массивов array_of_arrays в один плоский массив, содержащий все элементы исходных массивов. Элементы вложенных массивов добавляются в результирующий массив последовательно, начиная с первого вложенного массива до последнего.

arrayIntersect(arr)

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

arrayJoin(arr)

Специальная функция, которая используется для разделения одного массива arr на строки, каждая из которых содержит один элемент массива.

arrayPopBack(array)

Удаляет последний элемент из массива array и возвращает новый массив без этого элемента.

arrayPopFront(array)

Удаляет первый элемент из массива array и возвращает новый массив без этого элемента.

arrayProduct(arr)

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

arrayPushBack(array, single_value)

Добавляет элемент single_value в конец массива array и возвращает новый массив с добавленным элементом.

arrayPushFront(array, single_value)

Добавляет элемент single_value в начало массива array и возвращает новый массив с добавленным элементом.

arrayResize(array, size[, extender])

Изменяет размер массива array до нового размера size, используя extender для заполнения новых элементов, если size больше текущего размера массива.

arrayReverse(arr)

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

arrayRotateLeft(arr, n)

Циклически сдвигает элементы массива arr влево на n позиций.

arrayRotateRight(arr, n)

Циклически сдвигает элементы массива arr вправо на n позиций.

arrayShiftLeft(arr, n)

Сдвигает элементы массива arr влево на n позиций, заполняя освободившиеся места нулями.

arrayShiftRight(arr, n)

Сдвигает элементы массива arr вправо на n позиций, заполняя освободившиеся места нулями.

arraySlice(array, offset[, length])

Возвращает часть массива array, начиная с позиции offset и длиной length. Если length не указано, возвращает все элементы начиная с offset до конца массива.

arrayUniq(arr, …)

Возвращает массив уникальных элементов из массива arr. Если передано несколько массивов, возвращает массив уникальных комбинаций элементов на соответствующих позициях в этих массивах.

arrayZip(arr1, arr2, …​)

Объединяет несколько массивов arr1, arr2, …​, создавая массив кортежей, где каждый кортеж содержит элементы из исходных массивов, расположенные на одинаковых позициях. Длина результирующего массива соответствует длине самого короткого из исходных массивов.

countEqual(arr, x)

Возвращает количество элементов массива, равных x. Эквивалентно arrayCount(elem → elem = x, arr). NULL обрабатывается как значение. Пример: SELECT countEqual([1, 2, NULL, NULL], NULL) возвращает 2.

empty(arr)

Проверяет, является ли входной массив arr пустым. Массив считается пустым, если он не содержит ни одного элемента. Функция также поддерживает работу с типами String и UUID.

emptyArrayDate()

Возвращает пустой массив с элементами типа Date.

emptyArrayDateTime()

Возвращает пустой массив с элементами типа DateTime.

emptyArrayFloat32()

Возвращает пустой массив с элементами типа Float32.

emptyArrayFloat64()

Возвращает пустой массив с элементами типа Float64.

emptyArrayInt16()

Возвращает пустой массив с элементами типа Int16.

emptyArrayInt32()

Возвращает пустой массив с элементами типа Int32.

emptyArrayInt64()

Возвращает пустой массив с элементами типа Int64.

emptyArrayInt8()

Возвращает пустой массив с элементами типа Int8.

emptyArrayString()

Возвращает пустой массив строк.

emptyArrayToSingle(arr)

Принимает пустой массив arr и возвращает массив из одного элемента, равного значению по умолчанию для типа элементов arr.

emptyArrayUInt16()

Возвращает пустой массив с элементами типа UInt16.

emptyArrayUInt32()

Возвращает пустой массив с элементами типа UInt32.

emptyArrayUInt64()

Возвращает пустой массив с элементами типа UInt64.

emptyArrayUInt8()

Возвращает пустой массив с элементами типа UInt8.

has(arr, elem)

Проверяет наличие элемента elem в массиве arr. Возвращает 0, если элемента в массиве нет, или 1, если есть. NULL обрабатывается как значение. Пример: SELECT has([1, 2, NULL], NULL) возвращает 1.

indexOf(arr, x)

Возвращает индекс первого вхождения элемента x в массив arr, начиная с 1. Если элемент отсутствует в массиве, возвращает 0. Элементы, равные NULL, обрабатываются как обычные значения.

length(arr)

Возвращает количество элементов в массиве arr. Тип результата — UInt64. Функция также работает для строк. Можно оптимизировать работу функции с использованием настройки optimize_functions_to_subcolumns.

notEmpty(arr)

Проверяет, является ли входной массив arr непустым. Массив считается непустым, если он содержит хотя бы один элемент. Функция также поддерживает работу с типами String и UUID.

range([start, ] end [, step])

Возвращает массив чисел от start до end - 1 с шагом step. Аргументы start и step необязательны. По умолчанию start = 0, step = 1. Аргумент end обязателен. Если аргументы start, end, step имеют отрицательные значения или значение аргумента end меньше значения аргумента start, функция генерирует исключение. Если суммарная длина создаваемых массивов больше значения настройки function_range_max_elements_in_block, функция генерирует исключение.

reverse(arr)

Синоним функции arrayReverse. Возвращает массив с элементами исходного массива arr в обратном порядке.

Была ли полезна эта страница?

Обратная связь