array
Добавленный в: v1.1.0 Создаёт массив из аргументов функции. Аргументы должны быть константами и иметь типы с общим супертипом. Нужно передать как минимум один аргумент, иначе будет неясно, массив какого типа создавать. Это означает, что эту функцию нельзя использовать для создания пустого массива. Для этого используйте функциюemptyArray*.
Для той же цели используйте оператор [ ].
Синтаксис
x1— Константное значение любого типа T. Если указан только этот аргумент, массив будет иметь тип T. -[, x2, ..., xN]— Дополнительные N константных значений с общим супертипом сx1
Array(T)
Примеры
Допустимое использование
Query
Response
Query
Response
arrayAUCPR
Добавленный в: v20.4.0 Вычисляет площадь под кривой точность-полнота (PR). Кривая точность-полнота строится путём откладывания точности по оси y и полноты по оси x для всех порогов. Итоговое значение лежит в диапазоне от 0 до 1, при этом более высокое значение указывает на лучшую производительность модели, если только оценка не равнаNaN, в этом случае результатом будет NaN.
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].
NaN, если какая-либо оценка равна NaN. Float64
Примеры
Пример использования
Query
Response
arrayAll
Добавленный в: v1.1.0 Возвращает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
Примеры
Все элементы удовлетворяют условию
Query
Response
Query
Response
arrayAutocorrelation
Добавленный в: v26.4.0 Вычисляет автокорреляцию массива. Если указанmax_lag, корреляция вычисляется только для лагов в диапазоне [0, max_lag).
Если max_lag не указан, она вычисляется для всех возможных лагов.
Синтаксис
arr— Массив чисел.Array(T)max_lag— Необязательный параметр. Максимальное число вычисляемых лагов. Должен быть неотрицательным целым числом.Integer
Array(Float64)
Примеры
Линейный
Query
Response
Query
Response
Query
Response
Query
Response
arrayAvg
Добавленный в: v21.1.0 Возвращает среднее значение элементов исходного массива. Если указана лямбда-функцияfunc, возвращает среднее значение результатов лямбда-функции.
Синтаксис
func(x[, y1, ..., yN])— Необязательно. Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию.Array(T)
Float64
Примеры
Базовый пример
Query
Response
Query
Response
arrayBottomK
Добавленный в: v26.6.0 Возвращает массив из K наименьших элементов входного массива, отсортированных по возрастанию. Если указана лямбда-функцияf, элементы сравниваются по результату применения f к каждому элементу.
Если f принимает несколько аргументов, в arrayBottomK передаются дополнительные массивы, а их элементы
соответствуют аргументам f.
Значения NULL пропускаются и не включаются в результат. Размер результата не превышает K
и может быть меньше, если входной массив содержит меньше не-NULL элементов, чем K.
Тип элементов результата — не-Nullable версия типа элементов входного массива.
arrayBottomK — это функция высшего порядка.
См. также:
arrayTopK, которая возвращает K наибольших элементов.arrayPartialSort, которая помещает те же K элементов в позиции[1..K], но также сохраняет остальные элементы в неопределённом порядке и не пропускает значенияNULL.
f(arr[, arr1, ... ,arrN])— Необязательно. Лямбда-функция для вычисления ключа сортировки для каждого элемента.Лямбда-функцияK— Число наименьших элементов, которые нужно вернуть.(U)Int8/16/32/64arr— Массив.Array(T)arr1, ... ,arrN— N дополнительных массивов, еслиfпринимает несколько аргументов.Array(T)
K элементов массива arr с наименьшими значениями (или наименьшими результатами лямбда-функции), отсортированных по возрастанию.
NULL пропускаются. Возвращаемый массив имеет тип элементов T, даже если входной массив имеет тип Nullable(T).
Примеры
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayCompact
Добавленный в: v20.1.0 Удаляет из массива подряд идущие повторяющиеся элементы, включая значенияnull. Порядок значений в результирующем массиве определяется порядком элементов в исходном массиве.
Синтаксис
arr— Массив, из которого удаляются дубликаты.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayConcat
Добавленный в: v1.1.0 Объединяет массивы, переданные в качестве аргументов. Синтаксисarr1 [, arr2, ... , arrN]— N массивов, которые нужно объединить.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayCount
Добавленный в: v1.1.0 Возвращает количество элементов, для которыхfunc(arr1[i], ..., arrN[i]) возвращает true.
Если func не указана, возвращает количество ненулевых элементов в массиве.
arrayCount — это функция высшего порядка.
Синтаксис
func— Необязательный. Функция, применяемая к каждому элементу массива (массивов).Лямбда-функцияarr1, ..., arrN— N массивов.Array(T)
func возвращает true. В противном случае возвращает количество ненулевых элементов в массиве. UInt32
Примеры
Пример использования
Query
Response
arrayCumSum
Добавленный в: v1.1.0 Возвращает массив частичных (накопленных) сумм элементов исходного массива. Если указана лямбда-функция, сумма вычисляется путем применения лямбда-функции к элементам массива на каждой позиции. Синтаксисfunc— Необязательно. Лямбда-функция, применяемая к элементам массива на каждой позиции.Лямбда-функцияarr1— Исходный массив числовых значений.Array(T)[arr2, ..., arrN]— Необязательно. Дополнительные массивы того же размера, передаваемые в качестве аргументов лямбда-функции, если она указана.Array(T)
Array(T)
Примеры
Базовое использование
Query
Response
Query
Response
arrayCumSumNonNegative
Добавленный в: v18.12.0 Возвращает массив частичных (накопительных) сумм элементов исходного массива, заменяя любую отрицательную накопленную сумму на ноль. Если указана лямбда-функция, сумма вычисляется путем применения этой функции к элементам массива для каждой позиции. Синтаксисfunc— Необязательно. Лямбда-функция, применяемая к элементам массива в каждой позиции.Лямбда-функцияarr1— Исходный массив числовых значений.Array(T)[arr2, ..., arrN]— Необязательно. Дополнительные массивы того же размера, передаваемые в лямбда-функцию в качестве аргументов, если она указана.Array(T)
Array(T)
Примеры
Базовое использование
Query
Response
Query
Response
arrayDifference
Добавленный в: v1.1.0 Вычисляет массив разностей между соседними элементами массива. Первым элементом результирующего массива будет 0, вторым —arr[1] - arr[0], третьим — arr[2] - arr[1] и так далее.
Тип элементов результирующего массива определяется правилами вывода типов для вычитания (например, UInt8 - UInt8 = Int16).
Синтаксис
arr— массивArray, для которого вычисляются разности между соседними элементами.Array(T)
UInt*
Примеры
Пример использования
Query
Response
Query
Response
arrayDistinct
Добавленный в: v1.1.0 Возвращает массив, содержащий только уникальные элементы исходного массива. Синтаксисarr— Массив, из которого нужно извлечь уникальные элементы.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayDotProduct
Добавленный в: v23.5.0 Возвращает скалярное произведение двух массивов.Размеры двух векторов должны быть одинаковыми. Типы Array и Tuple также могут содержать элементы разных типов.
v1— Первый вектор.Array((U)Int* | Float* | BFloat16 | Decimal)илиTuple((U)Int* | Float* | Decimal)v2— Второй вектор.Array((U)Int* | Float* | BFloat16 | Decimal)илиTuple((U)Int* | Float* | Decimal)
Возвращаемый тип определяется типами аргументов. Если Array или Tuple содержат элементы разных типов, то тип результата — супертип.
Два массива
BFloat16 накапливаются и возвращают значение типа Float32 (то же правило, что и для двух массивов Float32).(U)Int* или Float* или Decimal
Примеры
Пример с Array
Query
Response
Query
Response
arrayElement
Добавленный в: v1.1.0 Возвращает элемент указанного массива с индексомn, где n может быть любым целочисленным типом.
Если индекс выходит за границы массива, возвращается значение по умолчанию (0 для чисел, пустая строка для строк и т. д.),
за исключением случаев, когда аргументом является неконстантный массив, а индекс 0 — константа. В этом случае возникнет ошибка Array indices are 1-based.
Если n является массивом целых чисел, возвращает массив элементов в указанных позициях (операция выборки).
Это эквивалентно arrayMap(i -> arr[i], n), но имеет отдельную, более эффективную реализацию.
Для позиций за границами массива возвращается значение по умолчанию, как и для скалярного индекса.
Элементы индекса могут быть nullable. Индекс NULL возвращает NULL (и делает тип элемента результата nullable), если тип элемента можно
обернуть в Nullable; для типов элементов, которые не могут находиться внутри Nullable (таких как Array, Map), индекс NULL вместо этого возвращает
значение по умолчанию. Это то же поведение, что и для скалярного индекса NULL.
Массивы в ClickHouse индексируются с 1.
arr[-1] — последний элемент массива.
Оператор [n] обеспечивает ту же функциональность.
Первым аргументом также может быть:
Map:m['key']возвращает значение, сохранённое дляkey, или значение по умолчанию типа значения, если ключ отсутствует.QBit:q[n]восстанавливаетn-й элемент вектора с полной точностью типа элемента QBit, при этом считываются только битовые плоскости группы stride, содержащей этот элемент.JSONилиNullable(JSON):json['key']возвращает значение, сохранённое по путиkey, который должен быть константной строкой, — точно так же, как и точечная нотацияjson.key. ДляNullable(JSON)результат подчиняется тем же правилам nullability, что иjson.key: путь, способный представлятьNULL(Dynamicили типизированный путь, который можно обернуть вNullable), даётNULLдля внешних строк со значениемNULL, тогда как ненуллируемый типизированный путь, такой какArrayилиMap, сохраняет там своё значение по умолчанию. Ключ также может быть константой типаNullable(String); ключNULLдаётNULL. Вложенный доступ можно объединять в цепочку:json['a']['b'].
arr— Значение, из которого извлекается элемент.Array(T),Map(K, V),QBit,JSONилиNullable(JSON). -n— Позиция элемента, который требуется получить, или массив позиций. Позиции могут быть Nullable.(U)Int*илиArray((U)Int*). Для аргументаMap— ключ типаK; для аргументаJSON— константный путь типаString.
n — скаляр, возвращает элемент типа T. Если n — массив, возвращает Array(Nullable(T)), если элементы индекса могут быть Nullable и T можно обернуть в Nullable, в противном случае — Array(T). Для Map возвращает значение типа V, для JSON — значение, сохранённое по указанному пути. Any или Array(T) или Array(Nullable(T))
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayElementOrNull
Добавленный в: v1.1.0 Возвращает элемент указанного массива по индексуn, где n может иметь любой целочисленный тип.
Если индекс выходит за границы массива, вместо значения по умолчанию возвращается NULL,
если тип результата может быть Nullable. Для типов элементов, которые ещё не являются Nullable и не могут быть
помещены внутрь Nullable (таких как Array, Map), вместо этого возвращается значение по умолчанию для типа элемента.
Если n является массивом целых чисел, возвращает массив элементов в указанных позициях.
Это эквивалентно arrayMap(i -> arrayElementOrNull(arr, i), n), но имеет отдельную, более эффективную реализацию.
Позиции за границами массива и индексы NULL дают значения NULL в результирующем массиве в соответствии с тем же правилом, что и для скалярного индекса.
Массивы в ClickHouse индексируются с 1.
arr[-1] — это последний элемент массива.
Первым аргументом также может быть Map: отсутствующий ключ даёт NULL вместо значения по умолчанию для типа значения, если этот тип можно обернуть в Nullable.
JSON здесь не поддерживается, используйте вместо этого arrayElement.
Синтаксис
arr— значение, из которого читается элемент.Array(T)илиMap(K, V). -n— позиция извлекаемого элемента или массив позиций. Позиции могут быть Nullable.(U)Int*илиArray((U)Int*). Для аргумента типаMap— ключ типаK.
n — скаляр, возвращает Nullable(T), если T можно обернуть в Nullable, в противном случае — T. Если n — массив, возвращает Array(Nullable(T)), если T можно обернуть в Nullable, в противном случае — Array(T). Для Map то же правило применяется к типу значения V. Any или Nullable(T) или Array(T) или Array(Nullable(T))
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayEnumerate
Добавленный в: v1.1.0 Возвращает массив[1, 2, 3, ..., length (arr)]
Эта функция обычно используется с оператором ARRAY JOIN. Она позволяет выполнять подсчёт
только один раз для каждого массива после применения ARRAY JOIN.
Эту функцию также можно использовать в функциях высшего порядка. Например, с её помощью можно получить индексы элементов массива, соответствующих условию.
Синтаксис
arr— массив, который нужно пронумеровать.Array
[1, 2, 3, ..., length (arr)]. Array(UInt32)
Примеры
Базовый пример с ARRAY JOIN
Query
Response
arrayEnumerateDense
Добавленный в: v18.12.0 Возвращает массив того же размера, что и исходный, показывая, где каждый элемент впервые встречается в исходном массиве. Синтаксисarr— Массив, который нужно пронумеровать.Array(T)
arr, указывающий позицию первого вхождения каждого элемента в исходном массиве Array(T)
Примеры
Пример использования
Query
Response
arrayEnumerateDenseRanked
Добавленный в: v20.1.0 Возвращает массив того же размера, что и исходный, указывая, где каждый элемент впервые встречается в исходном массиве. Позволяет выполнять нумерацию многомерного массива с возможностью указать, на какую глубину просматривать массив. Синтаксисclear_depth— Отдельно нумерует элементы на указанном уровне. Должен быть меньше или равенmax_arr_depth.UInt*arr— N-мерный массив, элементы которого нужно пронумеровать.Array(T)max_array_depth— Максимальная эффективная глубина. Должна быть меньше или равна глубинеarr.UInt*
Array
Примеры
Базовое использование
Query
Response
Query
Response
Query
Response
arrayEnumerateUniq
Добавленный в: v1.1.0 Возвращает массив того же размера, что и исходный, где для каждого элемента указана его позиция среди элементов с тем же значением. Эта функция полезна при использованииARRAY JOIN и агрегации элементов массива.
Функция может принимать в качестве аргументов несколько массивов одинакового размера. В этом случае уникальность определяется для кортежей элементов, находящихся на одинаковых позициях во всех массивах.
Синтаксис
arr1— Первый массив для обработки.Array(T)arr2, ...— Необязательно. Дополнительные массивы того же размера для обеспечения уникальности кортежей.Array(UInt32)
Array(T)
Примеры
Базовое использование
Query
Response
Query
Response
Query
Response
arrayEnumerateUniqRanked
Добавленный в: v20.1.0 Возвращает массив (или многомерный массив) той же размерности, что и исходный массив, где для каждого элемента указана его позиция среди элементов с тем же значением. Позволяет выполнять нумерацию многомерного массива с возможностью указать, на какую глубину просматривать массив. Синтаксисclear_depth— Отдельно нумерует элементы на указанном уровне. Положительное целое число, меньшее или равноеmax_arr_depth.UInt*arr— N-мерный массив, элементы которого нужно пронумеровать.Array(T)max_array_depth— Максимальная эффективная глубина. Положительное целое число, меньшее или равное глубинеarr.UInt*
arr, где каждый элемент показывает порядковый номер данного элемента среди других элементов с тем же значением. Array(T)
Примеры
Пример 1
Query
Response
Query
Response
Query
Response
Query
Response
arrayExcept
Добавленный в: v25.9.0 Возвращает массив, содержащий элементы изsource, которых нет в except, с сохранением исходного порядка.
Эта функция выполняет операцию разности множеств между двумя массивами. Для каждого элемента в source она проверяет, есть ли этот элемент в except (с использованием точного сравнения). Если нет, элемент включается в результат.
Операция сохраняет следующие свойства:
- Порядок элементов из
sourceсохраняется - Дубликаты в
sourceсохраняются, если их нет вexcept - NULL обрабатывается как отдельное значение
source— Исходный массив, содержащий элементы для фильтрации.Array(T)except— Массив, содержащий элементы, которые нужно исключить из результата.Array(T)
source, отсутствующие в except. Array(T)
Примеры
базовый
Query
Response
Query
Response
Query
Response
Query
Response
arrayExists
Добавленный в: v1.1.0 Возвращает1, если в исходном массиве есть хотя бы один элемент, для которого func(x[, y1, y2, ... yN]) возвращает истину. В противном случае возвращает 0.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, которые передают лямбда-функции дополнительные аргументы.Array(T)
1, если лямбда-функция возвращает true хотя бы для одного элемента, иначе — 0 UInt8
Примеры
Пример использования
Query
Response
arrayFill
Добавленный в: v20.1.0 ФункцияarrayFill последовательно обрабатывает исходный массив от первого элемента
до последнего, вычисляя лямбда-условие для каждой позиции с использованием элементов из
исходного массива и массивов условий. Если лямбда-функция возвращает false в
позиции i, функция заменяет этот элемент элементом из позиции i-1
в текущем состоянии массива. Первый элемент всегда сохраняется
независимо от условия.
Синтаксис
func(x [, y1, ..., yN])— лямбда-функцияfunc(x [, y1, y2, ... yN]), которая применяется к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— исходный массив для обработки.Лямбда-функция[, cond1_arr, ... , condN_arr]— Необязательно. N условных массивов, которые передают дополнительные аргументы в лямбда-функцию.Array(T)
Array(T)
Примеры
Пример с одним массивом
Query
Response
Query
Response
arrayFilter
Добавленный в: v1.1.0 Возвращает массив, содержащий только те элементы исходного массива, для которых лямбда-функция возвращает true. Синтаксисfunc(x[, y1, ..., yN])— лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Array(T)
Примеры
Пример 1
Query
Response
Query
Response
arrayFirst
Добавленный в: v1.1.0 Возвращает первый элемент исходного массива, для которогоfunc(x[, y1, y2, ... yN]) возвращает true; в противном случае возвращает значение по умолчанию.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y). Лямбда-функция. -source_arr— Исходный массив для обработки.Array(T). -[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.Array(T).
λ истинна; в противном случае возвращает значение по умолчанию для T.
Примеры
Пример использования
Query
Response
Query
Response
arrayFirstIndex
Добавленный в: v1.1.0 Возвращает индекс первого элемента в исходном массиве, для которого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 возвращает true, в противном случае возвращает 0 UInt32
Примеры
Пример использования
Query
Response
Query
Response
arrayFirstOrNull
Добавленный в: v1.1.0 Возвращает первый элемент исходного массива, для которого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 возвращает true; в противном случае возвращает NULL.
Примеры
Пример использования
Query
Response
Query
Response
arrayFlatten
Добавленный в: v20.1.0 Преобразует массив массивов в плоский массив. Функция:- Работает с вложенными массивами любой глубины.
- Не изменяет массивы, которые уже являются плоскими.
flatten
Аргументы
arr— Многомерный массив.Array(Array(T))
Array(T)
Примеры
Пример использования
Query
Response
arrayFlattenedLength
Добавленный в: v26.9.0 Возвращает общее количество элементов многомерного массива, как если бы он был развёрнут с помощью функцииarrayFlatten.
Функция:
- Применима к массивам с любой глубиной вложенности.
- Эквивалентна
lengthдля уже плоских массивов. - Учитывает только вложенность
Array. Элементы подсчитываются на первом уровне, не являющемся массивом, поэтому элементы вложенныхMap,Tuple,DynamicилиVariantне подсчитываются по отдельности, даже если они сами содержат массивы.
cardinality в PostgreSQL, тогда как в ClickHouse cardinality — псевдоним length и подсчитывает только элементы внешнего массива.
Синтаксис
arr— Массив, возможно многомерный.Array(T)
UInt64
Примеры
Вложенный массив
Query
Response
Query
Response
Query
Response
Query
Response
arrayFold
Добавленный в: v23.10.0 Применяет лямбда-функцию к одному или нескольким массивам одинаковой длины и накапливает результат в аккумуляторе. Синтаксисλ(x, x1 [, x2, x3, ... xN])— Лямбда-функцияλ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN]), гдеF— операция, применяемая кaccи значениям массиваx, а затем результат снова используется какacc.Лямбда-функцияarr1 [, arr2, arr3, ... arrN]— N массивов, над которыми выполняется операция.Array(T)acc— Значение аккумулятора того же типа, что и возвращаемое значение лямбда-функции.
acc.
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
arrayIntersect
Добавленный в: v1.1.0 Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения. СинтаксисarrN— N массивов, из которых составляется новый массив.Array(T).
Array(T)
Примеры
Пример использования
Query
Response
arrayJaccardIndex
Добавленный в: v23.7.0 Возвращает индекс Жаккара двух массивов. Синтаксисarr_x и arr_y Float64
Примеры
Пример использования
Query
Response
arrayJoin
Добавленный в: v1.1.0 ФункцияarrayJoin принимает строку, содержащую массив, и разворачивает его, создавая несколько строк — по одной для каждого элемента массива.
Это отличается от обычных функций в ClickHouse, которые сопоставляют входные значения выходным в пределах одной и той же строки,
и агрегатных функций, которые берут группу строк и “сжимают” или “сводят” их в одну итоговую строку
(или в одно значение в итоговой строке, если используются с GROUP BY).
Все значения в столбцах просто копируются, за исключением значений в столбце, к которому применяется эта функция;
они заменяются соответствующим значением массива.
unnest (начиная с версии 26.5) — регистронезависимый псевдоним arrayJoin в форме вызова функции (SELECT unnest(arr)). Синтаксис PostgreSQL с источником-таблицей не поддерживается (FROM unnest(...), CROSS JOIN UNNEST(...) и LATERAL). Для таких запросов используйте предложение ARRAY JOIN.
arrayJoin, в том числе через его псевдоним unnest, нельзя использовать в условии JOIN ON, которое вычисляется во время выполнения JOIN, поскольку такое условие должно
сохранять количество строк. Условие, применимое только к одной стороне, а также ключ равенства с arrayJoin
извлекаются до JOIN и не затрагиваются. Условие ALL INNER JOIN без дизъюнкции также не затрагивается,
поскольку в этом случае условие применяется уже после JOIN.
Если разворачивание зависит только от одной стороны, перенесите его в ARRAY JOIN в подзапросе до JOIN; условие, аргумент arrayJoin которого обращается к столбцам с обеих сторон, необходимо реструктурировать.
Эта функция недетерминирована: она может возвращать разные результаты для одних и тех же аргументов.
unnest
Аргументы
arr— Массив, который нужно развернуть.Array(T)
arr.
Примеры
Базовое использование
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayLast
Добавленный в: v1.1.0 Возвращает последний элемент исходного массива, для которого лямбдаfunc(x [, y1, y2, ... yN]) возвращает true; в противном случае возвращает значение по умолчанию.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y). Лямбда-функция. -source— Исходный массив, который нужно обработать.Array(T). -[, cond1, ... , condN]— Необязательно. N массивов условий, передающих лямбда-функции дополнительные аргументы.Array(T).
func возвращает true; в противном случае возвращает значение по умолчанию для T.
Примеры
Пример использования
Query
Response
Query
Response
arrayLastIndex
Добавленный в: v1.1.0 Возвращает индекс последнего элемента в исходном массиве, для которого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 возвращает true; в противном случае возвращает 0 UInt32
Примеры
Пример использования
Query
Response
Query
Response
arrayLastOrNull
Добавленный в: v1.1.0 Возвращает последний элемент исходного массива, для которого лямбда-функция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.
Примеры
Пример использования
Query
Response
Query
Response
arrayLevenshteinDistance
Добавленный в: v25.4.0 Вычисляет расстояние Левенштейна между двумя массивами. СинтаксисFloat64
Примеры
Пример использования
Query
Response
arrayLevenshteinDistanceWeighted
Добавленный в: v25.4.0 Вычисляет расстояние Левенштейна между двумя массивами с пользовательскими весами для каждого элемента. Количество элементов в массиве и количество соответствующих весов должны совпадать. Синтаксисfrom— первый массив.Array(T). -to— второй массив.Array(T). -from_weights— веса первого массива.Array((U)Int*|Float*)to_weights— веса второго массива.Array((U)Int*|Float*)
Float64
Примеры
Пример использования
Query
Response
arrayMap
Добавленный в: v1.1.0 Возвращает массив, полученный из исходных массивов путём применения лямбда-функции к каждому элементу. Синтаксисfunc— Лямбда-функция, которая применяется к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияarr— N массивов для обработки.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
arrayMax
Добавленный в: v21.1.0 Возвращает максимальный элемент исходного массива. Если указана лямбда-функцияfunc, возвращает максимальный элемент среди результатов лямбда-функции.
Синтаксис
func(x[, y1, ..., yN])— Необязательно. Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Query
Response
Query
Response
arrayMin
Добавленный в: v21.1.0 Возвращает минимальный элемент исходного массива. Если указана лямбда-функцияfunc, возвращает минимальный элемент среди результатов её выполнения.
Синтаксис
func(x[, y1, ..., yN])— Необязательно. Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)cond1_arr, ...— Необязательно. N массивов условий, передающих в лямбда-функцию дополнительные аргументы.Array(T)
Query
Response
Query
Response
arrayNormalizedGini
Добавленный в: v25.1.0 Вычисляет нормализованный коэффициент Джини. СинтаксисTuple(Float64, Float64, Float64)
Примеры
Пример использования
Query
Response
arrayPartialReverseSort
Добавленный в: v23.2.0 Эта функция аналогичнаarrayReverseSort, но с дополнительным аргументом limit, который позволяет выполнять частичную сортировку.
Эта функция является недетерминированной: она может возвращать разные результаты для одних и тех же аргументов.
f(arr[, arr1, ... ,arrN])— Лямбда-функция, применяемая к элементам массиваarr.Лямбда-функцияlimit— Значение индекса, до которого выполняется сортировка.(U)Int*arr— Массив для сортировки.Array(T)arr1, ... ,arrN— N дополнительных массивов, еслиfпринимает несколько аргументов.Array(T)
[1..limit] отсортированы
в порядке убывания. Остальные элементы (limit..N] находятся в неопределённом порядке.
Примеры
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialShuffle
Добавленный в: v23.2.0 Возвращает массив того же размера, что и исходный, где элементы в диапазоне[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
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialSort
Добавленный в: v23.2.0 Эта функция аналогичнаarraySort, но с дополнительным аргументом limit, который позволяет выполнять частичную сортировку.
Эта функция является недетерминированной: она может возвращать разные результаты для одних и тех же аргументов.
f(arr[, arr1, ... ,arrN])— Лямбда-функция, применяемая к элементам массиваx.Лямбда-функцияlimit— Значение индекса, до которого будет выполняться сортировка.(U)Int*arr— Массив, который нужно отсортировать.Array(T)arr1, ... ,arrN— N дополнительных массивов, еслиfпринимает несколько аргументов.Array(T)
[1..limit] отсортированы
по возрастанию. Остальные элементы (limit..N] находятся в неопределённом порядке.
Примеры
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPopBack
Добавленный в: v1.1.0 Удаляет последний элемент массива. Синтаксисarr— Массив, из которого нужно удалить последний элемент.Array(T)
arr, но без его последнего элемента Array(T)
Примеры
Пример использования
Query
Response
arrayPopFront
Добавленный в: v1.1.0 Удаляет первый элемент массива. Синтаксисarr— массив, из которого нужно удалить первый элемент.Array(T)
arr, но без его первого элемента Array(T)
Примеры
Пример использования
Query
Response
arrayProduct
Добавленный в: v21.1.0 Возвращает произведение элементов исходного массива. Если указана лямбда-функцияfunc, возвращает произведение результатов лямбда-функции для элементов массива.
Синтаксис
func(x[, y1, ..., yN])— Необязательно. Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Float64
Примеры
Базовый пример
Query
Response
Query
Response
arrayPushBack
Добавленный в: v1.1.0 Добавляет один элемент в конец массива. Синтаксисarr— Массив, в конец которого добавляется значениеx.Array(T)x—- Одно значение, добавляемое в конец массива.
Array(T).
- В массив чисел можно добавлять только числа, а в массив строк — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных массива. - Может быть
NULL. Функция добавляет в массив элементNULL, а тип элементов массива преобразуется вNullable.
arr, но с дополнительным значением x в конце Array(T)
Примеры
Пример использования
Query
Response
arrayPushFront
Добавленный в: v1.1.0 Добавляет один элемент в начало массива. Синтаксисarr— Массив, в конец которого добавляется значениеx.Array(T). -x—- Одно значение, добавляемое в начало массива.
Array(T).
- В массив чисел можно добавлять только числа, а в массив строк — только строки.
- При добавлении чисел ClickHouse автоматически приводит тип
xк типу данных массива. - Может быть
NULL. Функция добавляет в массив элементNULL, а тип элементов массива преобразуется вNullable.
arr, но с дополнительным значением x в начале массива Array(T)
Примеры
Пример использования
Query
Response
arrayROCAUC
Добавленный в: v20.4.0 Вычисляет площадь под ROC-кривой (receiver operating characteristic). ROC-кривая строится путём откладывания True Positive Rate (TPR) по оси y и False Positive Rate (FPR) по оси x для всех порогов. При значенииscale, равном true, которое используется по умолчанию, итоговое значение находится в диапазоне от нуля до единицы; чем оно выше, тем лучше качество модели, а результат равен NaN, когда ROC AUC не определена, например если нет положительных или отрицательных меток.
Оценка NaN всегда даёт результат NaN.
ROC AUC (также известная просто как AUC) — это понятие из области машинного обучения.
Подробнее см. здесь, здесь и здесь.
Синтаксис
arrayAUC
Аргументы
scores— Оценки, которые выдаёт модель.Array((U)Int*)илиArray(Float*)labels— Метки объектов, обычно 1 для положительного примера и 0 для отрицательного.Array((U)Int*)илиEnumscale— Необязательно. Определяет, нужно ли возвращать нормализованную площадь. Если false, вместо этого возвращается площадь под кривой TP (true positives) x FP (false positives). Значение по умолчанию: true.Boolpartial_offsets—- Массив из четырёх неотрицательных целых чисел для вычисления частичной площади под ROC-кривой (эквивалентной вертикальной полосе в пространстве ROC) вместо полного AUC. Эта опция полезна для распределённого вычисления ROC AUC. Массив должен содержать следующие элементы [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]. Array из неотрицательных Integers. Необязательно.higher_partitions_tp: Количество положительных меток в партициях с более высокими оценками.higher_partitions_fp: Количество отрицательных меток в партициях с более высокими оценками.total_positives: Общее количество положительных примеров во всём наборе данных.total_negatives: Общее количество отрицательных примеров во всём наборе данных.
Когда используется
arr_partial_offsets, arr_scores и arr_labels должны представлять только одну партицию всего набора данных, содержащую некоторый диапазон оценок.
Набор данных следует разделить на непрерывные партиции, где каждая партиция содержит подмножество данных, оценки которых попадают в определённый диапазон.
Например:- Одна партиция может содержать все оценки в диапазоне [0, 0.5).
- Другая партиция может содержать оценки в диапазоне [0.5, 1.0].
NaN, если какая-либо оценка равна NaN, а также, когда scale равно true, если ROC AUC не определена из-за отсутствия положительных или отрицательных меток. Float64
Примеры
Пример использования
Query
Response
arrayRandomSample
Добавленный в: v23.10.0 Возвращает подмножество изsamples случайно выбранных элементов входного массива. Если samples превышает размер входного массива, размер выборки ограничивается размером массива, то есть возвращаются все элементы массива, но их порядок не гарантируется. Функция поддерживает как плоские, так и вложенные массивы.
Эта функция недетерминирована: она может возвращать разные результаты для одних и тех же аргументов.
arr— Входной массив или многомерный массив, из которого производится выборка элементов.Array(T)samples— Количество элементов, которые нужно включить в случайную выборку.(U)Int*
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
arrayReduce
Добавленный в: v1.1.0 Применяет агрегатную функцию к элементам массива и возвращает результат. Имя агрегатной функции передаётся в виде строки в одинарных кавычках:'max', 'sum'.
При использовании параметрических агрегатных функций параметр указывается после имени функции в круглых скобках: 'uniqUpTo(6)'.
Синтаксис
agg_f— имя агрегатной функции; должно быть константой.Stringarr1[, arr2, ... , arrN]— N массивов, соответствующих аргументамagg_f.Array(T)
Query
Response
Query
Response
Query
Response
arrayReduceInRanges
Добавленный в: v20.4.0 Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив с результатом для каждого диапазона. Функция вернёт тот же результат, что и несколько вызовов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)
Примеры
Пример использования
Query
Response
arrayRemove
Добавленный в: v25.11.0 Удаляет из массива все элементы, равные указанному значению. NULL считается равным NULL. Синтаксисarray_remove
Аргументы
arr— Array(T) -elem— T
Array(T)
Примеры
Пример 1
Query
Response
Query
Response
arrayResize
Добавлено в: v1.1.0 Изменяет длину массива. Синтаксисarr— Массив, размер которого нужно изменить.Array(T)size— -Новая длина массива. Еслиsizeменьше исходного размера массива, массив обрезается справа. Еслиsizeбольше исходного размера массива, массив расширяется вправо значениямиextenderили значениями по умолчанию для типа данных элементов массива.extender— Значение, используемое для расширения массива. Может бытьNULL.
size. Array(T)
Примеры
Пример 1
Query
Response
Query
Response
arrayReverse
Добавленный в: v1.1.0 Изменяет порядок элементов заданного массива на обратный.Функция
reverse(arr) выполняет ту же операцию, но работает и с другими типами данных
помимо массивов.arr— Массив, который нужно развернуть.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayReverseFill
Добавленный в: v20.1.0 ФункцияarrayReverseFill последовательно обрабатывает исходный массив от последнего
элемента к первому, вычисляя в каждой позиции лямбда-условие с использованием элементов
из исходного массива и массивов условий. Если в позиции i условие принимает значение false,
функция заменяет этот элемент элементом из позиции i+1
в текущем состоянии массива. Последний элемент всегда сохраняется
независимо от условия.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, применяемая к элементам исходного массива (x) и условных массивов (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T)[, cond1_arr, ... , condN_arr]— Необязательно. N условных массивов, передающих дополнительные аргументы в лямбда-функцию.Array(T)
Array(T)
Примеры
Пример с одним массивом
Query
Response
Query
Response
arrayReverseSort
Добавленный в: v1.1.0 Сортирует элементы массива по убыванию. Если указана функцияf, переданный массив сортируется по результату
применения этой функции к элементам массива, а затем отсортированный массив переворачивается.
Если f принимает несколько аргументов, в функцию arrayReverseSort передаётся несколько массивов,
аргументам func будут соответствовать их элементы.
Если сортируемый массив содержит -Inf, NULL, NaN или Inf, они будут отсортированы в следующем порядке:
-InfInfNaNNULL
arrayReverseSort — это функция высшего порядка.
Синтаксис
f(y1[, y2 ... yN])— лямбда-функция, применяемая к элементам массиваx. -arr— массив, который нужно отсортировать.Array(T)-arr1, ..., arrN— необязательно. N дополнительных массивов, еслиfпринимает несколько аргументов.
x, отсортированный по убыванию, если лямбда-функция не указана; в противном случае
возвращает массив, отсортированный в соответствии с логикой переданной лямбда-функции, а затем перевёрнутый. Array(T).
Примеры
Пример 1
Query
Response
Query
Response
arrayReverseSplit
Добавленный в: v20.1.0 Разбивает исходный массив на несколько массивов. Когдаfunc(x[, y1, ..., yN]) возвращает значение, отличное от нуля, массив разбивается справа от элемента. После последнего элемента массив не разбивается.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Лямбда-функция[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, предоставляющих лямбда-функции дополнительные аргументы.Array(T)
Array(Array(T))
Примеры
Пример использования
Query
Response
arrayRotateLeft
Добавленный в: v23.8.0 Циклически сдвигает массив влево на указанное число элементов. Отрицательные значенияn интерпретируются как циклический сдвиг вправо на абсолютную величину сдвига.
Синтаксис
arr— Массив, элементы которого нужно циклически сдвинуть.Array(T). -n— Количество элементов для циклического сдвига.(U)Int8/16/32/64.
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
arrayRotateRight
Добавленный в: v23.8.0 Циклически сдвигает массив вправо на указанное число элементов. Отрицательные значенияn трактуются как циклический сдвиг влево на абсолютную величину сдвига.
Синтаксис
arr— Массив, элементы которого нужно циклически сдвинуть.Array(T). -n— Количество элементов, на которое выполняется циклический сдвиг.(U)Int8/16/32/64.
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
arrayShiftLeft
Добавленный в: v23.8.0 Сдвигает массив влево на указанное количество элементов. Новые элементы заполняются указанным аргументом или значением по умолчанию для типа элементов массива. Если количество элементов отрицательное, массив сдвигается вправо. Синтаксисarr— Массив, элементы которого нужно сдвинуть.Array(T). -n— Количество элементов, на которое нужно выполнить сдвиг.(U)Int8/16/32/64. -default— Необязательно. Значение по умолчанию для новых элементов.
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
arrayShiftRight
Добавленный в: v23.8.0 Сдвигает массив вправо на указанное количество элементов. Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элементов массива. Если количество элементов отрицательное, массив сдвигается влево. Синтаксисarr— Массив, элементы которого нужно сдвинуть.Array(T)n— Количество элементов, на которое нужно выполнить сдвиг.(U)Int8/16/32/64default— Необязательно. Значение по умолчанию для новых элементов.
Array(T)
Примеры
Пример использования
Query
Response
Query
Response
Query
Response
arrayShingles
Добавленный в: v24.1.0 Генерирует массив шинглов (по аналогии с n-граммами для строк), то есть последовательность подмассивов заданной длины из входного массива. Синтаксисarr— массив, для которого нужно сгенерировать массив шинглов.Array(T)l— длина каждого шингла.(U)Int*
Array(T)
Примеры
Пример использования
Query
Response
arrayShuffle
Добавленный в: v23.2.0 Возвращает массив того же размера, что и исходный, с элементами в случайном порядке. Элементы переупорядочиваются так, что каждая возможная их перестановка появляется с одинаковой вероятностью.Эта функция не материализует константы.
Эта функция является недетерминированной: она может возвращать разные результаты для одних и тех же аргументов.
arr— Массив, который нужно перемешать.Array(T)seed (optional)— Необязательно. Значение seed, используемое для генерации случайных чисел. Если не указано, используется случайное значение.(U)Int*
Array(T)
Примеры
Пример без seed (нестабильные результаты)
Query
Response
Query
Response
arraySimilarity
Добавленный в: v25.4.0 Вычисляет степень сходства двух массивов в диапазоне от0 до 1 на основе взвешенного расстояния Левенштейна.
Синтаксис
from— первый массивArray(T)to— второй массивArray(T)from_weights— веса первого массива.Array((U)Int*|Float*)to_weights— веса второго массива.Array((U)Int*|Float*)
0 до 1, вычисленное на основе взвешенного расстояния Левенштейна Float64
Примеры
Пример использования
Query
Response
arraySlice
Добавленный в: v1.1.0 Возвращает срез массива, включая элементы со значениемNULL.
Первым аргументом также может быть QBit: результатом будет QBit по выбранным размерностям (проекция на подмножество размерностей). В этом случае offset и length должны быть константами, поскольку размерность QBit является частью его типа, а срез должен выбирать хотя бы одну размерность. Срез, выровненный по границам групп stride QBit, сохраняет stride и повторно использует сохранённые потоки битовых плоскостей без копирования.
Синтаксис
arr— Массив, из которого берётся срез.Array(T)илиQBitoffset— Отступ от края массива. Положительное значение указывает на смещение слева, а отрицательное — на отступ справа. Нумерация элементов массива начинается с1.(U)Int*length— Длина требуемого среза. Если указать отрицательное значение, функция возвращает открытый срез[offset, array_length - length]. Если не указывать это значение, функция возвращает срез[offset, the_end_of_array].(U)Int*
length элементов, начиная с указанного offset Array(T)
Примеры
Пример использования
Query
Response
arraySort
Добавленный в: v1.1.0 Сортирует элементы переданного массива по возрастанию. Если указана лямбда-функцияf, порядок сортировки определяется результатом
применения этой функции к каждому элементу массива.
Если лямбда-функция принимает несколько аргументов, в arraySort передаётся несколько
массивов, аргументам f будут соответствовать их элементы.
Если сортируемый массив содержит -Inf, NULL, NaN или Inf, они будут отсортированы в следующем порядке:
-InfInfNaNNULL
arraySort — это функция высшего порядка.
Синтаксис
f(y1[, y2 ... yN])— лямбда-функция, применяемая к элементам массиваx. -arr— массив, который необходимо отсортировать.Array(T)-arr1, ..., arrN— Необязательно. N дополнительных массивов, еслиfпринимает несколько аргументов.
arr, отсортированный по возрастанию, если лямбда-функция не указана; в противном случае
возвращает массив, отсортированный в соответствии с логикой указанной лямбда-функции. Array(T).
Примеры
Пример 1
Query
Response
Query
Response
Query
Response
arraySplit
Добавленный в: v20.1.0 Разбивает исходный массив на несколько массивов. Еслиfunc(x [, y1, ..., yN]) возвращает значение, отличное от нуля, массив будет разделён слева от этого элемента. Массив не разделяется перед первым элементом.
Синтаксис
func(x[, y1, ..., yN])— Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y). Лямбда-функция. -source_arr— Исходный массив, который нужно разбитьArray(T). -[, cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, передающих лямбда-функции дополнительные аргументы.Array(T).
Array(Array(T))
Примеры
Пример использования
Query
Response
arraySum
Добавленный в: v21.1.0 Возвращает сумму элементов исходного массива. Если указана лямбда-функцияfunc, возвращает сумму элементов, полученных в результате её применения.
Синтаксис
func(x[, y1, ..., yN])— Необязательно. Лямбда-функция, применяемая к элементам исходного массива (x) и массивов условий (y).Лямбда-функцияsource_arr— Исходный массив для обработки.Array(T), cond1_arr, ... , condN_arr]— Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию.Array(T)
Query
Response
Query
Response
arraySymmetricDifference
Добавленный в: v25.4.0 Принимает несколько массивов и возвращает массив с элементами, которые содержатся не во всех исходных массивах. Результат содержит только уникальные значения.Симметрическая разность более чем двух множеств математически определяется
как множество всех входных элементов, которые встречаются в нечётном числе входных множеств.
В отличие от этого, функция
arraySymmetricDifference просто возвращает множество входных элементов, которые содержатся не во всех входных множествах.arrN— N массивов, из которых создаётся новый массив.Array(T).
Array(T)
Примеры
Пример использования
Query
Response
arrayTopK
Добавленный в: v26.6.0 Возвращает массив из K наибольших элементов входного массива, отсортированных по убыванию. Если указаналямбда-функция f, элементы сравниваются по результату применения f к каждому элементу.
Если f принимает несколько аргументов, в arrayTopK передаются дополнительные массивы; их элементы
соответствуют аргументам f.
Значения NULL пропускаются и не включаются в результат. Размер результата не превышает K
и может быть меньше, если входной массив содержит менее K значений, отличных от NULL.
Тип элементов результата — соответствующий тип элементов входного массива без Nullable.
arrayTopK — это функция высшего порядка.
См. также arrayBottomK, которая возвращает K наименьших элементов.
Синтаксис
f(arr[, arr1, ... ,arrN])— Необязательно. Лямбда-функция для вычисления ключа сортировки для каждого элемента.Лямбда-функцияK— Количество наибольших элементов, которые нужно вернуть.(U)Int8/16/32/64arr— Массив.Array(T)arr1, ... ,arrN— N дополнительных массивов, еслиfпринимает несколько аргументов.Array(T)
K элементов массива arr с наибольшими значениями (или наибольшими результатами лямбда-функции), отсортированных по убыванию.
NULL-значения пропускаются. Возвращаемый массив имеет тип элементов T, даже если входной массив имеет тип Nullable(T).
Примеры
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayTranspose
Добавленный в: v26.4.0 Транспонирует двумерный массив. Все вложенные массивы должны иметь одинаковую длину. Синтаксисarr— двумерный массив для транспонирования. Все внутренние массивы должны иметь одинаковую длину.Array(Array(T))
[i][j] результата равен элементу [j][i] исходного массива. Array(Array(T))
Примеры
Квадратная матрица
Query
Response
Query
Response
Query
Response
arrayUnion
Добавленный в: v24.10.0 Принимает несколько массивов и возвращает массив, содержащий все элементы, которые присутствуют хотя бы в одном из исходных массивов. Результат содержит только уникальные значения. СинтаксисarrN— N массивов, из которых создаётся новый массив.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayUniq
Добавленный в: v1.1.0 При передаче одного аргумента подсчитывает количество различных элементов в массиве. При передаче нескольких аргументов подсчитывает количество различных кортежей, составленных из элементов, находящихся на соответствующих позициях в нескольких массивах. Например,SELECT arrayUniq([1,2], [3,4], [5,6]) сформирует следующие кортежи:
- Позиция 1: (1,3,5)
- Позиция 2: (2,4,6)
2.
Все переданные массивы должны иметь одинаковую длину.
Синтаксис
arr1— Массив, для которого подсчитывается количество уникальных элементов.Array(T)[, arr2, ..., arrN]— Необязательно. Дополнительные массивы, используемые для подсчета количества уникальных кортежей из элементов, находящихся на соответствующих позициях в нескольких массивах.Array(T)
UInt32
Примеры
Один аргумент
Query
Response
Query
Response
arrayWithConstant
Добавленный в: v20.1.0 Создаёт массив длинойlength, заполненный постоянным значением x.
Синтаксис
length— Количество элементов в массиве.(U)Int*x— Значение дляNэлементов массива, любого типа.
Array из N элементов со значением x. Array(T)
Примеры
Пример использования
Query
Response
arrayZip
Добавленный в: v20.1.0 Объединяет несколько массивов в один. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в порядке перечисленных аргументов. Синтаксисarr1, arr2, ... , arrN— N массивов, объединяемых в один массив.Array(T)
Array(T)
Примеры
Пример использования
Query
Response
arrayZipUnaligned
Добавленный в: v20.1.0 Объединяет несколько массивов в один, допуская несовпадение их длины. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов. Синтаксисarr1, arr2, ..., arrN— N массивов, объединённых в один массив.Array(T)
Array(T) или Tuple(T1, T2, ...)
Примеры
Пример использования
Query
Response
countEqual
Добавлено в: v1.1.0 Возвращает количество элементов массива, равныхx. Эквивалентно arrayCount(elem -> elem = x, arr).
Элементы NULL рассматриваются как отдельные значения.
Синтаксис
arr— Массив, в котором выполняется поиск.Array(T)x— Значение в массиве, количество вхождений которого нужно подсчитать. Любой тип.
x UInt64
Примеры
Пример использования
Query
Response
empty
Добавленный в: v1.1.0 Проверяет, пуст ли входной массив. Массив считается пустым, если не содержит ни одного элемента.Можно оптимизировать, включив настройку
optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1 функция читает только подстолбец size0 вместо чтения и обработки всего столбца типа Array. Запрос SELECT empty(arr) FROM TABLE; преобразуется в SELECT arr.size0 = 0 FROM TABLE;.arr— Входной массив.Array(T)
1 для пустого массива и 0 — для непустого массива UInt8
Примеры
Пример использования
Query
Response
emptyArrayDate
Добавленный в: v1.1.0 Возвращает пустой массив типа Date Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayDateTime
Добавленный в: v1.1.0 Возвращает пустой массив DateTime Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayFloat32
Добавленный в: v1.1.0 Возвращает пустой массив типа Float32 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayFloat64
Добавленный в: v1.1.0 Возвращает пустой массив типа Float64 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayInt16
Добавленный в: v1.1.0 Возвращает пустой массив Int16 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayInt32
Добавленный в: v1.1.0 Возвращает пустой массив типа Int32 Синтаксис- Нет аргументов.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayInt64
Добавленный в: v1.1.0 Возвращает пустой массив Int64 Синтаксис- Нет.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayInt8
Добавленный в: v1.1.0 Возвращает пустой массив типа Int8 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayString
Добавленный в: v1.1.0 Возвращает пустой массив типа String Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayToSingle
Добавленный в: v1.1.0 Принимает пустой массив и возвращает одноэлементный массив со значением по умолчанию. Синтаксисarr— Пустой массив.Array(T)
Array(T)
Примеры
Базовый пример
Query
Response
emptyArrayUInt16
Добавлено в: v1.1.0 Возвращает пустой массив UInt16 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayUInt32
Добавленный в: v1.1.0 Возвращает пустой массив типа UInt32 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayUInt64
Добавленный в: v1.1.0 Возвращает пустой массив типа UInt64 Синтаксис- Нет.
Array(T)
Примеры
Пример использования
Query
Response
emptyArrayUInt8
Добавлено в: v1.1.0 Возвращает пустой массив UInt8 Синтаксис- Отсутствуют.
Array(T)
Примеры
Пример использования
Query
Response
has
Добавленный в: v1.1.0 Возвращает, содержит ли массив указанный элемент, Map — указанный ключ, а объект JSON — указанный путь. Для JSON поддерживаются вложенные пути с точечной нотацией (например, ‘a.b.c’). Когда первый аргумент — константный массив, а второй — столбец или выражение,has(constant_array, column) работает как column IN (constant_array) и для оптимизации может использовать первичный ключ и индексы пропуска данных. Например, has([1, 10, 100], id) может использовать индекс первичного ключа, если id входит в PRIMARY KEY.
Эта оптимизация также применяется, когда столбец обёрнут в монотонную функцию (например, has([...], toDate(ts))).
Синтаксис
haystack— Исходный массив, map или JSON.ArrayилиMapилиJSONneedle— Искомое значение (элемент массива, ключ в map или строка path в JSON).
1, если haystack содержит указанное значение needle, в противном случае — 0. UInt8
Примеры
Базовое использование Array
Query
Response
Query
Response
Query
Response
Query
Response
hasAll
Добавленный в: v1.1.0 Проверяет, является ли один массив подмножеством другого массива.- Пустой массив является подмножеством любого массива.
Nullобрабатывается как значение.- Порядок значений в обоих массивах не имеет значения.
set— массив любого типа с набором элементов.Array(T)subset— массив любого типа, элементы которого имеют сsetобщий супертип; используется для проверки того, что он является подмножествомset.Array(T)
1, еслиsetсодержит все элементы изsubset.0— в противном случае.
NO_COMMON_TYPE, если элементы set и subset не имеют общего супертипа.
Примеры
Пустые массивы
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasAny
Добавленный в: v1.1.0 Проверяет, есть ли у двух массивов общие элементы.Nullобрабатывается как значение.- Порядок значений в обоих массивах не имеет значения.
arr_x— Массив любого типа с элементами.Array(T)arr_y— Массив любого типа, имеющий общий супертип с массивомarr_x.Array(T)
1, еслиarr_xиarr_yимеют хотя бы один общий элемент.0— в противном случае.
NO_COMMON_TYPE, если какие-либо элементы двух массивов не имеют общего супертипа.
Примеры
Один из массивов пуст
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasSubstr
Добавленный в: v20.6.0 Проверяет, встречаются ли все элементы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
Примеры
Оба массива пусты
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
indexOf
Добавленный в: v1.1.0 Возвращает индекс первого элемента со значением ‘x’ (начиная с 1), если такой элемент есть в массиве. Если массив не содержит искомого значения, функция возвращает0.
Элементы со значением NULL обрабатываются как обычные значения.
Элементы NaN не подчиняются указанному выше правилу для NULL.
Скалярное сравнение двух значений NaN (NaN = NaN) равно 0, однако indexOf всё же может считать элемент NaN найденным.
Это зависит от деталей реализации. Не полагайтесь на конкретное поведение.
Чтобы найти такой элемент, выполните проверку: arrayFirstIndex(x -> isNaN(x), arr) возвращает его позицию, а arrayExists(x -> isNaN(x), arr) — флаг.
Синтаксис
arr— Массив, в котором выполняется поискx.Array(T)x— Значение первого совпадающего элемента вarr, индекс которого нужно вернуть.UInt64
x в arr, если он существует. В противном случае возвращает 0. UInt64
Примеры
Базовый пример
Query
Response
Query
Response
indexOfAssumeSorted
Добавленный в: v24.12.0 Возвращает индекс первого элемента со значением ‘x’ (начиная с1), если он присутствует в массиве.
Если массив не содержит искомого значения, функция возвращает 0.
В отличие от функции
indexOf, эта функция предполагает, что массив отсортирован по
возрастанию. Если массив не отсортирован, результат не определён.arr— Отсортированный массив, в котором выполняется поиск.Array(T)x— Значение первого совпадающего элемента в отсортированномarr, индекс которого нужно вернуть.UInt64
x в arr, если такой элемент существует. В противном случае возвращает 0. UInt64
Примеры
Базовый пример
Query
Response
length
Добавленный в: v1.1.0 Вычисляет длину строки или массива.- Для аргументов String или FixedString: вычисляет число байтов в строке.
- Для аргументов Array: вычисляет число элементов в массиве.
- Для аргументов QBit: вычисляет размерность вектора.
- Если функция применяется к аргументу FixedString или QBit, она является константным выражением.
OCTET_LENGTH, CARDINALITY
Аргументы
x— значение, для которого вычисляется число байтов (дляString/FixedString), элементов (дляArray) или размерность (дляQBit).StringилиFixedStringилиArray(T)илиQBit
String/FixedString x, число элементов в массиве x или размерность QBit x UInt64
Примеры
Пример для String
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
notEmpty
Добавленный в: v1.1.0 Проверяет, является ли входной массив непустым. Массив считается непустым, если содержит хотя бы один элемент.Можно оптимизировать, включив настройку
optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1 функция читает только подстолбец size0 вместо чтения и обработки всего столбца типа Array. Запрос SELECT notEmpty(arr) FROM table преобразуется в SELECT arr.size0 != 0 FROM TABLE.arr— входной массив.Array(T)
1 для непустого массива и 0 — для пустого массива UInt8
Примеры
Пример использования
Query
Response
notHas
Добавлено в: v26.8.0 Возвращает, не содержит ли массив указанный элемент, map — указанный ключ или объект JSON — указанный путь. Отрицаниеhas.
Синтаксис
haystack— Исходный массив, Map или JSON.Array,MapилиJSONneedle— Искомое значение (элемент массива, ключ в Map или строка пути в JSON).
1, если haystack не содержит указанный needle, иначе — 0. UInt8
Примеры
Базовое использование Array
Query
Response
Query
Response
Query
Response
Query
Response
randomHadamardTransform
Добавленный в: v26.7.0 Применяет случайное преобразование Адамара к вектору чисел с плавающей запятой:y = (1/sqrt(k)) * (H * D * x), где
D — диагональная матрица детерминированных знаков +/-1, выбираемых по seed, а H — преобразование Уолша-Адамара.
Это преобразование представляет собой ортогональное сохраняющее норму вращение, которое равномерно распределяет энергию вектора
по координатам, делая распределение каждой координаты приблизительно гауссовым и
независимым от данных. Оно полезно как этап предварительной обработки перед скалярным квантованием, а — в
усечённом виде — как случайная проекция Джонсона — Линденштрауса / subsampled-randomized-Hadamard (SRHT).
Полное преобразование (без усечения) сохраняет длину входа. Оно точно для следующих длин:
- степень двойки (обычное быстрое преобразование Уолша-Адамара);
2^k * m, гдеmпринадлежит{12, 20}(порядки, для которых существует матрица Адамара+/-1, например768 = 64 * 12,1536 = 128 * 12,3072 = 256 * 12,2560 = 128 * 20), применяется как точное преобразование КронекераH_(2^k) (x) H_m(без умножений с плавающей запятой);2^k * m, гдеm— любое другое нечётное число до64(порядки, для которых матрицы Адамара+/-1не существует — они есть только для порядков1,2и чисел, кратных4), применяется как точное преобразование КронекераH_(2^k) (x) C_m, гдеC_m— вещественная ортогональная матрица дискретного преобразования Хартли. Это покрывает оставшиеся семейства эмбеддингов, такие как3584 = 512 * 7,1152 = 128 * 9,1408 = 128 * 11.
64, не имеет точной формы и потребовало бы
дополнения нулями до большей степени двойки; вместо того чтобы молча
возвращать более длинный вектор, оно завершается с исключением. Используйте поддерживаемую длину или передайте output_dims, чтобы вычислить усечённую
проекцию для произвольной длины (см. ниже).
Результат имеет тот же тип элементов, что и вход; пустой входной массив возвращает пустой массив
(output_dims к нему не применяется).
seed(необязательно, по умолчанию0): выбирает схему знаков; один и тот же seed всегда даёт одно и то же преобразование.output_dims(необязательно, по умолчанию длина преобразования): сохраняет только первыеoutput_dimsкоординат, превращая преобразование в случайную проекцию, которая принимает любую длину. Масштабирование1/sqrt(output_dims)сохраняет норму результата для полного преобразования и сохраняет её в математическом ожидании при усечении. Значение не должно превышать длину преобразования. Поскольку усечённый префикс фактора дискретного преобразования ХартлиC_mне обладает такой же равномерностью leverage, как матрица Адамара+/-1, усечение черезoutput_dimsдля длины из семейства Хартли (или для любой длины без точного разложения) использует дополненное нулями преобразование степени двойки, которое это свойство сохраняет.
vector— Вектор для преобразования.Array(BFloat16)илиArray(Float32)илиArray(Float64)seed— Необязательно. seed для детерминированных знаков +/-1 (по умолчанию 0).UInt*output_dims— Необязательно. Обрезает результат до указанного числа начальных координат (по умолчанию: полная длина преобразования, которая совпадает с длиной входного вектора для любой поддерживаемой размерности). Передача output_dims также включает преобразование для длин, у которых нет точной формы полного преобразования.UInt*
Array(BFloat16) или Array(Float32) или Array(Float64)
Примеры
Полное преобразование для длины, равной степени двойки
Query
Response
Query
Response
Query
Response
2^k * m сохраняет длину входного вектора (без дополнения)
Query
Response
range
Добавленный в: v1.1.0 Возвращает массив чисел от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)
Примеры
Пример использования
Query
Response
replicate
Добавленный в: v1.1.0 Создает массив, содержащий одно значение. Синтаксисarr, заполненный значением x. Array(T)
Примеры
Пример использования
Query
Response
reverse
Добавленный в: v1.1.0 Изменяет порядок элементов входного массива или символов входной строки на обратный. СинтаксисQuery
Response
Query
Response