Функции массивов
array
Добавлено в: v1.1
Создает массив из аргументов функции.
Аргументы должны быть константами и иметь типы с общим супертипом.
Должен быть передан как минимум один аргумент, иначе непонятно, какой тип массива создавать.
Это означает, что вы не можете использовать эту функцию для создания пустого массива. Для этого используйте функции семейства emptyArray*.
Используйте оператор [ ] для получения того же результата.
Синтаксис
Аргументы
x1— константное значение любого типа T. Если указан только этот аргумент, массив будет иметь тип T.[, x2, ..., xN]— дополнительные N константных значений, имеющих общий надтип сx1.
Возвращаемое значение
Возвращает массив, где 'T' — наименьший общий тип среди переданных аргументов. Array(T)
Примеры
Корректное использование
Некорректное использование
arrayAUCPR
Введена в версии: v20.4
Вычисляет площадь под кривой precision-recall (PR). Кривая precision-recall строится путём откладывания precision по оси Y и recall по оси X для всех порогов. Результирующее значение лежит в диапазоне от 0 до 1, при этом более высокое значение указывает на лучшее качество модели. PR AUC особенно полезна для несбалансированных наборов данных, обеспечивая более наглядное сравнение качества по сравнению с ROC AUC в таких случаях. Для получения дополнительной информации см. здесь, здесь и здесь.
Синтаксис
Псевдонимы: arrayPRAUC
Аргументы
cores— Оценки (скоринги), которые выдает модель предсказания.Array((U)Int*)илиArray(Float*)labels— Метки объектов, обычно 1 для положительного объекта и 0 для отрицательного.Array((U)Int*)илиArray(Enum)partial_offsets—- Необязательный параметр.
Array(T)из трех неотрицательных целых чисел для вычисления частичной площади под PR-кривой (эквивалент вертикальной полосы в PR-пространстве) вместо полной AUC. Эта опция полезна для распределенного вычисления PR AUC. Массив должен содержать следующие элементы [higher_partitions_tp,higher_partitions_fp,total_positives].higher_partitions_tp: Количество положительных меток в партициях с более высокими значениями оценок.higher_partitions_fp: Количество отрицательных меток в партициях с более высокими значениями оценок.total_positives: Общее количество положительных объектов во всем наборе данных.
Когда используется arr_partial_offsets, arr_scores и arr_labels должны представлять собой только партицию всего набора данных, содержащую некоторый интервал значений оценок.
Набор данных должен быть разделен на смежные партиции, где каждая партиция содержит подмножество данных, значения оценок которого попадают в определенный диапазон.
Например:
- Одна партиция может содержать все оценки в диапазоне [0, 0.5).
- Другая партиция может содержать оценки в диапазоне [0.5, 1.0].
Возвращаемое значение
Возвращает площадь под кривой «точность — полнота» (PR). Float64
Примеры
Пример использования
arrayAll
Впервые представлена в: v1.1
Возвращает 1, если лямбда-функция func(x [, y1, y2, ... yN]) возвращает true для всех элементов массива. В противном случае возвращает 0.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов-условий (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)cond1_arr, ...— Необязательно. N массивов-условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Возвращаемое значение
Возвращает 1, если лямбда-функция возвращает true для всех элементов, иначе — 0. UInt8
Примеры
Все элементы удовлетворяют условию
Не все элементы совпадают
arrayAvg
Введена в: v21.1
Возвращает среднее значение элементов исходного массива.
Если указана лямбда-функция func, возвращает среднее значение элементов, полученных в результате её применения.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный параметр. Лямбда‑функция, которая применяется к элементам исходного массива (x) и массивов‑условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательный параметр. N массивов‑условий, передающих дополнительные аргументы в лямбда‑функцию.Array(T)
Возвращаемое значение
Возвращает среднее значение элементов исходного массива или среднее значение результатов применения лямбда‑функции к элементам массива, если она задана. Float64
Примеры
Базовый пример
Использование с лямбда-функцией
arrayCompact
Впервые представлена в версии v20.1
Удаляет подряд идущие дублирующиеся элементы из массива, включая значения null. Порядок значений в результирующем массиве определяется порядком в исходном массиве.
Синтаксис
Аргументы
arr— массив, из которого удаляются дубликаты.Array(T)
Возвращаемое значение
Возвращает массив без повторяющихся значений. Array(T)
Примеры
Пример использования
arrayConcat
Впервые представлена в: v1.1
Объединяет массивы, переданные в качестве аргументов.
Синтаксис
Аргументы
arr1 [, arr2, ... , arrN]— N массивов для конкатенации.Array(T)
Возвращаемое значение
Возвращает один объединённый массив из переданных аргументов-массивов. Array(T)
Примеры
Пример использования
arrayCount
Добавлена в: v1.1
Возвращает количество элементов, для которых func(arr1[i], ..., arrN[i]) возвращает true.
Если func не задана, возвращает количество ненулевых элементов в массиве.
arrayCount — это функция высшего порядка.
Синтаксис
Аргументы
func— необязательная функция, применяемая к каждому элементу массива (массивов).Lambda functionarr1, ..., arrN— N массивов.Array(T)
Возвращаемое значение
Возвращает количество элементов, для которых func возвращает true. Если func не задана, возвращает количество ненулевых элементов в массиве. UInt32
Примеры
Пример использования
arrayCumSum
Появилась в версии v1.1
Возвращает массив частичных (префиксных, накопительных) сумм элементов исходного массива. Если указана лямбда-функция, сумма вычисляется по результатам применения лямбды к элементам массива на каждой позиции.
Синтаксис
Аргументы
func— необязательный параметр. Лямбда-функция, применяемая к элементам массива на каждой позиции.Lambda functionarr1— исходный массив числовых значений.Array(T)[arr2, ..., arrN]— необязательные дополнительные массивы того же размера, передаваемые в качестве аргументов лямбда-функции, если она указана.Array(T)
Возвращаемое значение
Возвращает массив частичных сумм элементов исходного массива. Тип результата совпадает с числовым типом элементов входного массива. Array(T)
Примеры
Базовое использование
С лямбда-выражением
arrayCumSumNonNegative
Введена в версии v18.12
Возвращает массив частичных (накопительных) сумм элементов исходного массива, при этом любая отрицательная промежуточная сумма заменяется на ноль. Если указана лямбда-функция, сумма вычисляется из результата применения лямбды к элементам массива на каждой позиции.
Синтаксис
Аргументы
func— Необязательный параметр. Lambda‑функция, применяемая к элементам массива на каждой позиции.Lambda functionarr1— Исходный массив числовых значений.Array(T)[arr2, ..., arrN]— Необязательные параметры. Дополнительные массивы того же размера, передаваемые в lambda‑функцию в качестве аргументов, если она задана.Array(T)
Возвращаемое значение
Возвращает массив частичных сумм элементов исходного массива, при этом любая отрицательная текущая сумма заменяется нулём. Тип результата соответствует числовому типу входного массива. Array(T)
Примеры
Базовое использование
С лямбда-функцией
arrayDifference
Впервые появилась в версии v1.1
Вычисляет массив разностей между соседними элементами массива.
Первый элемент результирующего массива будет равен 0, второй — arr[1] - arr[0], третий — arr[2] - arr[1] и т.д.
Тип элементов в результирующем массиве определяется по правилам вывода типа для операции вычитания (например, UInt8 - UInt8 = Int16).
Синтаксис
Аргументы
arr— Массив, для которого вычисляются разности между соседними элементами.Array(T)
Возвращаемое значение
Возвращает массив разностей между соседними элементами массива. UInt*
Примеры
Пример использования
Пример переполнения при использовании результирующего типа Int64
arrayDistinct
Введена в версии: v1.1
Возвращает массив, содержащий только уникальные элементы исходного массива.
Синтаксис
Аргументы
arr— массив, из которого нужно извлечь уникальные элементы.Array(T)
Возвращаемое значение
Возвращает массив, содержащий уникальные элементы. Array(T)
Примеры
Пример использования
arrayDotProduct
Добавлена в версии: v23.5
Возвращает скалярное произведение двух массивов.
Размеры двух векторов должны совпадать. Массивы и Tuple также могут содержать элементы разных типов.
Синтаксис
Аргументы
v1— первый вектор.Array((U)Int* | Float* | Decimal)илиTuple((U)Int* | Float* | Decimal)v2— второй вектор.Array((U)Int* | Float* | Decimal)илиTuple((U)Int* | Float* | Decimal)
Возвращаемое значение
Скалярное произведение двух векторов.
Тип возвращаемого значения определяется типами аргументов. Если Array или Tuple содержат элементы разных типов, тип результата — их общий супертип.
(U)Int* или Float* или Decimal
Примеры
Пример с массивом Array
Пример кортежа
arrayElement
Добавлена в: v1.1
Возвращает элемент переданного массива с индексом n, где n может быть целым числом любого типа.
Если индекс выходит за границы массива, возвращается значение по умолчанию (0 для чисел, пустая строка для строк и т. д.),
за исключением случая, когда аргументом является неконстантный массив, а индекс — константа 0. В этом случае будет ошибка Array indices are 1-based.
Массивы в ClickHouse индексируются с единицы.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, отсчитываемый с конца. Например, arr[-1] — последний элемент массива.
Оператор [n] обладает той же функциональностью.
Синтаксис
Аргументы
arr— массив, в котором выполняется поиск.Array(T). -n— позиция элемента, который нужно получить.(U)Int*.
Возвращаемое значение
Возвращает единый объединённый массив из переданных аргументов-массивов Array(T).
Примеры
Пример использования
Отрицательные индексы
Использование обозначения [n]
Индекс за пределами массива
arrayElementOrNull
Введена в: v1.1
Возвращает элемент переданного массива с индексом n, где n может быть целочисленного типа.
Если индекс выходит за границы массива, вместо значения по умолчанию возвращается NULL.
Массивы в ClickHouse индексируются с единицы.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, отсчитываемый с конца. Например, arr[-1] — это последний элемент массива.
Синтаксис
Аргументы
arrays— Произвольное количество аргументов типа массив.Array
Возвращаемое значение
Возвращает единый объединённый массив из переданных аргументов. Array(T)
Примеры
Пример использования
Отрицательные индексы
Индекс за пределами массива
arrayEnumerate
Впервые появилась в: v1.1
Возвращает массив [1, 2, 3, ..., length (arr)]
Эта функция обычно используется с предложением ARRAY JOIN. Она позволяет посчитать что-либо только
один раз для каждого массива после применения ARRAY JOIN.
Эту функцию также можно использовать в функциях высшего порядка. Например, вы можете использовать её, чтобы получить индексы элементов массива, которые удовлетворяют условию.
Синтаксис
Аргументы
arr— Массив, для которого выполняется нумерация.Array
Возвращаемое значение
Возвращает массив [1, 2, 3, ..., length (arr)]. Array(UInt32)
Примеры
Простой пример с ARRAY JOIN
arrayEnumerateDense
Появилась в версии: v18.12
Возвращает массив того же размера, что и исходный массив, указывая позицию первого появления каждого элемента в исходном массиве.
Синтаксис
Аргументы
arr— Массив для перечисления.Array(T)
Возвращаемое значение
Возвращает массив того же размера, что и arr, который для каждого элемента указывает позицию его первого появления во входном массиве Array(T)
Примеры
Пример использования
arrayEnumerateDenseRanked
Впервые представлена в версии v20.1
Возвращает массив того же размера, что и исходный массив, указывающий позицию, в которой каждый элемент впервые встречается в исходном массиве. Позволяет выполнять нумерацию элементов многомерного массива с возможностью задать глубину обхода массива.
Синтаксис
Аргументы
clear_depth— Уровень, на котором элементы перечисляются по отдельности. Должно быть меньше или равноmax_arr_depth.UInt*arr— N-мерный массив для перечисления.Array(T)max_array_depth— Максимальная используемая глубина. Должна быть меньше или равна глубинеarr.UInt*
Возвращаемое значение
Возвращает массив, указывающий позицию первого появления каждого элемента в исходном массиве. Array
Примеры
Базовое использование
Применение к многомерному массиву
Пример с повышенным значением clear_depth
arrayEnumerateUniq
Добавлена в версии v1.1
Возвращает массив того же размера, что и исходный, указывая для каждого элемента его порядковый номер среди элементов с тем же значением.
Эта функция полезна при использовании ARRAY JOIN и агрегации элементов массива.
Функция может принимать в качестве аргументов несколько массивов одного размера. В этом случае уникальность определяется для кортежей элементов, находящихся на одинаковых позициях во всех массивах.
Синтаксис
Аргументы
arr1— первый массив для обработки.Array(T)arr2, ...— необязательно. Дополнительные массивы того же размера для обеспечения уникальности кортежей.Array(UInt32)
Возвращаемое значение
Возвращает массив, в котором каждый элемент — это позиция среди элементов с тем же значением или кортежем. Array(T)
Примеры
Базовое использование
Несколько массивов
Агрегирование с помощью ARRAY JOIN
arrayEnumerateUniqRanked
Впервые появилась в: v20.1
Возвращает массив (или многомерный массив) с теми же размерами, что и исходный массив, в котором для каждого элемента указана его позиция среди элементов с тем же значением. Позволяет выполнять нумерацию многомерного массива с возможностью указать, насколько глубоко просматривать массив.
Синтаксис
Аргументы
clear_depth— перечислять элементы на указанном уровне вложенности отдельно. Положительное целое число, меньшее или равноеmax_arr_depth.UInt*arr— N-мерный массив для перечисления.Array(T)max_array_depth— максимальная эффективная глубина вложенности. Положительное целое число, меньшее или равное глубинеarr.UInt*
Возвращаемое значение
Возвращает N-мерный массив того же размера, что и arr, в котором каждый элемент показывает порядковый номер этого элемента среди других элементов с тем же значением. Array(T)
Примеры
Пример 1
Пример 2
Пример 3
Пример 4
arrayExcept
Добавлена в: v25.9
Возвращает массив, содержащий элементы из source, которые отсутствуют в except, с сохранением исходного порядка.
Эта функция выполняет операцию разности множеств между двумя массивами. Для каждого элемента в source проверяется, существует ли такой элемент в except (с использованием точного сравнения). Если нет, элемент включается в результат.
Операция обладает следующими свойствами:
- Порядок элементов из
sourceсохраняется - Дубликаты в
sourceсохраняются, если их нет вexcept - NULL рассматривается как отдельное значение
Синтаксис
Аргументы
source— исходный массив с элементами для фильтрации.Array(T)except— массив с элементами, которые нужно исключить из результата.Array(T)
Возвращаемое значение
Возвращает массив того же типа, что и входной массив, содержащий элементы из source, которые не были найдены в except. Array(T)
Примеры
простой пример
with_nulls1
with_nulls2
строки
arrayExists
Добавлена в версии v1.1
Возвращает 1, если в исходном массиве есть хотя бы один элемент, для которого func(x[, y1, y2, ... yN]) возвращает true. В противном случае возвращает 0.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает 1, если лямбда-функция возвращает true хотя бы для одного элемента, иначе 0. UInt8
Примеры
Пример использования
arrayFill
Введена в: v20.1
Функция arrayFill последовательно обрабатывает исходный массив от первого элемента
до последнего, вычисляя лямбда-условие в каждой позиции с использованием элементов
из исходного и условного массивов. Когда лямбда-функция возвращает false
в позиции i, функция заменяет этот элемент элементом в позиции i-1
из текущего состояния массива. Первый элемент всегда сохраняется
независимо от каких-либо условий.
Синтаксис
Аргументы
func(x [, y1, ..., yN])— лямбда-функцияfunc(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN]), которая применяется к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— исходный массив для обработки.Лямбда-функция[, cond1_arr, ... , condN_arr]— Необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает массив типа Array(T)
Примеры
Пример с одним массивом
Пример с двумя массивами
arrayFilter
Появилась в версии: v1.1
Возвращает массив, содержащий только те элементы исходного массива, для которых лямбда-функция возвращает true.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов-условий (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов-условий, передающих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает подмножество исходного массива Array(T)
Примеры
Пример 1
Пример 2
arrayFirst
Впервые появилась в версии: v1.1
Возвращает первый элемент исходного массива, для которого func(x[, y1, y2, ... yN]) возвращает true, иначе — значение по умолчанию.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов-условий (y). Lambda function. -source_arr— исходный массив для обработки.Array(T). -[, cond1_arr, ... , condN_arr]— необязательный параметр: N массивов-условий, передающих дополнительные аргументы лямбда-функции.Array(T).
Возвращаемое значение
Возвращает первый элемент исходного массива, для которого λ истинно, в противном случае — значение по умолчанию типа T.
Примеры
Пример использования
Совпадений нет
arrayFirstIndex
Была добавлена в: v1.1
Возвращает индекс первого элемента исходного массива, для которого func(x[, y1, y2, ... yN]) возвращает true; в противном случае возвращает 0.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивам условий (y). Lambda function. -source_arr— исходный массив для обработки.Array(T). -[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T).
Возвращаемое значение
Возвращает индекс первого элемента исходного массива, для которого func возвращает true, в противном случае возвращает 0 — значение типа UInt32.
Примеры
Пример использования
Совпадений нет
arrayFirstOrNull
Впервые появилась в: v1.1
Возвращает первый элемент исходного массива, для которого func(x[, y1, y2, ... yN]) возвращает true; если такого элемента нет, возвращает NULL.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивам условий (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает первый элемент исходного массива, для которого func возвращает true, в противном случае возвращает NULL.
Примеры
Пример использования
Совпадений нет
arrayFlatten
Впервые появилась в версии: v20.1
Преобразует массив массивов в плоский массив.
Особенности функции:
- Применяется к массивам с любой степенью вложенности.
- Не изменяет массивы, которые уже являются плоскими.
Плоский массив содержит все элементы из всех исходных массивов.
Синтаксис
Псевдонимы: flatten
Аргументы
arr— многомерный массив.Array(Array(T))
Возвращаемое значение
Возвращает плоский массив, полученный из многомерного массива Array(T)
Примеры
Пример использования
arrayFold
Добавлена в версии: v23.10
Применяет лямбда-функцию к одному или нескольким массивам одинаковой длины и накапливает результаты в аккумуляторе.
Синтаксис
Аргументы
λ(x, x1 [, x2, x3, ... xN])— лямбда-функцияλ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN]), гдеF— операция, применяемая кaccи значениям массивовx, при этом результат снова передаётся какacc.Лямбда-функцияarr1 [, arr2, arr3, ... arrN]— N массивов, над которыми выполняется операция.Array(T)acc— аккумулирующее значение того же типа, что и возвращаемый тип лямбда-функции.
Возвращаемое значение
Возвращает итоговое значение acc.
Примеры
Пример использования
Последовательность Фибоначчи
Пример с несколькими массивами
arrayIntersect
Впервые появилась в версии: v1.1
Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN— N массивов, из которых формируется новый массив.Array(T).
Возвращаемое значение
Возвращает массив уникальных элементов, которые присутствуют во всех N массивах Array(T).
Примеры
Пример использования
arrayJaccardIndex
Появилась в версии: v23.7
Возвращает индекс Жаккара для двух массивов.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает индекс Жаккара массивов arr_x и arr_y типа Float64
Примеры
Пример использования
arrayJoin
Появилась в: v1.1
Функция arrayJoin принимает строку, содержащую массив, и разворачивает этот массив, генерируя несколько строк — по одной для каждого элемента массива.
Это отличается от обычных функций в ClickHouse, которые отображают входные значения в выходные в пределах одной и той же строки,
и агрегатных функций, которые принимают группу строк и «сжимают» или «сводят» их в одну итоговую строку
(или в одно значение внутри итоговой строки, если используются с GROUP BY).
Все значения в столбцах просто копируются, за исключением значений в столбце, к которому применяется эта функция; они заменяются соответствующим значением из массива.
Синтаксис
Аргументы
arr— массив для разворачивания.Array(T)
Возвращаемое значение
Возвращает набор строк, полученных при разворачивании arr.
Примеры
Базовое использование
arrayJoin применяется ко всем частям запроса
Использование нескольких вызовов arrayJoin
Неожиданные результаты, вызванные оптимизациями
Использование синтаксиса ARRAY JOIN
Использование Tuple
arrayLast
Добавлена в версии: v1.1
Возвращает последний элемент исходного массива, для которого лямбда func(x [, y1, y2, ... yN]) возвращает true, иначе возвращает значение по умолчанию.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— lambda-функция, которая применяется к элементам исходного массива (x) и массивам-условиям (y). Lambda function. -source— исходный массив для обработки.Array(T). -[, cond1, ... , condN]— необязательный параметр. N массивов-условий, передающих дополнительные аргументы в lambda-функцию.Array(T).
Возвращаемое значение
Возвращает последний элемент исходного массива, для которого func возвращает true, а если такого элемента нет, — значение по умолчанию типа T.
Примеры
Пример использования
Совпадений нет
arrayLastIndex
Появилась в версии: v1.1
Возвращает индекс последнего элемента в исходном массиве, для которого func(x[, y1, y2, ... yN]) возвращает true; в противном случае возвращает '0'.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивам условий (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, предоставляющих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает индекс последнего элемента исходного массива, для которого func возвращает истину, в противном случае возвращает 0 UInt32
Примеры
Пример использования
Совпадений нет
arrayLastOrNull
Введена в версии: v1.1
Возвращает последний элемент исходного массива, для которого лямбда-выражение func(x [, y1, y2, ... yN]) возвращает true; в противном случае возвращает NULL.
Синтаксис
Аргументы
func(x [, y1, ..., yN])— лямбда‑функция, которая обрабатывает элементы исходного массива (x) и массивов условий (y). Lambda function.
source_arr— исходный массив для обработки.Array(T).[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда‑функции.Array(T).
Возвращаемое значение
Возвращает последний элемент исходного массива, для которого λ не истинно, в противном случае — NULL.
Примеры
Пример использования
Совпадений нет
arrayLevenshteinDistance
Добавлена в: v25.4
Вычисляет расстояние Левенштейна между двумя массивами.
Синтаксис
Аргументы
Возвращаемое значение
Расстояние Левенштейна между первым и вторым массивами. Float64
Примеры
Пример использования
arrayLevenshteinDistanceWeighted
Добавлено в версии: v25.4
Вычисляет расстояние Левенштейна для двух массивов с пользовательскими весами для каждого элемента. Количество элементов в массиве и количество весов должно совпадать.
Синтаксис
Аргументы
from— первый массив.Array(T). -to— второй массив.Array(T). -from_weights— веса элементов первого массива.Array((U)Int*|Float*)to_weights— веса элементов второго массива.Array((U)Int*|Float*)
Возвращаемое значение
Расстояние Левенштейна между первым и вторым массивами с настраиваемыми весами для каждого элемента Float64
Примеры
Пример использования
arrayMap
Введена в версии v1.1
Возвращает массив, полученный из исходных массивов путём применения лямбда-функции к каждому их элементу.
Синтаксис
Аргументы
func— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов-условий (y).Lambda functionarr— N массивов для обработки.Array(T)
Возвращаемое значение
Возвращает массив из результатов работы лямбда-функции Array(T)
Примеры
Пример использования
Создание кортежа элементов из нескольких массивов
arrayMax
Введена в версии v21.1
Возвращает максимальный элемент в исходном массиве.
Если указана лямбда-функция func, возвращает максимальный элемент среди результатов её выполнения.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный параметр. Лямбда-функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда-функции.Array(T)
Возвращаемое значение
Возвращает максимальный элемент в исходном массиве или максимальный элемент среди результатов лямбда-функции, если она передана.
Примеры
Базовый пример
Использование с лямбда-функцией
arrayMin
Добавлена в: v21.1
Возвращает минимальный элемент исходного массива.
Если указана лямбда-функция func, возвращает минимальный результат применения этой лямбда-функции.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный параметр. Функция-лямбда, которая применяется к элементам исходного массива (x) и массивов-условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)cond1_arr, ...— Необязательный параметр. N массивов-условий, предоставляющих дополнительные аргументы функции-лямбды.Array(T)
Возвращаемое значение
Возвращает минимальный элемент исходного массива или минимальный элемент результатов применения функции-лямбды, если она указана.
Примеры
Базовый пример
Использование с лямбда-функцией
arrayNormalizedGini
Введена в версии: v25.1
Вычисляет нормализованный коэффициент Джини.
Синтаксис
Аргументы
Возвращаемое значение
Кортеж, содержащий коэффициент Джини для предсказанных значений, коэффициент Джини для нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух коэффициентов Джини) Tuple(Float64, Float64, Float64)
Примеры
Пример использования
arrayPartialReverseSort
Введена в: v23.2
Эта функция аналогична arrayReverseSort, но с дополнительным аргументом limit, позволяющим выполнять частичную сортировку.
Чтобы оставить только отсортированные элементы, используйте arrayResize.
Синтаксис
Аргументы
f(arr[, arr1, ... ,arrN])— лямбда-функция, применяемая к элементам массиваx.Lambda functionarr— массив, который требуется упорядочить.Array(T)arr1, ... ,arrN— N дополнительных массивов, когдаfпринимает несколько аргументов.Array(T)limit— значение индекса, до которого будет выполняться сортировка.(U)Int*
Возвращаемое значение
Возвращает массив того же размера, что и исходный массив, в котором элементы в диапазоне [1..limit] отсортированы
по убыванию. Остальные элементы в диапазоне (limit..N] находятся в произвольном порядке.
Примеры
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPartialShuffle
Введена в версии: v23.2
Возвращает массив того же размера, что и исходный массив, в котором элементы в диапазоне [1..limit] представляют собой случайное подмножество исходного массива. Оставшиеся элементы (limit..n] содержат элементы, не входящие в диапазон [1..limit], в неопределённом порядке.
Значение limit должно находиться в диапазоне [1..n]. Значения вне этого диапазона эквивалентны выполнению полного вызова arrayShuffle:
Эта функция не материализует константы.
Значение limit должно находиться в диапазоне [1..N]. Значения вне этого диапазона эквивалентны выполнению полного вызова arrayShuffle.
Синтаксис
Аргументы
arr— Массив для перемешивания.Array(T)seed— Необязательный параметр. Значение для инициализации генератора случайных чисел. Если не задано, используется случайное значение.(U)Int*limit— Необязательный параметр. Число, ограничивающее количество обменов элементов, в диапазоне[1..N].(U)Int*
Возвращаемое значение
Массив с частично перемешанными элементами. Array(T)
Примеры
no_limit1
no_limit2
random_seed
explicit_seed
materialize
arrayPartialSort
Введена в версии: v23.2
Эта функция аналогична arraySort, но имеет дополнительный аргумент limit, который позволяет выполнять частичную сортировку.
Чтобы сохранить только отсортированные элементы, используйте arrayResize.
Синтаксис
Аргументы
f(arr[, arr1, ... ,arrN])— лямбда-функция, применяемая к элементам массиваx.Lambda functionarr— массив, который нужно отсортировать.Array(T)arr1, ... ,arrN— N дополнительных массивов, еслиfпринимает несколько аргументов.Array(T)limit— значение индекса, до которого выполняется сортировка.(U)Int*
Возвращаемое значение
Возвращает массив того же размера, что и исходный массив, в котором элементы в диапазоне [1..limit] отсортированы
по возрастанию. Оставшиеся элементы (limit..N] могут быть расположены в произвольном порядке.
Примеры
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPopBack
Появилась в версии: v1.1
Удаляет последний элемент массива.
Синтаксис
Аргументы
arr— массив, из которого нужно удалить последний элемент.Array(T)
Возвращаемое значение
Возвращает массив, совпадающий с arr, но без его последнего элемента. Array(T)
Примеры
Пример использования
arrayPopFront
Впервые появилась в версии v1.1
Удаляет первый элемент массива.
Синтаксис
Аргументы
arr— массив, из которого нужно удалить первый элемент.Array(T)
Возвращаемое значение
Возвращает массив, идентичный arr, но без его первого элемента. Array(T)
Примеры
Пример использования
arrayProduct
Впервые представлена в: v21.1
Возвращает произведение элементов исходного массива.
Если указана лямбда-функция func, возвращает произведение значений, полученных при применении этой функции.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный аргумент. Функция-лямбда, которая работает с элементами исходного массива (x) и массивов условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательные аргументы. N массивов условий, предоставляющих дополнительные аргументы функции-лямбды.Array(T)
Возвращаемое значение
Возвращает произведение элементов исходного массива или произведение значений, возвращаемых функцией-лямбдой, если она задана. Float64
Примеры
Базовый пример
Использование с лямбда-функцией
arrayPushBack
Появилась в версии v1.1
Добавляет один элемент в конец массива.
Синтаксис
Аргументы
arr— массив, в конец которого нужно добавить значениеx.Array(T)x—- одно значение, которое нужно добавить в конец массива.
Array(T).
- В массив с числами можно добавлять только числа, а в массив строк — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных элементов массива. - Может быть
NULL. Функция добавляет элементNULLв массив, и тип элементов массива преобразуется вNullable.
Дополнительную информацию о типах данных в ClickHouse см. в разделе Типы данных.
Возвращаемое значение
Возвращает массив, идентичный arr, но с дополнительным значением x в конце массива Array(T).
Примеры
Пример использования
arrayPushFront
Впервые появилась в версии: v1.1
Добавляет один элемент в начало массива.
Синтаксис
Аргументы
arr— массив, к концу которого нужно добавить значениеx.Array(T).x— одиночное значение, которое нужно добавить в начало массива.Array(T).
- В массив с числами можно добавлять только числа, а в массив со строками — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных элементов массива. - Может быть
NULL. Функция добавляет элементNULLв массив, и тип элементов массива преобразуется вNullable.
Дополнительную информацию о типах данных в ClickHouse см. в разделе Data types.
Возвращаемое значение
Возвращает массив, идентичный arr, но с дополнительным значением x в начале массива Array(T)
Примеры
Пример использования
arrayROCAUC
Введена в версии v20.4
Вычисляет площадь под ROC-кривой (receiver operating characteristic). ROC-кривая строится путём откладывания True Positive Rate (TPR) по оси Y и False Positive Rate (FPR) по оси X для всех пороговых значений. Результирующее значение лежит в диапазоне от нуля до единицы, при этом более высокое значение указывает на лучшую работу модели.
ROC AUC (также известна просто как AUC) — это понятие в машинном обучении. Для получения дополнительных сведений см. здесь, здесь и здесь.
Синтаксис
Псевдонимы: arrayAUC
Аргументы
scores— Оценки, которые возвращает модель.Array((U)Int*)илиArray(Float*)labels— Метки объектов, обычно 1 для положительного и 0 для отрицательного объекта.Array((U)Int*)илиEnumscale— Необязательный параметр. Определяет, возвращать ли нормированную площадь. Еслиfalse, возвращается площадь под кривой TP (true positives, истинно положительные) x FP (false positives, ложно положительные). Значение по умолчанию:true.Boolpartial_offsets—- Массив из четырех неотрицательных целых чисел для вычисления частичной площади под ROC-кривой (эквивалент вертикальной полосе в ROC-пространстве) вместо полной AUC. Этот параметр полезен для распределенного вычисления ROC AUC. Массив должен содержать следующие элементы [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]. Array из неотрицательных Integers. Необязательный.higher_partitions_tp: Число положительных меток в партициях с более высокими значениями оценок.higher_partitions_fp: Число отрицательных меток в партициях с более высокими значениями оценок.total_positives: Общее число положительных объектов во всем наборе данных.total_negatives: Общее число отрицательных объектов во всем наборе данных.
Когда используется arr_partial_offsets, arr_scores и arr_labels должны представлять только одну партицию всего набора данных, содержащую интервал значений scores.
Набор данных должен быть разделен на смежные партиции, где каждая партиция содержит подмножество данных, чьи оценки попадают в определенный диапазон.
Например:
- Одна партиция может содержать все оценки в диапазоне [0, 0.5).
- Другая партиция может содержать оценки в диапазоне [0.5, 1.0].
Возвращаемое значение
Возвращает площадь под ROC-кривой (receiver operating characteristic). Float64
Примеры
Пример использования
arrayRandomSample
Введена в версии: v23.10
Возвращает подмножество из samples случайных элементов входного массива. Если samples превышает размер входного массива, размер выборки ограничивается размером массива, то есть возвращаются все элементы массива, но их порядок не гарантируется. Функция может работать как с плоскими, так и с вложенными массивами.
Синтаксис
Аргументы
arr— Входной массив или многомерный массив, из которого выбираются элементы для выборки.Array(T)samples— Количество элементов, которое необходимо включить в случайную выборку.(U)Int*
Возвращаемое значение
Массив, содержащий случайную выборку элементов из входного массива. Array(T)
Примеры
Пример использования
Использование многомерного массива
arrayReduce
Введена в версии: v1.1
Применяет агрегатную функцию к элементам массива и возвращает её результат.
Имя агрегатной функции передаётся в виде строки в одинарных кавычках: 'max', 'sum'.
При использовании параметрических агрегатных функций параметр указывается после имени функции в круглых скобках: 'uniqUpTo(6)'.
Синтаксис
Аргументы
agg_f— имя агрегатной функции, которое должно быть константой.Stringarr1 [, arr2, ... , arrN)]— N массивов, соответствующих аргументамagg_f.Array(T)
Возвращаемое значение
Возвращает результат выполнения агрегатной функции.
Примеры
Пример использования
Пример с агрегатной функцией, принимающей несколько аргументов
Пример с параметризуемой агрегатной функцией
arrayReduceInRanges
Появилась в версии v20.4
Применяет агрегатную функцию к элементам массива в указанных диапазонах и возвращает массив, содержащий результат для каждого диапазона.
Функция возвращает тот же результат, что и несколько вызовов arrayReduce(agg_func, arraySlice(arr1, index, length), ...).
Синтаксис
Аргументы
agg_f— имя агрегатной функции, которая будет использоваться.Stringranges— диапазон, по которому выполняется агрегация. Массив кортежей(i, r), содержащих индексi, с которого начинается агрегация, и диапазонr, по которому она выполняется.Array(T)илиTuple(T)arr1 [, arr2, ... ,arrN)]— N массивов в качестве аргументов агрегатной функции.Array(T)
Возвращаемое значение
Возвращает массив, содержащий результаты применения агрегатной функции по указанным диапазонам, Array(T)
Примеры
Пример использования
arrayRemove
Появилась в версии: v25.11
Удаляет из массива все элементы, равные заданному значению. NULL рассматриваются как равные.
Синтаксис
Псевдонимы: array_remove
Аргументы
arr— Array(T) -elem— T
Возвращаемое значение
Возвращает подмножество исходного массива Array(T)
Примеры
Пример 1
Пример 2
arrayResize
Добавлена в: v1.1
Изменяет длину массива.
Синтаксис
Аргументы
arr— Массив для изменения размера.Array(T)size—- Новая длина массива.
Если
sizeменьше исходного размера массива, массив усекается справа. Еслиsizeбольше исходного размера массива, массив расширяется вправо значениямиextenderили значениями по умолчанию для типа данных элементов массива.
- Новая длина массива.
Если
extender— Значение, которое используется для расширения массива. Может бытьNULL.
Возвращаемое значение
Массив длины size. Array(T)
Примеры
Пример 1
Пример 2
arrayReverse
Введена в: v1.1
Меняет порядок элементов заданного массива на обратный.
Функция reverse(arr) выполняет ту же задачу, но работает и с другими типами данных,
помимо массивов.
Синтаксис
Аргументы
arr— массив, который нужно развернуть.Array(T)
Возвращаемое значение
Возвращает массив того же размера, что и исходный, содержащий элементы в обратном порядке Array(T)
Примеры
Пример использования
arrayReverseFill
Появилась в: v20.1
Функция arrayReverseFill последовательно обрабатывает исходный массив от
последнего элемента к первому, вычисляя лямбда‑условие на каждой позиции с использованием элементов
из исходного массива и массива условий. Когда условие принимает значение false на
позиции i, функция заменяет этот элемент элементом на позиции i+1
из текущего состояния массива. Последний элемент всегда сохраняется,
независимо от условия.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивам-условиям (y).Lambda functionsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательные аргументы. N массивов-условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Возвращаемое значение
Возвращает массив, в котором элементы исходного массива заменены результатами лямбда-функции. Array(T)
Примеры
Пример с одним массивом
Пример с двумя массивами
arrayReverseSort
Введена в версии: v1.1
Сортирует элементы массива в порядке убывания.
Если указана функция f, исходный массив сортируется в соответствии с результатом
применения функции к элементам массива, после чего отсортированный массив разворачивается.
Если f принимает несколько аргументов, функции arrayReverseSort передаётся несколько массивов,
которые будут соответствовать аргументам f.
Если сортируемый массив содержит -Inf, NULL, NaN или Inf, они будут отсортированы в следующем порядке:
-InfInfNaNNULL
arrayReverseSort — это функция высшего порядка.
Синтаксис
Аргументы
f(y1[, y2 ... yN])— лямбда-функция, применяемая к элементам массиваx.arr— массив, который нужно отсортировать.Array(T)arr1, ..., yN— необязательные аргументы. N дополнительных массивов, еслиfпринимает несколько аргументов.
Возвращаемое значение
Возвращает массив x, отсортированный по убыванию, если лямбда-функция не передана; в противном случае
возвращает массив, отсортированный в соответствии с логикой указанной лямбда-функции, а затем перевёрнутый. Array(T).
Примеры
Пример 1
Пример 2
arrayReverseSplit
Введена в: v20.1
Разбивает исходный массив на несколько массивов. Когда func(x[, y1, ..., yN]) возвращает ненулевое значение, массив разделяется справа от этого элемента. Массив не разделяется после последнего элемента.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Lambda functionsource_arr— исходный массив для обработки.Lambda function[, cond1_arr, ... , condN_arr]— необязательный аргумент. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Возвращаемое значение
Возвращает массив массивов. Array(Array(T))
Примеры
Пример использования
arrayRotateLeft
Введена в версии v23.8
Выполняет циклический сдвиг массива влево на указанное количество элементов. Отрицательные значения n интерпретируются как сдвиг вправо на абсолютное значение этого числа.
Синтаксис
Аргументы
arr— массив, для которого нужно выполнить циклический сдвиг элементов.Array(T). -n— количество элементов для сдвига.(U)Int8/16/32/64.
Возвращаемое значение
Массив, циклически сдвинутый влево на заданное количество элементов Array(T)
Примеры
Пример использования
Отрицательное значение параметра n
arrayRotateRight
Введена в версии: v23.8
Циклически сдвигает массив вправо на указанное количество элементов. Отрицательные значения n интерпретируются как сдвиг влево на абсолютное значение величины сдвига.
Синтаксис
Аргументы
arr— массив, элементы которого нужно циклически сдвинуть.Array(T). -n— количество элементов для сдвига.(U)Int8/16/32/64.
Возвращаемое значение
Массив, циклически сдвинутый вправо на указанное количество элементов. Array(T)
Примеры
Пример использования
Отрицательное значение параметра n
arrayShiftLeft
Добавлено в v23.8
Сдвигает массив влево на указанное число элементов. Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элементов массива. Если число элементов отрицательное, массив сдвигается вправо.
Синтаксис
Аргументы
arr— массив, элементы которого нужно сдвинуть.Array(T)n— количество элементов для сдвига.(U)Int8/16/32/64default— необязательный параметр. Значение по умолчанию для новых элементов.
Возвращаемое значение
Массив, сдвинутый влево на заданное количество элементов Array(T)
Примеры
Пример использования
Отрицательное значение параметра n
Использование значения по‑умолчанию
arrayShiftRight
Добавлена в: v23.8
Сдвигает массив вправо на указанное число элементов. Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элементов массива. Если это число отрицательно, массив сдвигается влево.
Синтаксис
Аргументы
arr— Массив, элементы которого необходимо сдвинуть.Array(T)n— Количество элементов для сдвига.(U)Int8/16/32/64default— Необязательный параметр. Значение по умолчанию для новых элементов.
Возвращаемое значение
Массив, сдвинутый вправо на указанное количество элементов Array(T)
Примеры
Пример использования
Отрицательное значение параметра n
Использование значения по умолчанию
arrayShingles
Впервые появилась в: v24.1
Генерирует массив шинглов (аналог n-грамм для строк), то есть последовательных подмассивов заданной длины исходного массива.
Синтаксис
Аргументы
Возвращаемое значение
Массив сгенерированных шинглов Array(T)
Примеры
Пример использования
arrayShuffle
Введена в версии v23.2
Возвращает массив того же размера, что и исходный, содержащий элементы в перемешанном порядке. Элементы переупорядочиваются таким образом, что каждая возможная перестановка элементов равновероятна.
Эта функция не материализует константы.
Синтаксис
Аргументы
arr— Массив для перемешивания.Array(T)seed (optional)— Необязательный параметр. Seed, используемый при генерации случайных чисел. Если не задано, используется случайное значение.(U)Int*
Возвращаемое значение
Массив с перемешанными элементами Array(T)
Примеры
Пример без seed (нестабильный результат)
Пример без значения seed (стабильный результат)
arraySimilarity
Добавлено в: v25.4
Вычисляет степень сходства двух массивов от 0 до 1 на основе взвешенного расстояния Левенштейна.
Синтаксис
Аргументы
from— первый массивArray(T)to— второй массивArray(T)from_weights— веса для первого массиваArray((U)Int*|Float*)to_weights— веса для второго массиваArray((U)Int*|Float*)
Возвращаемое значение
Возвращает степень сходства двух массивов в диапазоне от 0 до 1 на основе взвешенного расстояния Левенштейна Float64
Примеры
Пример использования
arraySlice
Впервые появилось в версии: v1.1
Возвращает срез массива, включая элементы NULL.
Синтаксис
Аргументы
arr— Массив, из которого формируется срез.Array(T)offset— Смещение от края массива. Положительное значение задаёт смещение слева, отрицательное — смещение справа. Нумерация элементов массива начинается с1.(U)Int*length— Длина требуемого среза. Если указано отрицательное значение, функция возвращает полуоткрытый срез[offset, array_length - length]. Если параметр не указан, функция возвращает срез[offset, the_end_of_array].(U)Int*
Возвращаемое значение
Возвращает срез массива с length элементами, начиная с указанного offset, Array(T)
Примеры
Пример использования
arraySort
Введена в версии: v1.1
Сортирует элементы переданного массива по возрастанию.
Если указана лямбда-функция f, порядок сортировки определяется результатом
применения этой лямбды к каждому элементу массива.
Если лямбда принимает несколько аргументов, функции arraySort передаётся несколько
массивов, аргументы f будут соответствовать элементам этих массивов.
Если сортируемый массив содержит -Inf, NULL, NaN или Inf, они будут отсортированы в следующем порядке:
-InfInfNaNNULL
arraySort — это функция высшего порядка.
Синтаксис
Arguments
f(y1[, y2 ... yN])— лямбда-функция, применяемая к элементам массиваx. -arr— массив для сортировки.Array(T)-arr1, ..., yN— необязательные: N дополнительных массивов в случае, когдаfпринимает несколько аргументов.
Returned value
Возвращает массив arr, отсортированный по возрастанию, если лямбда-функция не задана, в противном случае
возвращает массив, отсортированный в соответствии с логикой переданной лямбда-функции. Array(T).
Examples
Example 1
Пример 2
Пример 3
arraySplit
Появилась в версии: v20.1
Разбивает исходный массив на несколько массивов. Когда func(x [, y1, ..., yN]) возвращает значение, отличное от нуля, массив будет разделён слева от этого элемента. Массив не будет разделён перед первым элементом.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая работает с элементами исходного массива (x) и массивов-условий (y). Lambda function. -source_arr— исходный массив для разбиенияArray(T). -[, cond1_arr, ... , condN_arr]— необязательные. N массивов-условий, передающих дополнительные аргументы в лямбда-функцию.Array(T).
Возвращаемое значение
Возвращает массив массивов Array(Array(T)).
Примеры
Пример использования
arraySum
Впервые представлена в версии: v21.1
Возвращает сумму элементов исходного массива.
Если указана лямбда-функция func, возвращает сумму элементов, полученных в результате применения этой лямбда-функции.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный параметр. Лямбда‑функция, которая работает с элементами исходного массива (x) и массивов условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)cond1_arr, ... , condN_arr— Необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда‑функции.Array(T)
Возвращаемое значение
Возвращает сумму элементов исходного массива или сумму элементов результатов лямбда‑функции, если она указана.
Примеры
Базовый пример
Использование с лямбда-функцией
arraySymmetricDifference
Введена в версии: v25.4
Принимает несколько массивов и возвращает массив с элементами, которые есть не во всех исходных массивах. Результат содержит только уникальные значения.
Симметрическая разность более чем двух множеств математически определяется
как множество всех входных элементов, которые встречаются в нечётном числе входных множеств.
В отличие от этого определения, функция arraySymmetricDifference просто возвращает множество входных элементов, которые присутствуют не во всех входных множествах.
Синтаксис
Аргументы
arrN— N массивов, на основании которых создаётся новый массив.Array(T).
Возвращаемое значение
Возвращает массив различных элементов, которые не присутствуют во всех исходных массивах. Array(T)
Примеры
Пример использования
arrayUnion
Добавлена в версии v24.10
Принимает несколько массивов и возвращает массив, который содержит все элементы, присутствующие хотя бы в одном из исходных массивов. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN— N массивов, из которых создаётся новый массив.Array(T)
Возвращаемое значение
Возвращает массив, содержащий уникальные элементы исходных массивов Array(T)
Примеры
Пример использования
arrayUniq
Добавлена в: v1.1
При передаче одного аргумента функция подсчитывает количество различных элементов в массиве. При передаче нескольких аргументов она подсчитывает количество различных кортежей, составленных из элементов на соответствующих позициях в нескольких массивах.
Например, SELECT arrayUniq([1,2], [3,4], [5,6]) сформирует следующие кортежи:
- Позиция 1: (1,3,5)
- Позиция 2: (2,4,6)
Затем будет подсчитано количество уникальных кортежей. В данном случае 2.
Все переданные массивы должны иметь одинаковую длину.
Если нужно получить список уникальных элементов в массиве, можно использовать arrayReduce('groupUniqArray', arr).
Синтаксис
Аргументы
arr1— Массив, для которого считается количество уникальных элементов.Array(T)[, arr2, ..., arrN]— Необязательный. Дополнительные массивы, используемые для подсчёта количества уникальных кортежей элементов на соответствующих позициях в нескольких массивах.Array(T)
Возвращаемое значение
Для одного аргумента возвращает количество уникальных
элементов. Для нескольких аргументов возвращает количество уникальных кортежей, составленных из
элементов на соответствующих позициях во всех массивах.
UInt32
Примеры
Один аргумент
Несколько аргументов
arrayWithConstant
Добавлено в: v20.1
Создаёт массив длины length, заполненный значением x.
Синтаксис
Аргументы
length— количество элементов в массиве.(U)Int*x— значение, которым заполняютсяNэлементов массива, произвольного типа.Array(T)
Возвращаемое значение
Возвращает массив типа Array(T) из N элементов со значением x.
Примеры
Пример использования
arrayZip
Введена в: v20.1
Объединяет несколько массивов в один массив. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в порядке следования аргументов.
Синтаксис
Аргументы
arr1, arr2, ... , arrN— N массивов, которые нужно объединить в один массив.Array(T)
Возвращаемое значение
Возвращает массив, элементы которого представляют собой кортежи, составленные из элементов исходных массивов. Типы данных в кортеже такие же, как типы входных массивов, и следуют в том же порядке, в котором переданы массивы. Array(T)
Примеры
Пример использования
arrayZipUnaligned
Добавлена в: v20.1
Объединяет несколько массивов в один массив, при этом допускаются невыравненные массивы (массивы разной длины). Полученный массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.
Синтаксис
Аргументы
arr1, arr2, ..., arrN— N массивов для объединения в один массив.Array(T)
Возвращаемое значение
Возвращает массив с элементами исходных массивов, сгруппированными в кортежи. Типы данных в кортеже совпадают с типами входных массивов и расположены в том же порядке, в каком массивы переданы. Array(T) или Tuple(T1, T2, ...)
Примеры
Пример использования
countEqual
Появилась в версии: v1.1
Возвращает количество элементов массива, равных x. Эквивалентна arrayCount(elem -> elem = x, arr).
Элементы со значением NULL считаются отдельными значениями.
Синтаксис
Аргументы
arr— массив для поиска.Array(T)x— значение в массиве, которое нужно посчитать. Любого типа.
Возвращаемое значение
Возвращает количество элементов в массиве, равных x UInt64
Примеры
Пример использования
empty
Впервые появилась в версии v1.1.
Проверяет, является ли входной массив пустым.
Массив считается пустым, если он не содержит ни одного элемента.
Можно оптимизировать, включив настройку optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1 функция читает только подстолбец size0 вместо чтения и обработки всего столбца массива. Запрос SELECT empty(arr) FROM TABLE; преобразуется в SELECT arr.size0 = 0 FROM TABLE;.
Функция также работает для значений типа String или UUID.
Синтаксис
Аргументы
arr— входной массив.Array(T)
Возвращаемое значение
Возвращает 1 для пустого массива или 0 для непустого массива, тип UInt8
Примеры
Пример использования
emptyArrayDate
Добавлена в версии: v1.1
Возвращает пустой массив типа Date
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив типа Date. Array(T)
Примеры
Пример использования
emptyArrayDateTime
Введена в версии: v1.1
Возвращает пустой массив DateTime
Синтаксис
Аргументы
- Нет аргументов.
Возвращаемое значение
Пустой массив типа DateTime. Array(T)
Примеры
Пример использования
emptyArrayFloat32
Добавлена в: v1.1
Возвращает пустой массив Float32
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив типа Float32. Array(T)
Примеры
Пример использования
emptyArrayFloat64
Добавлена в версии: v1.1
Возвращает пустой массив типа Float64
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив Float64. Array(T)
Примеры
Пример использования
emptyArrayInt16
Появилась в версии: v1.1
Возвращает пустой массив типа Int16
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив типа Int16. Array(T)
Примеры
Пример использования
emptyArrayInt32
Добавлена в версии v1.1
Возвращает пустой массив Int32
Синтаксис
Аргументы
- Нет аргументов.
Возвращаемое значение
Пустой массив Int32. Array(T)
Примеры
Пример использования
emptyArrayInt64
Появилась в версии: v1.1
Возвращает пустой массив Int64
Синтаксис
Аргументы
- Отсутствуют.
Возвращаемое значение
Пустой массив Int64. Array(T)
Примеры
Пример использования
emptyArrayInt8
Добавлена в версии: v1.1
Возвращает пустой массив типа Int8
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив Int8. Array(T)
Примеры
Пример использования
emptyArrayString
Добавлена в версии: v1.1
Возвращает пустой массив типа String
Синтаксис
Аргументы
- Нет аргументов.
Возвращаемое значение
Пустой массив строк. Array(T)
Примеры
Пример использования
emptyArrayToSingle
Введена в: v1.1
Принимает пустой массив и возвращает массив с одним элементом, равным значению по умолчанию.
Синтаксис
Аргументы
arr— пустой массив.Array(T)
Возвращаемое значение
Массив с одним значением типа по умолчанию для массива Array. Array(T)
Примеры
Простой пример
emptyArrayUInt16
Добавлено в: v1.1
Возвращает пустой массив UInt16
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив типа UInt16. Array(T)
Примеры
Пример использования
emptyArrayUInt32
Добавлена в версии v1.1
Возвращает пустой массив UInt32
Синтаксис
Аргументы
- Отсутствуют.
Возвращаемое значение
Пустой массив UInt32. Array(T)
Примеры
Пример использования
emptyArrayUInt64
Введено в: v1.1
Возвращает пустой массив UInt64
Синтаксис
Аргументы
- Нет
Возвращаемое значение
Пустой массив UInt64. Array(T)
Примеры
Пример использования
emptyArrayUInt8
Добавлена в версии: v1.1
Возвращает пустой массив UInt8
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Пустой массив типа UInt8. Array(T)
Примеры
Пример использования
has
Введена в: v1.1
Возвращает, содержит ли массив указанный элемент.
Когда первый аргумент — константный массив, а второй аргумент — столбец или выражение, has(constant_array, column) ведет себя как column IN (constant_array) и может использовать первичный ключ и индексы пропуска данных для оптимизации. Например, has([1, 10, 100], id) может задействовать индекс по первичному ключу, если id является частью PRIMARY KEY.
Эта оптимизация также применяется, когда столбец обернут монотонными функциями (например, has([...], toDate(ts))).
Синтаксис
Аргументы
arr— исходный массив.Array(T)x— значение, которое нужно найти в массиве.
Возвращаемое значение
Возвращает 1, если массив содержит указанный элемент, иначе 0. UInt8
Примеры
Базовое использование
Не найдено
hasAll
Добавлена в версии v1.1
Проверяет, является ли один массив подмножеством другого.
- Пустой массив является подмножеством любого массива.
Nullобрабатывается как значение.- Порядок значений в обоих массивах не имеет значения.
Синтаксис
Аргументы
set— Массив произвольного типа с набором элементов.Array(T)subset— Массив произвольного типа, который имеет общий супертип сsetи содержит элементы, подлежащие проверке на то, что они образуют подмножествоset.Array(T)
Возвращаемое значение
1, еслиsetсодержит все элементы изsubset.0— в противном случае.
Вызывает исключение NO_COMMON_TYPE, если элементы set и subset не имеют общего супертипа.
Примеры
Пустые массивы
Массивы, содержащие NULL
Массивы, содержащие значения другого типа данных
Массивы со значениями типа String
Массивы без общего типа данных
Массив массивов
hasAny
Добавлена в версии: v1.1
Проверяет, имеют ли два массива общие элементы.
Nullобрабатывается как значение.- Порядок значений в обоих массивах не учитывается.
Синтаксис
Аргументы
arr_x— Массив произвольного типа с набором элементов.Array(T)arr_y— Массив произвольного типа, имеющий общий супертип с массивомarr_x.Array(T)
Возвращаемое значение
1, еслиarr_xиarr_yимеют по крайней мере один общий элемент.0в противном случае.
Вызывает исключение NO_COMMON_TYPE, если какие-либо элементы двух массивов не имеют общего супертипа.
Примеры
Один массив пустой
Массивы, содержащие значения NULL
Массивы, содержащие значения разных типов
Массивы без единого типа
Массивы массивов
hasSubstr
Впервые представлена в: v20.6
Проверяет, что все элементы массива array2 встречаются в массиве array1 в точно таком же порядке.
Соответственно, функция возвращает 1 тогда и только тогда, когда array1 = prefix + array2 + suffix.
Другими словами, функция проверяет, что все элементы array2 содержатся в array1, как это делает функция hasAll.
Дополнительно она проверяет, что элементы идут в одном и том же порядке и в array1, и в array2.
- Функция возвращает
1, если array2 пуст. Nullобрабатывается как значение. Другими словами,hasSubstr([1, 2, NULL, 3, 4], [2,3])вернёт0. ОднакоhasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])вернёт1.- Порядок значений в обоих массивах имеет значение.
Вызывает исключение NO_COMMON_TYPE, если какой-либо из элементов двух массивов не имеет общего супертипа.
Синтаксис
Аргументы
arr1— массив любого типа с набором элементов.Array(T)arr2— массив любого типа с набором элементов.Array(T)
Возвращаемое значение
Возвращает 1, если массив arr1 содержит массив arr2. В противном случае возвращает 0. UInt8
Примеры
Оба массива пустые
Массивы, содержащие значения NULL
Массивы, содержащие элементы другого типа
Массивы строк
Массивы с допустимым порядком элементов
Массивы с некорректным порядком
Массив массивов
Массивы без общего типа элементов
indexOf
Впервые добавлена в версии: v1.1
Возвращает индекс первого элемента со значением 'x' (начиная с 1), если такой элемент есть в массиве.
Если массив не содержит искомого значения, функция возвращает 0.
Элементы со значением NULL обрабатываются как обычные значения.
Синтаксис
Аргументы
arr— Массив, в котором выполняется поиск значенияx.Array(T)x— Значение первого элемента вarr, индекс которого нужно вернуть.UInt64
Возвращаемое значение
Возвращает индекс (нумерация с единицы) первого элемента x в arr, если он существует. В противном случае возвращает 0. UInt64
Примеры
Базовый пример
Массив с NULL-значениями
indexOfAssumeSorted
Добавлена в версии: v24.12
Возвращает индекс первого элемента со значением 'x' (начиная с 1), если он присутствует в массиве.
Если массив не содержит искомого значения, функция возвращает 0.
В отличие от функции indexOf, эта функция предполагает, что массив отсортирован
по возрастанию. Если массив не отсортирован, результат неопределён.
Синтаксис
Аргументы
arr— отсортированный массив, в котором выполняется поиск.Array(T)x— значение первого совпадающего элемента в отсортированном массивеarr, индекс которого нужно вернуть.UInt64
Возвращаемое значение
Возвращает индекс (нумерация с единицы) первого x в arr, если такое значение существует. В противном случае возвращает 0. UInt64
Примеры
Базовый пример
length
Введена в: v1.1
Вычисляет длину строки или массива.
- Для аргументов типа String или FixedString: вычисляет количество байт в строке.
- Для аргументов типа Array: вычисляет количество элементов в массиве.
- При применении к аргументу типа FixedString функция является константным выражением.
Обратите внимание, что количество байт в строке не совпадает с количеством Unicode «code points» и не совпадает с количеством Unicode «grapheme clusters» (того, что мы обычно называем «символами»), и не совпадает с видимой шириной строки.
В строках допустимы нулевые байты ASCII (NULL), и они также будут учитываться.
Синтаксис
Псевдонимы: OCTET_LENGTH
Аргументы
x— значение, для которого нужно вычислить количество байт (для String/FixedString) или элементов (для Array).StringилиFixedStringилиArray(T)
Возвращаемое значение
Возвращает количество байт в String/FixedString x или количество элементов в массиве x. UInt64
Примеры
Пример для String
Пример с массивом
пример constexpr
пример с Unicode
пример ASCII_vs_UTF8
notEmpty
Появилась в версии: v1.1
Проверяет, является ли входной массив непустым.
Массив считается непустым, если он содержит хотя бы один элемент.
Может быть оптимизирована путем включения настройки optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1 функция читает только подстолбец size0 вместо чтения и обработки всего столбца-массива. Запрос SELECT notEmpty(arr) FROM table преобразуется в SELECT arr.size0 != 0 FROM TABLE.
Функция также работает для значений типов String и UUID.
Синтаксис
Аргументы
arr— входной массив.Array(T)
Возвращаемое значение
Возвращает 1 для непустого массива или 0 для пустого массива — значение типа UInt8
Примеры
Пример использования
range
Введена в версии v1.1
Возвращает массив чисел от start до end - 1 с шагом step.
Поддерживаемые типы:
-
UInt8/16/32/64 -
Int8/16/32/64] -
Все аргументы
start,end,stepдолжны иметь один из указанных выше поддерживаемых типов. Элементы возвращаемого массива будут супертипом аргументов. -
Генерируется исключение, если функция возвращает массив с общей длиной, превышающей число элементов, заданное настройкой
function_range_max_elements_in_block. -
Возвращает
NULL, если какой-либо аргумент имеет типNullable(nothing). Генерируется исключение, если какой-либо аргумент имеет значениеNULL(типNullable(T)).
Синтаксис
Аргументы
start— Необязательный параметр. Первый элемент массива. Обязателен, если используетсяstep. Значение по умолчанию:0. -end— Обязательный параметр. Число, до которого (не включительно) формируется массив. -step— Необязательный параметр. Определяет шаг между элементами массива. Значение по умолчанию:1.
Возвращаемое значение
Массив чисел от start до end - 1 с шагом step. Array(T)
Примеры
Пример использования
replicate
Появилась в версии v1.1
Создает массив, содержащий одно значение.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает массив той же длины, что и arr, заполненный значением x. Array(T)
Примеры
Пример использования
reverse
Появился в версии: v1.1
Изменяет порядок элементов во входном массиве или символов во входной строке на обратный.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает массив или строку, в которой элементы или символы расположены в обратном порядке.
Примеры
Массив в обратном порядке
Обратная строка
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.