Функции массивов
array
Представлено в: v1.1
Создает массив из аргументов функции.
Аргументы должны быть константами и иметь типы, которые имеют общий супертехнолог.
Должен быть передан как минимум один аргумент, поскольку в противном случае неясно, какой тип массива создать.
Это означает, что вы не можете использовать эту функцию для создания пустого массива. Для этого используйте функцию emptyArray*
.
Используйте оператор [ ]
для той же функциональности.
Синтаксис
Аргументы
x1
— Константное значение любого типа T. Если только этот аргумент предоставлен, массив будет типа T.[, x2, ..., xN]
— Дополнительные N константных значений, имеющих общий супертехнолог сx1
.
Возвращаемое значение
Возвращает массив, где 'T' — это наименьший общий тип из переданных аргументов. Array(T)
Примеры
Корректное использование
Некорректное использование
arrayAUCPR
Представлено в: v20.4
Вычисляет площадь под кривой точности-полноты (PR). Кривая точности-полноты создается путем отображения точности по оси Y и полноты по оси X при всех порогах. Полученное значение варьируется от 0 до 1, при этом более высокое значение указывает на лучшую производительность модели. PR AUC особенно полезен для несбалансированных наборов данных, предоставляя более четкое сравнение производительности по сравнению с ROC AUC в этих случаях. Для получения дополнительной информации, пожалуйста, обратитесь сюда, сюда и сюда.
Синтаксис
Аргументы
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 function
source_arr
— Исходный массив для обработки.Array(T)
cond1_arr, ...
— Необязательные. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
Возвращаемое значение
Возвращает 1
, если лямбда-функция возвращает true для всех элементов, 0
в противном случае. UInt8
Примеры
Все элементы совпадают
Не все элементы совпадают
arrayAvg
Представлено в: v21.1
Возвращает среднее значение элементов в исходном массиве.
Если указана лямбда-функция func
, возвращает среднее значение элементов результатов лямбды.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Необязательный. Лямбда-функция, которая работает с элементами источника массива (x
) и массивами условий (y
).Lambda function
source_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 function
arr1, ..., arrN
— N массивов.Array(T)
Возвращаемое значение
Возвращает количество элементов, для которых func
возвращает true. В противном случае возвращает количество ненулевых элементов в массиве. UInt32
Примеры
Пример использования
arrayCumSum
Представлено в: v1.1
Возвращает массив частичных (поточечных) сумм элементов в исходном массиве. Если указана лямбда-функция, сумма вычисляется путем применения лямбды к элементам массива на каждой позиции.
Синтаксис
Аргументы
func
— Необязательный. Лямбда-функция, применяемая к элементам массива на каждой позиции.Lambda function
arr1
— Исходный массив числовых значений.Array(T)
[arr2, ..., arrN]
— Необязательные. Дополнительные массивы того же размера, переданные в качестве аргументов лямбда-функции, если указана.Array(T)
Возвращаемое значение
Возвращает массив частичных сумм элементов в исходном массиве. Тип результата соответствует числовому типу входного массива. Array(T)
Примеры
Основное использование
С лямбдой
arrayCumSumNonNegative
Представлено в: v18.12
Возвращает массив частичных (поточечных) сумм элементов в исходном массиве, заменяя любые отрицательные поточные суммы на ноль. Если указана лямбда-функция, сумма вычисляется путем применения лямбды к элементам массива на каждой позиции.
Синтаксис
Аргументы
func
— Необязательный. Лямбда-функция, применяемая к элементам массива на каждой позиции.Lambda function
arr1
— Исходный массив числовых значений.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
Возвращает скалярное произведение двух массивов.
Размеры двух векторов должны быть равны. Массивы и кортежи также могут содержать смешанные типы элементов.
Синтаксис
Аргументы
v1
— Первый вектор.Array((U)Int* | Float* | Decimal)
илиTuple((U)Int* | Float* | Decimal)
v2
— Второй вектор.Array((U)Int* | Float* | Decimal)
илиTuple((U)Int* | Float* | Decimal)
Возвращаемое значение
Скалярное произведение двух векторов.
Тип возвращаемого значения определяется типом аргументов. Если массивы или кортежи содержат смешанные типы элементов, то тип результата является супертехнологом.
(U)Int*
или Float*
или Decimal
Примеры
Пример массива
Пример кортежа
arrayElement
Представлено в: v1.1
Получает элемент предоставленного массива с индексом n
, где n
может быть любого типа целого числа.
Если индекс выходит за пределы массива, возвращается значение по умолчанию (0 для чисел, пустая строка для строк и т.д.),
за исключением аргументов непостоянного массива и постоянного индекса 0. В этом случае будет ошибка Индексы массива начинаются с 1
.
Массивы в 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)
Примеры
основной
с_nulls1
с_nulls2
строки
arrayExists
Представлено в: v1.1
Возвращает 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)
Возвращаемое значение
Возвращает 1
, если лямбда-функция возвращает true для хотя бы одного элемента, 0
в противном случае. UInt8
Примеры
Пример использования
arrayFill
Представлено в: v20.1
Функция arrayFill
последовательно обрабатывает исходный массив с первого элемента
до последнего, оценивая условие лямбды на каждой позиции с использованием элементов из
исходного и условных массивов. Когда лямбда-функция оценивается как ложная на
позиции i, функция заменяет этот элемент на элемент на позиции i-1
из текущего состояния массива. Первый элемент всегда сохраняется
независимо от условий.
Синтаксис
Аргументы
func(x [, y1, ..., yN])
— Лямбда-функцияfunc(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])
, которая работает с элементами исходного массива (x
) и условными массивами (y
).Lambda function
source_arr
— Исходный массив для обработки.Lambda function
[, cond1_arr, ... , condN_arr]
— Необязательные. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
Возвращаемое значение
Возвращает массив Array(T)
Примеры
Пример с одним массивом
Пример с двумя массивами
arrayFilter
Представлено в: v1.1
Возвращает массив, содержащий только элементы исходного массива, для которых возвращает true лямбда-функция.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Лямбда-функция, которая работает с элементами исходного массива (x
) и массивами условий (y
).Lambda function
source_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
). Лямбда-функция.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
). Лямбда-функция.source_arr
— Исходный массив для обработки.Array(T)
.[, cond1_arr, ... , condN_arr]
— Необязательные. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
.
Возвращаемое значение
Возвращает индекс первого элемента исходного массива, для которого func
истинен, в противном случае возвращает 0
UInt32
Примеры
Пример использования
Нет совпадения
arrayFirstOrNull
Представлено в: 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)
Возвращаемое значение
Возвращает первый элемент исходного массива, для которого func
истинен, иначе возвращает NULL
.
Примеры
Пример использования
Нет совпадения
arrayFlatten
Представлено в: v20.1
Преобразует многомерный массив в плоский массив.
Функция:
- Применяется к массивам вложенной глубины.
- Не изменяет массивы, которые уже плоские.
Плоский массив содержит все элементы из всех исходных массивов.
Синтаксис
Аргументы
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 function
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])
— Лямбда-функция, которая работает с элементами исходного массива (x
) и условными массивами (y
). Лямбда-функция.source
— Исходный массив для обработки.Array(T)
.[, cond1, ... , condN]
— Необязательно. N условных массивов, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
.
Возвращаемое значение
Возвращает последний элемент исходного массива, для которого func
истинно, в противном случае возвращает значение по умолчанию для T
.
Примеры
Пример использования
Нет совпадения
arrayLastIndex
Введено в: v1.1
Возвращает индекс последнего элемента в исходном массиве, для которого func(x[, y1, y2, ... yN])
возвращает true, в противном случае возвращает '0'.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Лямбда-функция, которая работает с элементами исходного массива (x
) и условными массивами (y
).Лямбда-функция
source_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
). Лямбда-функция.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
).Лямбда-функция
.arr
— N массивов для обработки.Array(T)
.
Возвращаемое значение
Возвращает массив из результатов лямбды Array(T)
.
Примеры
Пример использования
Создание кортежа элементов из различных массивов
arrayMax
Введено в: v21.1
Возвращает максимальный элемент в исходном массиве.
Если указана лямбда-функция func
, возвращает максимальный элемент результатов лямбды.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Необязательно. Лямбда-функция, которая работает с элементами исходного массива (x
) и условными массивами (y
).Лямбда-функция
.source_arr
— Исходный массив для обработки.Array(T)
.[, cond1_arr, ... , condN_arr]
— Необязательно. N условных массивов, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
.
Возвращаемое значение
Возвращает максимальный элемент в исходном массиве, или максимальный элемент результатов лямбды, если предоставлена.
Примеры
Основной пример
Использование с лямбда-функцией
arrayMin
Введено в: v21.1
Возвращает минимальный элемент в исходном массиве.
Если указана лямбда-функция func
, возвращает минимальный элемент результатов лямбды.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Необязательно. Лямбда-функция, которая работает с элементами исходного массива (x
) и условными массивами (y
).Лямбда-функция
.source_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
.Лямбда-функция
.arr
— Массив, который нужно отсортировать.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]
, в неопределенном порядке. Значение ограничения должно находиться в диапазоне [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
.Лямбда-функция
.arr
— Массив, который нужно отсортировать.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
, но без последнего элемента arr
Array(T)
.
Примеры
Пример использования
arrayPopFront
Введено в: v1.1
Удаляет первый элемент из массива.
Синтаксис
Аргументы
arr
— Массив, из которого нужно удалить первый элемент.Array(T)
.
Возвращаемое значение
Возвращает массив, идентичный arr
, но без первого элемента arr
Array(T)
.
Примеры
Пример использования
arrayProduct
Введено в: v21.1
Возвращает произведение элементов в исходном массиве.
Если указана лямбда-функция func
, возвращает произведение элементов результатов лямбды.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Необязательно. Лямбда-функция, которая работает с элементами исходного массива (x
) и условными массивами (y
).Лямбда-функция
.source_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 смотрите Типы данных.
Возвращаемое значение
Возвращает массив, идентичный arr
, но с дополнительным значением x
в начале массива Array(T)
.
Примеры
Пример использования
arrayROCAUC
Введено в: v20.4
Вычисляет площадь под кривой характеристики оператора приемника (ROC). ROC-кривая создаётся путём построения доли истинных положительных (TPR) на оси y и доли ложных положительных (FPR) на оси x по всем порогам. Полученное значение варьируется от нуля до единицы, при этом более высокое значение указывает на лучшую производительность модели.
ROC AUC (также известная просто как AUC) — это концепция в машинном обучении. Для получения дополнительной информации смотрите здесь, здесь и здесь.
Синтаксис
Аргументы
scores
— Оценки, которые предсказательная модель выдает.Array((U)Int*)
илиArray(Float*)
.labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца.Array((U)Int*)
илиEnum
.scale
— Необязательно. Определяет, возвращать ли нормализованную площадь. Если false, возвращает площадь под кривой TP (истинные положительные) x FP (ложные положительные). Значение по умолчанию: true.Bool
.partial_offsets
—- Массив из четырёх неотрицательных целых чисел для вычисления частичной площади под кривой ROC (эквивалентно вертикальной полосе в пространстве ROC), вместо всей AUC. Этот параметр полезен для распределённого вычисления ROC AUC. Массив должен содержать следующие элементы [
higher_partitions_tp
,higher_partitions_fp
,total_positives
,total_negatives
]. Array неотрицательных целых чисел. Необязательно.higher_partitions_tp
: Количество положительных меток в разделах с более высоким рейтингом.higher_partitions_fp
: Количество отрицательных меток в разделах с более высоким рейтингом.total_positives
: Общее количество положительных образцов в полном наборе данных.total_negatives
: Общее количество отрицательных образцов в полном наборе данных.
- Массив из четырёх неотрицательных целых чисел для вычисления частичной площади под кривой ROC (эквивалентно вертикальной полосе в пространстве ROC), вместо всей AUC. Этот параметр полезен для распределённого вычисления ROC AUC. Массив должен содержать следующие элементы [
При использовании arr_partial_offsets
, arr_scores
и arr_labels
должны быть лишь частью полного набора данных, содержащей интервал оценок. Набор данных должен быть разделён на смежные разделы, где каждый раздел содержит подмножество данных, оценки которых попадают в определённый диапазон.
Например:
- Один раздел может содержать все оценки в диапазоне [0, 0.5).
- Другой раздел может содержать оценки в диапазоне [0.5, 1.0].
Возвращаемое значение
Возвращает площадь под кривой характеристик оператора приемника (ROC). Float64
.
Примеры
Пример использования
arrayRandomSample
Введено в: v23.10
Возвращает подмножество с samples
-м количеством случайных элементов из входного массива. Если samples
превышает размер входного массива, размер выборки ограничивается размером массива, т.е. все элементы массива возвращаются, но их порядок не гарантируется. Функция может обрабатывать как плоские массивы, так и вложенные массивы.
Синтаксис
Аргументы
arr
— Входной массив или многомерный массив, из которого нужно взять элементы.Array(T)
.samples
— Количество элементов, которые нужно включить в случайную выборку.(U)Int*
.
Возвращаемое значение
Массив, содержащий случайную выборку элементов из входного массива Array(T)
.
Примеры
Пример использования
Использование многомерного массива
arrayReduce
Введено в: v1.1
Применяет агрегатную функцию к элементам массива и возвращает её результат. Название агрегатной функции передаётся как строка в одинарных кавычках 'max'
, 'sum'
. При использовании параметрических агрегатных функций параметр указывается после имени функции в скобках 'uniqUpTo(6)'
.
Синтаксис
Аргументы
agg_f
— Название агрегатной функции, которая должна быть константой.String
.arr1 [, arr2, ... , arrN)]
— N массивов, соответствующих аргументамagg_f
.Array(T)
.
Возвращаемое значение
Возвращает результат агрегатной функции.
Примеры
Пример использования
Пример с агрегатной функцией, использующей несколько аргументов
Пример с параметрической агрегатной функцией
arrayReduceInRanges
Введено в: v20.4
Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив, содержащий результат, соответствующий каждому диапазону. Функция вернёт тот же результат, что и несколько arrayReduce(agg_func, arraySlice(arr1, index, length), ...)
.
Синтаксис
Аргументы
agg_f
— Название агрегатной функции, которую следует использовать.String
.ranges
— Диапазон, по которому будет производиться агрегация. Массив кортежей,(i, r)
, содержащих индексi
, с которого начинать, и диапазонr
для агрегации.Array(T)
илиTuple(T)
.arr1 [, arr2, ... ,arrN)]
— N массивов в качестве аргументов для агрегатной функции.Array(T)
.
Возвращаемое значение
Возвращает массив, содержащий результаты агрегатной функции по указанным диапазонам Array(T)
.
Примеры
Пример использования
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
).Лямбда-функция
.source_arr
— Исходный массив для обработки.Array(T)
.[, cond1_arr, ... , condN_arr]
— Необязательно. N условных массивов, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
.
Возвращаемое значение
Возвращает массив, элементы которого исходного массива заменены результатами лямбды. Array(T)
.
Примеры
Пример с одним массивом
Пример с двумя массивами
arrayReverseSort
Введено в: v1.1
Сортирует элементы массива в порядке убывания. Если указана функция f
, переданный массив сортируется в соответствии с результатом функции, применённой к элементам массива, после чего отсортированный массив обращается. Если f
принимает несколько аргументов, функции arrayReverseSort
передаётся несколько массивов, которые будут соответствовать аргументам func
.
Если массив для сортировки содержит -Inf
, NULL
, NaN
или Inf
, они будут отсортированы в следующем порядке:
-Inf
Inf
NaN
NULL
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/64
default
— Опционально. Значение по умолчанию для новых элементов.
Возвращаемое значение
Массив, сдвинутый вправо на указанное количество элементов Array(T)
Примеры
Пример использования
Отрицательное значение n
Использование значения по умолчанию
arrayShingles
Представлено в: v24.1
Генерирует массив шинглов (аналогично ngrams для строк), т.е. последовательные подмассивы с заданной длиной входного массива.
Синтаксис
Аргументы
Возвращаемое значение
Массив сгенерированных шинглов Array(T)
Примеры
Пример использования
arrayShuffle
Представлено в: v23.2
Возвращает массив того же размера, что и оригинальный, содержащий элементы в перемешанном порядке. Элементы перераспределены так, что каждая возможная перестановка этих элементов имеет равную вероятность появления.
Эта функция не будет материализовать константы.
Синтаксис
Аргументы
arr
— Массив для перемешивания.Array(T)
seed (optional)
— Опционально. Начальное значение для генерации случайных чисел. Если не указано, используется случайное.(U)Int*
Возвращаемое значение
Массив с перемешанными элементами Array(T)
Примеры
Пример без начального значения (нестабильные результаты)
Пример без начального значения (стабильные результаты)
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
, они будут отсортированы в следующем порядке:
-Inf
Inf
NaN
NULL
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
).Лямбда-функция.source_arr
— Исходный массив, который нужно разделитьArray(T)
.[, cond1_arr, ... , condN_arr]
— Опционально. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции.Array(T)
.
Возвращаемое значение
Возвращает массив массивов Array(Array(T))
Примеры
Пример использования
arraySum
Представлено в: v21.1
Возвращает сумму элементов в исходном массиве.
Если задана лямбда-функция func
, возвращает сумму результатов по элементам лямбды.
Синтаксис
Аргументы
func(x[, y1, ..., yN])
— Опционально. Лямбда-функция, которая работает с элементами исходного массива (x
) и массивами условий (y
).Лямбда-функция
source_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
элементов в массиве, любого типа.
Возвращаемое значение
Возвращает массив с 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;
.
Функция также работает для строк или UUID.
Синтаксис
Аргументы
arr
— Входной массив.Array(T)
Возвращаемое значение
Возвращает 1
для пустого массива или 0
для непустого массива UInt8
Примеры
Пример использования
emptyArrayDate
Представлено в: v1.1
Возвращает пустой массив дат.
Синтаксис
Аргументы
- Нет. Возвращаемое значение
Пустой массив дат. 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
Возвращает пустой массив строк.
Синтаксис
Аргументы
- Нет. Возвращаемое значение
Пустой массив строк. 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 значения
Массивы, содержащие значения другого типа
Массивы, содержащие строковые значения
Массивы без общего типа
Массив массивов
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
Проверяет, появляются ли все элементы массива2 в массиве1 в том же точном порядке. Таким образом, функция вернет 1
, если и только если массив1 = префикс + массив2 + суффикс.
Иными словами, функции проверят, содержатся ли все элементы массива2 в массиве1, как функция hasAll
. В дополнение к этому проверяется, что элементы наблюдаются в том же порядке в обоих массиве1 и массиве2.
- Функция вернет
1
, если массив2 пустой. 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
Вычисляет длину строки или массива.
- Для строковых или фиксированных строковых аргументов: вычисляет количество байтов в строке.
- Для аргументов массива: вычисляет количество элементов в массиве.
- Если применяется к аргументу фиксированной строки, функция является константным выражением.
Обратите внимание, что количество байтов в строке не равно количеству Unicode "кодовых точек" и не равно количеству Unicode "графемных кластеров" (то, что мы обычно называем "символами") и не равно видимой ширине строки.
Разрешено наличие ASCII NULL байтов в строках, и они также будут учитываться.
Синтаксис
Аргументы
x
— Значение, для которого нужно вычислить количество байтов (для String/FixedString) или элементов (для Array).String
илиFixedString
илиArray(T)
Возвращаемое значение
Возвращает количество байтов в строке/фиксированной строке x
/ количество элементов в массиве x
UInt64
Примеры
Пример строки
Пример массива
Пример 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
.
Функция также работает для строк или 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
Обращает порядок элементов в исходном массиве или символов в строке.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает массив или строку с обращённым порядком элементов или символов.
Примеры
Обратить массив
Обратить строку
Distance functions
Все поддерживаемые функции описаны в документации по функциям расстояния.