array-functions
description: 'Документация по функциям массива' sidebar_label: 'Массивы' sidebar_position: 10 slug: /sql-reference/functions/array-functions title: 'Функции массива'
Массив считается пустым, если он не содержит элементов.
Можно оптимизировать, включив настройку optimize_functions_to_subcolumns
. При optimize_functions_to_subcolumns = 1
функция читает только подколонку size0 вместо чтения и обработки всей колонки массива. Запрос SELECT empty(arr) FROM TABLE;
превращается в SELECT arr.size0 = 0 FROM TABLE;
.
Функция также работает для строк или UUID.
Аргументы
[x]
— Входной массив. Array.
Возвращаемое значение
- Возвращает
1
для пустого массива или0
для непустого массива. UInt8.
Пример
Запрос:
Результат:
notEmpty
Проверяет, является ли входной массив непустым.
Синтаксис
Массив считается непустым, если он содержит хотя бы один элемент.
Можно оптимизировать, включив настройку optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1
функция читает только подколонку size0 вместо чтения и обработки всей колонки массива. Запрос SELECT notEmpty(arr) FROM table
превращается в SELECT arr.size0 != 0 FROM TABLE
.
Функция также работает для строк или UUID.
Аргументы
[x]
— Входной массив. Array.
Возвращаемое значение
- Возвращает
1
для непустого массива или0
для пустого массива. UInt8.
Пример
Запрос:
Результат:
length
Возвращает количество элементов в массиве. Тип результата — UInt64. Функция также работает для строк.
Можно оптимизировать, включив настройку optimize_functions_to_subcolumns. При optimize_functions_to_subcolumns = 1
функция читает только подколонку size0 вместо чтения и обработки всей колонки массива. Запрос SELECT length(arr) FROM table
превращается в SELECT arr.size0 FROM TABLE
.
Псевдоним: OCTET_LENGTH
emptyArrayUInt8
Возвращает пустой массив UInt8.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayUInt16
Возвращает пустой массив UInt16.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayUInt32
Возвращает пустой массив UInt32.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayUInt64
Возвращает пустой массив UInt64.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayInt8
Возвращает пустой массив Int8.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayInt16
Возвращает пустой массив Int16.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayInt32
Возвращает пустой массив Int32.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayInt64
Возвращает пустой массив Int64.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayFloat32
Возвращает пустой массив Float32.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayFloat64
Возвращает пустой массив Float64.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayDate
Возвращает пустой массив Date.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
emptyArrayDateTime
Возвращает пустой массив DateTime.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayString
Возвращает пустой массив String.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayToSingle
Принимает пустой массив и возвращает массив с одним элементом, равным значению по умолчанию.
range(end), range([start, ] end [, step])
Возвращает массив чисел от start
до end - 1
с шагом step
. Поддерживаемые типы: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64.
Синтаксис
Аргументы
start
— Первый элемент массива. Необязательный, обязательный, если используетсяstep
. Значение по умолчанию: 0.end
— Число, перед которым создается массив. Обязательный.step
— Определяет инкрементальный шаг между каждым элементом в массиве. Необязательный. Значение по умолчанию: 1.
Возвращаемое значение
- Массив чисел от
start
доend - 1
с шагомstep
.
Детали реализации
- Все аргументы
start
,end
,step
должны быть ниже следующих типов:UInt8
,UInt16
,UInt32
,UInt64
,Int8
,Int16
,Int32
,Int64
, а также элементы возвращаемого массива, тип которого является супертипом всех аргументов. - Исключение выбрасывается, если результаты запроса содержат массивы с общей длиной более числа элементов, указанного настраиваемым значением function_range_max_elements_in_block.
- Возвращает Null, если любой аргумент имеет тип Nullable(Nothing). Исключение выбрасывается, если любой аргумент имеет значение Null (тип Nullable(T)).
Примеры
Запрос:
Результат:
array(x1, ...), оператор [x1, ...]
Создает массив из аргументов функции. Аргументы должны быть константами и иметь типы, которые имеют наименьший общий тип. Должен быть передан хотя бы один аргумент, иначе неясно, какой тип массива создать. То есть, вы не можете использовать эту функцию для создания пустого массива (для этого используйте функцию 'emptyArray*', описанную выше). Возвращает результат типа 'Array(T)', где 'T' является наименьшим общим типом из переданных аргументов.
arrayWithConstant(length, elem)
Создает массив длиной length
, заполненный постоянным значением elem
.
arrayConcat
Объединяет массивы, переданные в качестве аргументов.
Аргументы
arrays
– Произвольное количество аргументов типа Array.
Пример
arrayElement(arr, n), оператор arr[n]
Получает элемент с индексом n
из массива arr
. n
должен быть любым целым типом.
Индексы в массиве начинаются с одного.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент с конца. Например, arr[-1]
— это последний элемент в массиве.
Если индекс выходит за пределы массива, возвращается некоторое значение по умолчанию (0 для чисел, пустая строка для строк и т.д.), за исключением случая с неконстантным массивом и константным индексом 0 (в этом случае произойдет ошибка Индексы массива начинаются с 1
).
has(arr, elem)
Проверяет, содержит ли массив 'arr' элемент 'elem'. Возвращает 0, если элемент отсутствует в массиве, или 1, если он есть.
NULL
обрабатывается как значение.
arrayElementOrNull(arr, n)
Получает элемент с индексом n
из массива arr
. n
должен быть любым целым типом.
Индексы в массиве начинают с одного.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент с конца. Например, arr[-1]
— это последний элемент в массиве.
Если индекс выходит за пределы массива, возвращает NULL
вместо значения по умолчанию.
Примеры
hasAll
Проверяет, является ли один массив подмножеством другого.
Аргументы
set
– Массив любого типа с набором элементов.subset
– Массив любого типа, который делит общий супертоп сset
и содержит элементы, которые должны быть проверены как подмножествоset
.
Возвращаемые значения
1
, еслиset
содержит все элементы изsubset
.0
, в противном случае.
Выбрасывается исключение NO_COMMON_TYPE
, если элементы множества и подмножества не делят общий супертоп.
Особые свойства
- Пустой массив является подмножеством любого массива.
Null
обрабатывается как значение.- Порядок значений в обоих массивах не имеет значения.
Примеры
SELECT hasAll([], [])
возвращает 1.
SELECT hasAll([1, Null], [Null])
возвращает 1.
SELECT hasAll([1.0, 2, 3, 4], [1, 3])
возвращает 1.
SELECT hasAll(['a', 'b'], ['a'])
возвращает 1.
SELECT hasAll([1], ['a'])
выбрасывает исключение NO_COMMON_TYPE
.
SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]])
возвращает 0.
hasAny
Проверяет, имеют ли два массива пересечение по некоторым элементам.
Аргументы
array1
– Массив любого типа с набором элементов.array2
– Массив любого типа, который делит общий супертоп сarray1
.
Возвращаемые значения
1
, еслиarray1
иarray2
имеют хотя бы один общий элемент.0
, в противном случае.
Выбрасывается исключение NO_COMMON_TYPE
, если элементы array1 и array2 не делят общий супертоп.
Особые свойства
Null
обрабатывается как значение.- Порядок значений в обоих массивах не имеет значения.
Примеры
SELECT hasAny([1], [])
возвращает 0
.
SELECT hasAny([Null], [Null, 1])
возвращает 1
.
SELECT hasAny([-128, 1., 512], [1])
возвращает 1
.
SELECT hasAny([[1, 2], [3, 4]], ['a', 'c'])
выбрасывает исключение NO_COMMON_TYPE
.
SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]])
возвращает 1
.
hasSubstr
Проверяет, появляются ли все элементы массива array2 в array1 в том же самом порядке. Таким образом, функция вернет 1, если и только если array1 = prefix + array2 + suffix
.
Иными словами, функции проверят, содержатся ли все элементы array2
в array1
так же, как и функция hasAll
. Кроме того, будет проверено, что элементы наблюдаются в том же порядке в обоих array1
и array2
.
Например:
hasSubstr([1,2,3,4], [2,3])
возвращает 1. Однако,hasSubstr([1,2,3,4], [3,2])
возвращает0
.hasSubstr([1,2,3,4], [1,2,3])
возвращает 1. Однако,hasSubstr([1,2,3,4], [1,2,4])
возвращает0
.
Аргументы
array1
– Массив любого типа с набором элементов.array2
– Массив любого типа с набором элементов.
Возвращаемые значения
1
, еслиarray1
содержитarray2
.0
, в противном случае.
Выбрасывается исключение NO_COMMON_TYPE
, если элементы array1 и array2 не делят общий супертоп.
Особые свойства
- Функция возвращает
1
, еслиarray2
пуст. Null
обрабатывается как значение. Иными словамиhasSubstr([1, 2, NULL, 3, 4], [2,3])
возвращает0
. Однако,hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])
возвращает1
- Порядок значений в обоих массивах имеет значение.
Примеры
SELECT hasSubstr([], [])
возвращает 1.
SELECT hasSubstr([1, Null], [Null])
возвращает 1.
SELECT hasSubstr([1.0, 2, 3, 4], [1, 3])
возвращает 0.
SELECT hasSubstr(['a', 'b'], ['a'])
возвращает 1.
SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b'])
возвращает 1.
SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'c'])
возвращает 0.
SELECT hasSubstr([[1, 2], [3, 4], [5, 6]], [[1, 2], [3, 4]])
возвращает 1.
SELECT hasSubstr([1, 2, NULL, 3, 4], ['a'])
выбрасывает исключение NO_COMMON_TYPE
.
indexOf(arr, x)
Возвращает индекс первого элемента со значением 'x' (начиная с 1), если он присутствует в массиве. Если массив не содержит искомое значение, функция возвращает 0.
Пример:
Элементы, установленные на NULL
, обрабатываются как обычные значения.
indexOfAssumeSorted(arr, x)
Возвращает индекс первого элемента со значением 'x' (начиная с 1), если он присутствует в массиве. Если массив не содержит искомое значение, функция возвращает 0. Предполагает, что массив отсортирован в порядке возрастания (т.е. функция использует бинарный поиск). Если массив не отсортирован, результаты будут неопределенными. Если внутренний массив является типом Nullable, будет вызвана функция 'indexOf'.
Пример:
arrayCount([func,] arr1, ...)
Возвращает количество элементов, для которых func(arr1[i], ..., arrN[i])
возвращает что-то другое, кроме 0. Если func
не указан, он возвращает количество ненулевых элементов в массиве.
Обратите внимание, что arrayCount
является функцией высшего порядка. Вы можете передать лямбда-функцию в качестве первого аргумента.
arrayDotProduct
Возвращает скалярное произведение двух массивов.
Синтаксис
Псевдоним: scalarProduct
, dotProduct
Параметры
vector1
: Первый вектор. Array или Tuple числовых значений.vector2
: Второй вектор. Array или Tuple числовых значений.
Размеры двух векторов должны быть равны. Массивы и кортежи также могут содержать смешанные типы элементов.
Возвращаемое значение
- Скалярное произведение двух векторов. Numeric.
Тип возвращаемого значения определяется типом аргументов. Если массивы или кортежи содержат смешанные типы элементов, то тип результата является супертопом.
Примеры
Запрос:
Результат:
Запрос:
Результат:
countEqual(arr, x)
Возвращает количество элементов в массиве, равных x. Эквивалентно arrayCount (elem -> elem = x, arr).
Элементы NULL
обрабатываются как отдельные значения.
Пример:
arrayEnumerate(arr)
Возвращает массив [1, 2, 3, ..., length (arr) ]
Эта функция обычно используется с ARRAY JOIN
. Она позволяет считать что-то только один раз для каждого массива после применения ARRAY JOIN
. Пример:
В этом примере, Reaches — это количество конверсий (строк, полученных после применения ARRAY JOIN), а Hits — это количество просмотров страниц (строк до ARRAY JOIN). В этом случае вы также можете получить тот же результат более простым способом:
Эту функцию также можно использовать в функциях высшего порядка. Например, вы можете использовать ее, чтобы получить индексы массива для элементов, которые соответствуют условию.
arrayEnumerateUniq
Возвращает массив того же размера, что и исходный массив, указывая для каждого элемента, какое место он занимает среди элементов с тем же значением. Например: arrayEnumerateUniq([10, 20, 10, 30]) = [1, 1, 2, 1].
Эта функция полезна при использовании ARRAY JOIN и агрегации элементов массива. Пример:
В этом примере, каждый идентификатор цели включает расчет числа конверсий (каждый элемент в вложенной структуре данных Goals является целью, которая была достигнута, которая называется конверсией) и число сессий. Без ARRAY JOIN, мы бы посчитали количество сессий как sum(Sign). Но в этом конкретном случае строки были умножены вложенной структурой Goals, поэтому, чтобы посчитать каждую сессию один раз после этого, мы применяем условие к значению функции arrayEnumerateUniq(Goals.ID).
Функция arrayEnumerateUniq может принимать несколько массивов одного размера в качестве аргументов. В этом случае уникальность учитывается для кортежей элементов в одних и тех же позициях во всех массивах.
Это необходимо при использовании ARRAY JOIN с вложенной структурой данных и последующей агрегацией по нескольким элементам в этой структуре.
arrayEnumerateUniqRanked
Возвращает массив того же размера, что и исходный массив, указывая для каждого элемента, какое место он занимает среди элементов с тем же значением. Позволяет нумеровать многомерный массив с возможностью указания глубины, на которую нужно заглянуть внутрь массива.
Синтаксис
Параметры
clear_depth
: Нумеровать элементы на указанном уровне отдельно. Положительное Целое число, меньшее или равноеmax_arr_depth
.arr
: N-мерный массив для нумерации. Array.max_array_depth
: Максимальная эффективная глубина. Положительное Целое число, меньшее или равное глубинеarr
.
Пример
При clear_depth=1
и max_array_depth=1
, результат arrayEnumerateUniqRanked
будет идентичен тому, который даст arrayEnumerateUniq
для того же массива.
Запрос:
Результат:
В этом примере используется arrayEnumerateUniqRanked
, чтобы получить массив, указывающий, для каждого элемента многомерного массива, какое место он занимает среди элементов одного и того же значения. Для первой строки переданного массива, [1,2,3]
, соответствующий результат — это [1,1,1]
, что указывает на то, что это первый раз, когда встречаются 1
, 2
и 3
. Для второй строки переданного массива, [2,2,1]
, соответствующий результат — это [2,3,3]
, что указывает на то, что 2
встречается во второй и третий раз, а 1
встречается во второй раз. Точно так же, для третьей строки переданного массива [3]
, соответствующий результат — это [2]
, что указывает на то, что 3
встречается во второй раз.
Запрос:
Результат:
arrayPopBack
Удаляет последний элемент из массива.
Аргументы
array
– Массив.
Пример
arrayPopFront
Удаляет первый элемент из массива.
Аргументы
array
– Массив.
Пример
arrayPushBack
Добавляет один элемент в конец массива.
Аргументы
array
– Массив.single_value
– Единственное значение. В массив с числами можно добавить только числа, а в массив строк — только строки. При добавлении чисел ClickHouse автоматически устанавливает типsingle_value
для типа данных массива. Для получения дополнительной информации о типах данных в ClickHouse смотрите "Типы данных". Может бытьNULL
. Функция добавляет элементNULL
в массив, и тип элементов массива преобразуется вNullable
.
Пример
arrayPushFront
Добавляет один элемент в начало массива.
Аргументы
array
– Массив.single_value
– Единственное значение. В массив с числами можно добавить только числа, а в массив строк — только строки. При добавлении чисел ClickHouse автоматически устанавливает типsingle_value
для типа данных массива. Для получения дополнительной информации о типах данных в ClickHouse смотрите "Типы данных". Может бытьNULL
. Функция добавляет элементNULL
в массив, и тип элементов массива преобразуется вNullable
.
Пример
arrayResize
Изменяет длину массива.
Аргументы:
array
— Массив.size
— Необходимая длина массива.- Если
size
меньше исходного размера массива, массив обрезается справа.
- Если
- Если
size
больше начального размера массива, массив расширяется вправо с помощью значенийextender
или значений по умолчанию для типа данных элементов массива. extender
— Значение для расширения массива. Может бытьNULL
.
Возвращаемое значение:
Массив длиной size
.
Примеры вызовов
arraySlice
Возвращает срез массива.
Аргументы
array
– Массив данных.offset
– Смещение от края массива. Положительное значение указывает на смещение слева, а отрицательное — на смещение справа. Нумерация элементов массива начинается с 1.length
– Длина необходимого среза. Если вы укажете отрицательное значение, функция вернет открытый срез[offset, array_length - length]
. Если вы опустите значение, функция вернет срез[offset, the_end_of_array]
.
Пример
Элементы массива, установленные на NULL
, обрабатываются как обычные значения.
arrayShingles
Генерирует массив "шинглов", т.е. последовательных подмассивов заданной длины из входного массива.
Синтаксис
Аргументы
array
— Входной массив Array.length
— Длина каждого шингла.
Возвращаемое значение
- Массив сгенерированных шинглов. Array.
Примеры
Запрос:
Результат:
arraySort([func,] arr, ...)
Сортирует элементы массива arr
в порядке возрастания. Если функция func
указана, порядок сортировки определяется результатом функции func
, примененной к элементам массива. Если func
принимает несколько аргументов, функции arraySort
передается несколько массивов, соответствующих аргументам func
. Подробные примеры приведены в конце описания arraySort
.
Пример сортировки целочисленных значений:
Пример сортировки строковых значений:
Рассмотрим следующий порядок сортировки для значений NULL
, NaN
и Inf
:
- Значения
-Inf
находятся в начале массива. - Значения
NULL
находятся в конце массива. - Значения
NaN
расположены непосредственно передNULL
. - Значения
Inf
расположены непосредственно передNaN
.
Обратите внимание, что arraySort
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента. В этом случае порядок сортировки определяется результатом лямбда-функции, примененной к элементам массива.
Рассмотрим следующий пример:
Для каждого элемента исходного массива лямбда-функция возвращает ключ сортировки, то есть [1 –> -1, 2 –> -2, 3 –> -3]. Поскольку функция arraySort
сортирует ключи в порядке возрастания, результатом является [3, 2, 1]. Таким образом, лямбда-функция (x) –> -x
устанавливает порядок убывания в сортировке.
Лямбда-функция может принимать несколько аргументов. В этом случае необходимо передать функции arraySort
несколько массивов одинаковой длины, которые будут соответствовать аргументам лямбда-функции. Результирующий массив будет состоять из элементов первого входного массива; элементы из последующих входных массивов указывают ключи сортировки. Например:
Здесь элементы, переданные во втором массиве ([2, 1]), определяют ключ сортировки для соответствующего элемента из исходного массива (['hello', 'world']), то есть ['hello' –> 2, 'world' –> 1]. Поскольку лямбда-функция не использует x
, фактические значения исходного массива не влияют на порядок в результате. Таким образом, 'hello' будет вторым элементом в результате, а 'world' — первым.
Другие примеры показаны ниже.
Для повышения эффективности сортировки используется преобразование Шварца.
arrayPartialSort([func,] limit, arr, ...)
То же, что и arraySort
, с дополнительным аргументом limit
, позволяющим выполнять частичную сортировку. Возвращает массив того же размера, что и оригинальный массив, где элементы в диапазоне [1..limit]
отсортированы в порядке возрастания. Оставшиеся элементы (limit..N]
будут содержать элементы в неопределенном порядке.
arrayReverseSort
Сортирует элементы массива arr
в порядке убывания. Если указана функция func
, массив arr
сортируется в соответствии с результатом функции func
, примененной к элементам массива, а затем отсортированный массив разворачивается. Если func
принимает несколько аргументов, функции arrayReverseSort
передается несколько массивов, соответствующих аргументам func
. Подробные примеры приведены в конце описания arrayReverseSort
.
Синтаксис
Пример сортировки целочисленных значений:
Пример сортировки строковых значений:
Рассмотрим следующий порядок сортировки для значений NULL
, NaN
и Inf
:
- Значения
Inf
находятся в начале массива. - Значения
NULL
находятся в конце массива. - Значения
NaN
расположены непосредственно передNULL
. - Значения
-Inf
расположены непосредственно передNaN
.
Обратите внимание, что arrayReverseSort
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента. Пример показан ниже.
Массив сортируется следующим образом:
- Сначала исходный массив ([1, 2, 3]) сортируется в соответствии с результатом функции лямбда, примененной к элементам массива. Результат — массив [3, 2, 1].
- Массив, полученный на предыдущем шаге, разворачивается. Таким образом, окончательный результат — [1, 2, 3].
Лямбда-функция может принимать несколько аргументов. В этом случае необходимо передать функции arrayReverseSort
несколько массивов одинаковой длины, которые будут соответствовать аргументам лямбда-функции. Результирующий массив будет состоять из элементов первого входного массива; элементы из последующих входных массивов указывают ключи сортировки. Например:
В этом примере массив сортируется следующим образом:
- Сначала исходный массив (['hello', 'world']) сортируется в соответствии с результатом функции лямбда, примененной к элементам массивов. Элементы, переданные во втором массиве ([2, 1]), определяют ключи сортировки для соответствующих элементов из исходного массива. Результат — массив ['world', 'hello'].
- Массив, который был отсортирован на предыдущем шаге, разворачивается. Таким образом, окончательный результат — ['hello', 'world'].
Другие примеры показаны ниже.
arrayPartialReverseSort([func,] limit, arr, ...)
То же, что и arrayReverseSort
, с дополнительным аргументом limit
, позволяющим выполнять частичную сортировку. Возвращает массив того же размера, что и оригинальный массив, где элементы в диапазоне [1..limit]
отсортированы в порядке убывания. Оставшиеся элементы (limit..N]
будут содержать элементы в неопределенном порядке.
arrayShuffle
Возвращает массив того же размера, что и оригинальный массив, содержащий элементы в случайном порядке. Элементы перерассматриваются таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
Синтаксис
Параметры
arr
: Массив для частичного перемешивания. Array.seed
(необязательно): семя, которое будет использоваться для генерации случайных чисел. Если не предоставлено, используется случайное. UInt или Int.
Возвращаемое значение
- Массив с перемешанными элементами.
Детали реализации
Эта функция не будет материализовывать константы.
Примеры
В этом примере arrayShuffle
используется без предоставления seed
, и, следовательно, будет генерировать его случайным образом.
Запрос:
Примечание: при использовании ClickHouse Fiddle точный ответ может отличаться из-за случайного характера функции.
Результат:
В этом примере arrayShuffle
предоставляется seed
, что позволит получить стабильные результаты.
Запрос:
Результат:
arrayPartialShuffle
Учитывая входной массив кардинальности N
, возвращает массив размером N, где элементы в диапазоне [1...limit]
перемешаны, а оставшиеся элементы в диапазоне (limit...n]
не перемешаны.
Синтаксис
Параметры
arr
: Массив размеромN
, который нужно частично перемешать. Array.limit
(необязательно): Число, ограничивающее количество обменов элементов в диапазоне[1..N]
. UInt или Int.seed
(необязательно): Значение семени, которое будет использоваться для генерации случайных чисел. Если не предоставлено, используется случайное. UInt или Int
Возвращаемое значение
- Массив с частично перемешанными элементами.
Детали реализации
Эта функция не будет материализовывать константы.
Значение limit
должно находиться в диапазоне [1..N]
. Значения за пределами этого диапазона эквивалентны выполнению полного arrayShuffle.
Примеры
Примечание: при использовании ClickHouse Fiddle точный ответ может отличаться из-за случайного характера функции.
Запрос:
Результат:
Порядок элементов сохраняется ([2,3,4,5], [7,8,9,10]
) за исключением двух перемешанных элементов [1, 6]
. Семя не предоставлено, поэтому функция выбирает его случайным образом.
В этом примере limit
увеличивается до 2
, и предоставляется значение seed
. Порядок
Запрос:
Порядок элементов сохраняется ([4, 5, 6, 7, 8], [10]
) за исключением четырех перемешанных элементов [1, 2, 3, 9]
.
Результат:
arrayUniq(arr, ...)
Если передан один аргумент, он подсчитывает количество различных элементов в массиве. Если передано несколько аргументов, он подсчитывает количество различных кортежей элементов по соответствующим позициям в нескольких массивах.
Если вы хотите получить список уникальных элементов в массиве, вы можете использовать arrayReduce('groupUniqArray', arr).
arrayJoin(arr)
Специальная функция. Смотрите раздел "Функция ArrayJoin".
arrayDifference
Вычисляет массив разностей между соседними элементами массива. Первый элемент результирующего массива будет 0, второй — a[1] - a[0]
, третий — a[2] - a[1]
и так далее. Тип элементов в результирующем массиве определяется правилами вывода типов для вычитания (например, UInt8
- UInt8
= Int16
).
Синтаксис
Аргументы
array
– Array.
Возвращаемые значения
Возвращает массив разностей между соседними элементами массива. UInt*, Int*, Float*.
Пример
Запрос:
Результат:
Пример переполнения из-за типа результата Int64:
Запрос:
Результат:
arrayDistinct
Принимает массив, возвращает массив, содержащий только отличающиеся элементы.
Синтаксис
Аргументы
array
– Array.
Возвращаемые значения
Возвращает массив, содержащий отличающиеся элементы.
Пример
Запрос:
Результат:
arrayEnumerateDense
Возвращает массив того же размера, что и исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве.
Синтаксис
Пример
Запрос:
Результат:
arrayEnumerateDenseRanked
Возвращает массив того же размера, что и исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве. Позволяет перечислять многомерный массив с возможностью указать, насколько глубоко искать внутри массива.
Синтаксис
Параметры
clear_depth
: Перечислять элементы на указанном уровне отдельно. Положительное целое число, меньшее или равноеmax_arr_depth
.arr
: N-мерный массив для перечисления. Array.max_array_depth
: Максимальная эффективная глубина. Положительное целое число, меньшее или равное глубинеarr
.
Пример
С clear_depth=1
и max_array_depth=1
результат идентичен тому, что дает arrayEnumerateDense.
Запрос:
Результат:
В этом примере arrayEnumerateDenseRanked
используется для получения массива, указывающего, для каждого элемента многомерного массива, какова его позиция среди элементов одного и того же значения. Для первой строки переданного массива, [10, 10, 30, 20]
, соответствующая первая строка результата — [1, 1, 2, 3]
, указывая, что 10
является первым встреченным числом на позициях 1 и 2, 30
— вторым встреченным числом на позиции 3, а 20
третьим встреченным числом на позиции 4. Для второй строки, [40, 50, 10, 30]
, соответствующая вторая строка результата — [4, 5, 1, 2]
, указывая, что 40
и 50
являются четвертым и пятым встреченными числами на позициях 1 и 2 этой строки, а другой 10
(первое встретившееся число) находится на позиции 3 и 30
(второе встреченное число) находится на последней позиции.
Запрос:
Результат:
Изменение clear_depth=2
приводит к тому, что перечисление происходит отдельно для каждой строки заново.
Запрос:
Результат:
arrayUnion
Принимает несколько массивов и возвращает массив, содержащий все элементы, которые присутствуют в одном из исходных массивов. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов разных типов.
Возвращаемое значение
- Array с отличающимися элементами из исходных массивов.
Пример
Запрос:
Результат:
arrayIntersect
Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов разных типов.
Возвращаемое значение
- Array с уникальными элементами, присутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arraySymmetricDifference
Принимает несколько массивов и возвращает массив с элементами, которые отсутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Симметрическая разность более чем двух множеств математически определена как множество всех входных элементов, которые возникают в нечетном числе входных множеств.
В отличие от этого, функция arraySymmetricDifference
просто возвращает множество входных элементов, которые отсутствуют во всех входных множествах.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов разных типов.
Возвращаемое значение
- Array с уникальными элементами, отсутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arrayJaccardIndex
Возвращает индекс Жаккара для двух массивов.
Пример
Запрос:
Результат:
arrayReduce
Применяет агрегатную функцию к элементам массива и возвращает ее результат. Имя агрегатной функции передается в виде строки в одинарных кавычках 'max'
, 'sum'
. При использовании параметрических агрегатных функций параметр указывается после имени функции в скобках 'uniqUpTo(6)'
.
Синтаксис
Аргументы
agg_func
— Имя агрегатной функции, которая должна быть константной строкой.arr
— Любое количество array столбцов, передаваемых в качестве параметров агрегатной функции.
Возвращаемое значение
Пример
Запрос:
Результат:
Если агрегатная функция принимает несколько аргументов, тогда эта функция должна применяться к нескольким массивам одинакового размера.
Запрос:
Результат:
Пример с параметрической агрегатной функцией:
Запрос:
Результат:
Смотрите также
arrayReduceInRanges
Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив, содержащий результат для каждого диапазона. Функция вернет такой же результат, как и несколько arrayReduce(agg_func, arraySlice(arr1, index, length), ...)
.
Синтаксис
Аргументы
agg_func
— Имя агрегатной функции, которая должна быть константной строкой.ranges
— Диапазоны для агрегации, которые должны быть массивом кортежей, содержащих индекс и длину каждого диапазона.arr
— Любое количество Array столбцов в качестве параметров агрегатной функции.
Возвращаемое значение
- Массив, содержащий результаты агрегатной функции по указанным диапазонам. Array.
Пример
Запрос:
Результат:
arrayFold
Применяет лямбда-функцию к одному или нескольким массивам одинакового размера и собирает результат в аккумулятор.
Синтаксис
Пример
Запрос:
Результат:
Пример с последовательностью Фибоначчи
Смотрите также
arrayReverse
Возвращает массив того же размера, что и оригинальный массив, содержащий элементы в обратном порядке.
Синтаксис
Пример:
reverse(arr)
Синоним для "arrayReverse"
arrayFlatten
Преобразует массив массивов в плоский массив.
Функция:
- Применяется к массивам любой глубины вложенности.
- Не изменяет массивы, которые уже плоские.
Плоский массив содержит все элементы из всех исходных массивов.
Синтаксис
Псевдоним: flatten
.
Параметры
array_of_arrays
— Array массивов. Например,[[1,2,3], [4,5]]
.
Примеры
arrayCompact
Удаляет последовательные дублирующиеся элементы из массива. Порядок значений в результате определяется порядком в исходном массиве.
Синтаксис
Аргументы
arr
— array, который нужно проверить.
Возвращаемое значение
Массив без дублирующихся значений. Array.
Пример
Запрос:
Результат:
arrayZip
Объединяет несколько массивов в один массив. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов разных типов. Все входные массивы должны иметь одинаковый размер.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже совпадают с типами входных массивов и находятся в том же порядке, в котором переданы массивы. Array.
Пример
Запрос:
Результат:
arrayZipUnaligned
Объединяет несколько массивов в один массив, позволяя несогласованные массивы. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов разных типов.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже совпадают с типами входных массивов и находятся в том же порядке, в котором переданы массивы. Array. Если массивы имеют разный размер, более короткие массивы будут дополнены значениями
null
.
Пример
Запрос:
Результат:
arrayROCAUC
Вычисляет площадь под кривой характеристик получателя (ROC). ROC-кривая создается путем построения графика доли истинных положительных результатов (TPR) по оси y и доли ложных положительных результатов (FPR) по оси x по всем порогам. Результирующее значение варьируется от 0 до 1, при этом более высокое значение указывает на лучшую производительность модели. ROC AUC (также известная просто как AUC) — это концепция в машинном обучении. Для получения дополнительной информации смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayAUC
Аргументы
arr_scores
— Оценки, которые модель предсказания дает. Array целых чисел или чисел с плавающей запятой.arr_labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Array целых чисел или перечислений.scale
— Определяет, возвращать ли нормализованную площадь. Если ложь, возвращает площадь под кривой TP (истинные положительные) x FP (ложные положительные) вместо этого. Значение по умолчанию: истина. Bool. Необязательный.arr_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
: Общее количество отрицательных образцов в наборе данных.
Когда используется arr_partial_offsets
, arr_scores
и arr_labels
должны быть только частью всего набора данных, содержащей интервал оценок.
Набор данных должен делиться на смежные разделы, каждый из которых содержит подмножество данных, оценки которых находятся в определенном диапазоне.
Например:
- Один раздел может содержать все оценки в диапазоне [0, 0.5).
- Другой раздел может содержать оценки в диапазоне [0.5, 1.0].
Возвращаемое значение
Возвращает площадь под кривой характеристик получателя (ROC). Float64.
Пример
Запрос:
Результат:
arrayAUCPR
Вызывает площадь под кривой precision-recall (PR). Кривая точности-отзыва создается путем отображения точности по оси y и отзыва по оси x для всех порогов. Результирующее значение варьируется от 0 до 1, где более высокое значение указывает на лучшую производительность модели. PR AUC особенно полезен для несбалансированных наборов данных, предоставляя более четкое сравнение производительности по сравнению с ROC AUC в таких случаях. Для получения более подробной информации, пожалуйста, смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayPRAUC
Аргументы
arr_scores
— Оценки, которые возвращает модель предсказания. Массив Целых чисел или Чисел с плавающей точкой.arr_labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Массив Целых чисел или Перечислений.arr_partial_offsets
— Необязательный. Массив из трех неотрицательных целых чисел для вычисления частичной площади под кривой 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.
Пример
Запрос:
Результат:
arrayMap(func, arr1, ...)
Возвращает массив, полученный из исходных массивов путем применения func(arr1[i], ..., arrN[i])
для каждого элемента. Массивы arr1
... arrN
должны иметь одинаковое количество элементов.
Примеры:
Следующий пример показывает, как создать кортеж элементов из разных массивов:
Обратите внимание, что arrayMap
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayFilter(func, arr1, ...)
Возвращает массив, содержащий только элементы в arr1
, для которых func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0.
Примеры:
Обратите внимание, что arrayFilter
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayFill(func, arr1, ...)
Сканирует arr1
от первого элемента до последнего и заменяет arr1[i]
на arr1[i - 1]
, если func(arr1[i], ..., arrN[i])
возвращает 0. Первый элемент arr1
заменяться не будет.
Примеры:
Обратите внимание, что arrayFill
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayReverseFill(func, arr1, ...)
Сканирует arr1
от последнего элемента до первого и заменяет arr1[i]
на arr1[i + 1]
, если func(arr1[i], ..., arrN[i])
возвращает 0. Последний элемент arr1
заменяться не будет.
Примеры:
Обратите внимание, что arrayReverseFill
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arraySplit(func, arr1, ...)
Разделяет arr1
на несколько массивов. Когда func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0, массив будет разделен с левой стороны элемента. Массив не будет разделен перед первым элементом.
Примеры:
Обратите внимание, что arraySplit
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayReverseSplit(func, arr1, ...)
Разделяет arr1
на несколько массивов. Когда func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0, массив будет разделен с правой стороны элемента. Массив не будет разделен после последнего элемента.
Примеры:
Обратите внимание, что arrayReverseSplit
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayExists([func,] arr1, ...)
Возвращает 1, если в arr
есть по крайней мере один элемент, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0. В противном случае возвращает 0.
Обратите внимание, что arrayExists
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
arrayAll([func,] arr1, ...)
Возвращает 1, если func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0, для всех элементов массивов. В противном случае возвращает 0.
Обратите внимание, что arrayAll
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
arrayFirst(func, arr1, ...)
Возвращает первый элемент в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0.
arrayFirstOrNull
Возвращает первый элемент в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0, иначе возвращает NULL
.
Синтаксис
Параметры
func
: Лямбда-функция. Лямбда-функция.arr1
: Массив для обработки. Массив.
Возвращаемое значение
- Первый элемент в переданном массиве.
- В противном случае возвращает
NULL
Детали реализации
Обратите внимание, что arrayFirstOrNull
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
Пример
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayLast(func, arr1, ...)
Возвращает последний элемент в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0.
Обратите внимание, что arrayLast
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayLastOrNull
Возвращает последний элемент в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0, иначе возвращает NULL
.
Синтаксис
Параметры
func
: Лямбда-функция. Лямбда-функция.arr1
: Массив для обработки. Массив.
Возвращаемое значение
- Последний элемент в переданном массиве.
- В противном случае возвращает
NULL
Детали реализации
Обратите внимание, что arrayLastOrNull
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
Пример
Запрос:
Результат:
Запрос:
Результат:
arrayFirstIndex(func, arr1, ...)
Возвращает индекс первого элемента в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0.
Обратите внимание, что arrayFirstIndex
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayLastIndex(func, arr1, ...)
Возвращает индекс последнего элемента в массиве arr1
, для которого func(arr1[i], ..., arrN[i])
возвращает что-то, отличное от 0.
Обратите внимание, что arrayLastIndex
является функцией высшего порядка. Вы должны передать ей лямбда-функцию в качестве первого аргумента, и ее нельзя опустить.
arrayMin
Возвращает минимум элементов в исходном массиве.
Если указана функция func
, возвращает минимум элементов, преобразованных этой функцией.
Обратите внимание, что arrayMin
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
Синтаксис
Аргументы
Возвращаемое значение
- Минимум значений функции (или минимум массива).
Если указана func
, тогда возвращаемый тип соответствует типу возвращаемого значения func
, в противном случае он соответствует типу элементов массива.
Примеры
Запрос:
Результат:
Запрос:
Результат:
arrayMax
Возвращает максимум элементов в исходном массиве.
Если указана функция func
, возвращает максимум элементов, преобразованных этой функцией.
Обратите внимание, что arrayMax
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
Синтаксис
Аргументы
Возвращаемое значение
- Максимум значений функции (или максимум массива).
Если указана func
, тогда возвращаемый тип соответствует типу возвращаемого значения func
, в противном случае он соответствует типу элементов массива.
Примеры
Запрос:
Результат:
Запрос:
Результат:
arraySum
Возвращает сумму элементов в исходном массиве.
Если указана функция func
, возвращает сумму элементов, преобразованных этой функции.
Обратите внимание, что arraySum
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
Синтаксис
Аргументы
Возвращаемое значение
- Сумма значений функции (или сумма массива).
Тип возвращаемого значения:
- Для десятичных чисел в исходном массиве (или для преобразованных значений, если
func
указана) — Decimal128. - Для чисел с плавающей точкой — Float64.
- Для беззнаковых чисел — UInt64.
- Для знаковых чисел — Int64.
Примеры
Запрос:
Результат:
Запрос:
Результат:
arrayAvg
Возвращает среднее значение элементов в исходном массиве.
Если указана функция func
, возвращает среднее значение элементов, преобразованных этой функцией.
Обратите внимание, что arrayAvg
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
Синтаксис
Аргументы
Возвращаемое значение
- Среднее значение функций (или среднее значение массива). Float64.
Примеры
Запрос:
Результат:
Запрос:
Результат:
arrayCumSum([func,] arr1, ...)
Возвращает массив частичных (накопительных) сумм элементов в исходном массиве arr1
. Если указана func
, тогда сумма вычисляется с помощью применения func
к arr1
, arr2
, ..., arrN
, т.е. func(arr1[i], ..., arrN[i])
.
Синтаксис
Аргументы
arr
— Массив числовых значений.
Возвращаемое значение
Пример:
Обратите внимание, что arrayCumSum
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
arrayCumSumNonNegative([func,] arr1, ...)
То же самое, что и arrayCumSum
, возвращает массив частичных (накопительных) сумм элементов в исходном массиве. Если указана func
, тогда сумма вычисляется с помощью применения func
к arr1
, arr2
, ..., arrN
, т.е. func(arr1[i], ..., arrN[i])
. В отличие от arrayCumSum
, если текущая накопительная сумма меньше 0, она заменяется на 0.
Синтаксис
Аргументы
arr
— Массив числовых значений.
Возвращаемое значение
Обратите внимание, что arraySumNonNegative
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.
arrayProduct
Умножает элементы массива.
Синтаксис
Аргументы
arr
— Массив числовых значений.
Возвращаемое значение
- Произведение элементов массива. Float64.
Примеры
Запрос:
Результат:
Запрос:
Тип возвращаемого значения всегда Float64. Результат:
arrayRotateLeft
Поворачивает массив влево на указанное количество элементов. Если количество элементов отрицательное, массив поворачивается вправо.
Синтаксис
Аргументы
arr
— Массив.n
— Количество элементов для поворота.
Возвращаемое значение
- Массив, повёрнутый влево на указанное количество элементов. Массив.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayRotateRight
Поворачивает массив вправо на указанное количество элементов. Если количество элементов отрицательное, массив поворачивается влево.
Синтаксис
Аргументы
arr
— Массив.n
— Количество элементов для поворота.
Возвращаемое значение
- Массив, повёрнутый вправо на указанное количество элементов. Массив.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayShiftLeft
Сдвигает массив влево на указанное количество элементов. Новые элементы заполняются предоставленным аргументом или значением по умолчанию для типа элемента массива. Если количество элементов отрицательное, массив сдвигается вправо.
Синтаксис
Аргументы
arr
— Массив.n
— Количество элементов для сдвига.default
— Необязательный. Значение по умолчанию для новых элементов.
Возвращаемое значение
- Массив, сдвинутый влево на указанное количество элементов. Массив.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayShiftRight
Сдвигает массив вправо на указанное количество элементов. Новые элементы заполняются предоставленным аргументом или значением по умолчанию для типа элемента массива. Если количество элементов отрицательное, массив сдвигается влево.
Синтаксис
Аргументы
arr
— Массив.n
— Количество элементов для сдвига.default
— Необязательный. Значение по умолчанию для новых элементов.
Возвращаемое значение
- Массив, сдвинутый вправо на указанное количество элементов. Массив.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayRandomSample
Функция arrayRandomSample
возвращает подмассив с samples
-количеством случайных элементов из входного массива. Если samples
превышает размер входного массива, размер выборки ограничивается размером массива, т.е. возвращаются все элементы массива, но их порядок не гарантируется. Функция может обрабатывать как плоские массивы, так и вложенные массивы.
Синтаксис
Аргументы
arr
— Входной массив, из которого нужно выбрать элементы. (Array(T))samples
— Количество элементов, которые нужно включить в случайную выборку (UInt*)
Возвращаемое значение
- Массив, содержащий случайную выборку элементов из входного массива. Array.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
arrayNormalizedGini
Вычисляет нормализованный коэффициент Джини.
Синтаксис
Аргументы
Возвращаемое значение
- Кортеж, содержащий коэффициенты Джини предсказанных значений, коэффициент Джини нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух коэффициентов Джини).
Примеры
Запрос:
Результат:
arrayLevenshteinDistance
Вычисляет расстояние Левенштейна для двух массивов.
Синтаксис
Аргументы
from
— первый массивto
— второй массив
Возвращаемое значение
- Расстояние Левенштейна между первым и вторым массивами
Примеры
Запрос:
Результат:
arrayLevenshteinDistanceWeighted
Вычисляет расстояние Левенштейна для двух массивов с пользовательскими весами для каждого элемента. Количество элементов массива и его веса должны совпадать.
Синтаксис
Аргументы
from
— первый массивto
— второй массивfrom_weights
— веса для первого массиваto_weights
— веса для второго массива
Возвращаемое значение
- Расстояние Левенштейна между первым и вторым массивами с пользовательскими весами для каждого элемента
Примеры
Запрос:
Результат:
arraySimilarity
Вычисляет сходство массивов от 0 до 1 на основе взвешенного расстояния Левенштейна. Принимает те же аргументы, что и функция arrayLevenshteinDistanceWeighted
.
Синтаксис
Аргументы
from
— первый массивto
— второй массивfrom_weights
— веса для первого массиваto_weights
— веса для второго массива
Возвращаемое значение
- Сходство двух массивов на основе взвешенного расстояния Левенштейна
Примеры
Запрос:
Результат:
Distance functions
Все поддерживаемые функции описаны в документации по функции расстояния.