Функции для работы с массивами
array
Появилась в версии: v1.1
Создаёт массив из аргументов функции.
Аргументы должны быть константами и иметь типы, для которых существует общий супертип.
Должен быть передан как минимум один аргумент, иначе будет непонятно, какой тип массива создавать.
Это означает, что вы не можете использовать эту функцию для создания пустого массива. Для этого используйте функцию emptyArray*.
Для получения того же результата используйте оператор [ ].
Синтаксис
Аргументы
x1— константное значение любого типа T. Если указан только этот аргумент, массив будет иметь тип T.[, x2, ..., xN]— дополнительные N константных значений с общим надтипом сx1
Возвращаемое значение
Возвращает массив, где 'T' — наименьший общий тип среди переданных аргументов. Array(T)
Примеры
Корректное использование
Неверное использование
arrayAUCPR
Добавлена в: v20.4
Вычисляет площадь под кривой «точность–полнота» (precision–recall, PR). Кривая точность–полнота строится путём отображения точности по оси Y и полноты по оси 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).Лямбда-функцияsource_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. В противном случае возвращает количество ненулевых элементов в массиве. UInt32
Примеры
Пример использования
arrayCumSum
Введена в версии: v1.1
Возвращает массив частичных (нарастающих) сумм элементов исходного массива. Если указана лямбда-функция, сумма вычисляется как сумма результатов применения лямбды к элементам массива в каждой позиции.
Синтаксис
Аргументы
func— необязательный параметр. Лямбда-функция, применяемая к элементам массива для каждой позиции.Lambda functionarr1— исходный массив числовых значений.Array(T)[arr2, ..., arrN]— необязательные параметры. Дополнительные массивы того же размера, передаваемые в лямбда-функцию в качестве аргументов, если она указана.Array(T)
Возвращаемое значение
Возвращает массив частичных сумм элементов исходного массива. Тип результата соответствует числовому типу входного массива. Array(T)
Примеры
Базовое использование
С лямбда-функцией
arrayCumSumNonNegative
Введена в версии: v18.12
Возвращает массив частичных (накопительных) сумм элементов исходного массива, при этом любая промежуточная отрицательная сумма заменяется на ноль. Если указана лямбда-функция, сумма вычисляется на основе результата применения лямбды к элементам массива в каждой позиции.
Синтаксис
Аргументы
func— Необязательный параметр. Лямбда-функция, применяемая к элементам массива для каждой позиции.Lambda functionarr1— Исходный массив числовых значений.Array(T)[arr2, ..., arrN]— Необязательные. Дополнительные массивы того же размера, передаваемые как аргументы лямбда-функции, если она указана.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
Возвращает скалярное произведение двух массивов.
Размеры двух векторов должны быть равны. Массивы и кортежи (Tuples) также могут содержать элементы разных типов.
Синтаксис
Аргументы
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
Пример tuple
arrayElement
Впервые появился в версии: v1.1
Возвращает элемент переданного массива с индексом n, где n может быть целым числом любого типа.
Если индекс выходит за границы массива, возвращается значение по умолчанию (0 для чисел, пустая строка для строк и т. д.),
за исключением случаев, когда аргументом является неконстантный массив, а индекс — константа 0. В этом случае будет выдана ошибка Array indices are 1-based.
Массивы в ClickHouse индексируются с единицы.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, нумерация которого ведётся с конца. Например, arr[-1] — это последний элемент массива.
Оператор [n] обладает той же функциональностью.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает один объединённый массив из переданных аргументов-массивов 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).Lambda functionsource_arr— исходный массив для обработки.Lambda function[, 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])— lambda‑функция, которая работает с элементами исходного массива (x) и массивов условий (y). Лямбда‑функция. -source_arr— исходный массив для обработки.Array(T). -[, cond1_arr, ... , condN_arr]— необязательные N массивов условий, передающих дополнительные аргументы в lambda‑функцию.Array(T).
Возвращаемое значение
Возвращает индекс первого элемента исходного массива, для которого func возвращает true, в противном случае возвращает 0 UInt32.
Примеры
Пример использования
Совпадений не найдено
arrayFirstOrNull
Введена в версии: v1.1
Возвращает первый элемент исходного массива, для которого func(x[, y1, y2, ... yN]) возвращает true, в противном случае — NULL.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— лямбда-функция, которая применяется к элементам исходного массива (x) и массивов-условий (y).Лямбда-функцияsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— необязательный параметр. N массивов-условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
Возвращаемое значение
Возвращает первый элемент исходного массива, для которого func возвращает истину, иначе возвращает 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.Lambda functionarr1 [, 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])— лямбда-функция, применяемая к элементам исходного массива (x) и массивам условий (y). Lambda function. -source— исходный массив для обработки.Array(T). -[, cond1, ... , condN]— необязательный параметр. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.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 возвращает true, в противном случае возвращает 0 UInt32
Примеры
Пример использования
Совпадений не найдено
arrayLastOrNull
Добавлена в версии v1.1
Возвращает последний элемент исходного массива, для которого лямбда func(x [, y1, y2, ... yN]) возвращает true, в противном случае возвращает NULL.
Синтаксис
Аргументы
func(x [, y1, ..., yN])— лямбда-функция, которая обрабатывает элементы исходного массива (x) и массивов условий (y). Лямбда‑функция.
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])— lambda-функция, применяемая к элементам массиваarr.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— Необязательный параметр. Инициализирующее значение (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)
Возвращаемое значение
Возвращает массив Array(T), идентичный arr, но без его первого элемента.
Примеры
Пример использования
arrayProduct
Введена в версии: v21.1
Возвращает произведение элементов исходного массива.
Если указана лямбда-функция func, возвращает произведение элементов результатов выполнения этой лямбда-функции.
Синтаксис
Аргументы
func(x[, y1, ..., yN])— Необязательный параметр. Лямбда‑функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Lambda functionsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда‑функции.Array(T)
Возвращаемое значение
Возвращает произведение элементов исходного массива или произведение элементов, возвращённых лямбда‑функцией, если она указана. Float64
Примеры
Простой пример
Использование с функцией Lambda
arrayPushBack
Добавлена в версии: v1.1
Добавляет один элемент в конец массива.
Синтаксис
Аргументы
arr— массив, в конец которого нужно добавить значениеx.Array(T)x—- Отдельное значение, которое нужно добавить в конец массива.
Array(T).
- В массив с числами можно добавлять только числа, а в массив со строками — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных массива. - Может быть
NULL. Функция добавляет элементNULLв массив, а тип элементов массива преобразуется вNullable.
Для получения дополнительной информации о типах данных в ClickHouse см. раздел Data types.
Возвращаемое значение
Возвращает массив, идентичный arr, но с добавленным в конец массива значением x Array(T)
Примеры
Пример использования
arrayPushFront
Впервые появилась в версии: v1.1
Добавляет один элемент в начало массива.
Синтаксис
Аргументы
arr— Массив, к концу которого нужно добавить значениеx.Array(T). -x—- Одно значение, которое нужно добавить в начало массива.
Array(T).
- В массив с числами можно добавлять только числа, а в массив строк — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных массива. - Может быть
NULL. Функция добавляет элементNULLв массив, и тип элементов массива преобразуется вNullable.
Дополнительную информацию о типах данных в ClickHouse см. в разделе Типы данных.
Возвращаемое значение
Возвращает массив, идентичный 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, истинно положительные) × 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 должны содержать только часть всего набора данных, соответствующую некоторому интервалу значений оценок.
Набор данных должен быть разделён на смежные разбиения, где каждое разбиение содержит подмножество данных с оценками, попадающими в определённый диапазон.
Например:
- Одно разбиение может содержать все оценки в диапазоне [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 последовательно обрабатывает исходный массив от
последнего элемента к первому, вычисляя лямбда-условие в каждой позиции с
использованием элементов из исходного массива и массива условий. Когда условие
оказывается ложным на позиции 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).Лямбда-функцияsource_arr— исходный массив для обработки.Лямбда-функция[, 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/64. -default— необязательный параметр. Значение по умолчанию для новых элементов.
Возвращаемое значение
Массив, сдвинутый влево на указанное количество элементов 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 — это функция высшего порядка.
Синтаксис
Аргументы
f(y1[, y2 ... yN])— лямбда-функция, применяемая к элементам массиваx.arr— массив, который нужно отсортировать.Array(T)arr1, ..., yN— необязательные аргументы. N дополнительных массивов, еслиfпринимает несколько аргументов.
Возвращаемое значение
Возвращает массив arr, отсортированный по возрастанию, если лямбда-функция не задана, в противном случае
возвращает массив, отсортированный в соответствии с логикой, реализованной в переданной лямбда-функции. Array(T).
Примеры
Пример 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)
Возвращаемое значение
Возвращает сумму элементов исходного массива или сумму элементов, полученных в результате применения лямбда-функции, если она задана.
Примеры
Базовый пример
Использование с функцией Lambda
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элементов в массиве, произвольного типа.
Возвращаемое значение
Возвращает массив из N элементов со значением x. Array(T)
Примеры
Пример использования
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(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
Возвращает, содержит ли массив указанный элемент.
Синтаксис
Аргументы
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, если элементы множества и подмножества не имеют общего супертипа.
Примеры
Пустые массивы
Массивы, содержащие значения 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
Меняет порядок следования элементов во входном массиве или символов во входной строке на обратный.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает массив или строку, в которой элементы или символы расположены в обратном порядке.
Примеры
Массив в обратном порядке
Реверс строки
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.