Функции массивов
empty
Проверяет, является ли входной массив пустым.
Синтаксис
Массив считается пустым, если он не содержит никаких элементов.
Можно оптимизировать с помощью включения optimize_functions_to_subcolumns
setting. При optimize_functions_to_subcolumns = 1
функция читает только size0 подстолбец, вместо чтения и обработки всего столбца массива. Запрос SELECT empty(arr) FROM TABLE;
преобразуется в SELECT arr.size0 = 0 FROM TABLE;
.
Функция также работает для строк или UUID.
Аргументы
[x]
— Входной массив. Массив.
Возвращаемое значение
- Возвращает
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]
— Входной массив. Массив.
Возвращаемое значение
- Возвращает
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, ...), operator [x1, ...]
Создает массив из аргументов функции. Аргументы должны быть константами и иметь типы с наименьшим общим типом. Обязательно должно быть передано хотя бы одно значение, иначе не будет ясно, какой тип массива создать. То есть, вы не можете использовать эту функцию для создания пустого массива (для этого используйте функцию 'emptyArray*', описанную выше). Возвращает результат типа 'Array(T)', где 'T' — наименьший общий тип из переданных аргументов.
arrayWithConstant(length, elem)
Создает массив длины length
, заполненный константой elem
.
arrayConcat
Объединяет массивы, переданные в качестве аргументов.
Аргументы
arrays
– Произвольное количество аргументов типа Array.
Пример
arrayElement(arr, n), operator arr[n]
Получает элемент с индексом n
из массива arr
. n
должен иметь любой целочисленный тип.
Индексы в массиве начинаются с единицы.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, нумерованный с конца. Например, arr[-1]
— последний элемент в массиве.
Если индекс выходит за пределы массива, возвращается некоторое значение по умолчанию (0 для чисел, пустая строка для строк и т.д.), за исключением случая, когда массив не является константным, а индекс постоянный 0 (в этом случае будет ошибка Array indices are 1-based
).
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
, если элементы массива1 и массива2 не разделяют общий суперкласс.
Особые свойства
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
, если элементы массива1 и массива2 не разделяют общий суперкласс.
Особые свойства
- Функция вернет
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.
i
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, ..., длина (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-мерный массив для перечисления. Массив.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
встречается второй раз.
Запрос:
Результат:
При изменении clear_depth=2
результаты получаются с перечислением отдельных элементов для каждой строки.
Запрос:
Результат:
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, конец_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 создается путем нанесения на ось Y доли истинных положительных результатов (TPR) и на ось X доли ложных положительных результатов (FPR) для всех порогов. Полученное значение варьируется от 0 до 1, при этом более высокое значение указывает на лучшую производительность модели. ROC AUC (также известная просто как AUC) является понятием в машинном обучении. Для получения дополнительных сведений смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayAUC
Аргументы
arr_scores
— оценки, которые выдает модель прогнозирования. Array Целых чисел или Чисел с плавающей запятой.arr_labels
— метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Array Целых чисел или Перечислений.scale
— решает, следует ли возвращать нормализованную площадь. Если ложь, возвращает площадь под кривой TP (истинные положительные) x FP (ложные положительные) вместо этого. Значение по умолчанию: true. 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
Вычисляет площадь под кривой точности-отзыва (PR). Кривая точности-отзыва создается путем отображения точности по оси y и отзыва по оси x во всех пределах. Результирующее значение варьируется от 0 до 1, при этом более высокое значение указывает на лучшую производительность модели. PR AUC особенно полезен для несбалансированных наборов данных, обеспечивая более ясное сравнение производительности по сравнению с ROC AUC в таких случаях. Для получения дополнительных сведений смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayPRAUC
Аргументы
arr_scores
— Оценки, которые выдает модель прогноза. Массив Целых чисел или Чисел с плавающей запятой.arr_labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Массив Целых чисел или Enums.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
Вычисляет нормализованный коэффициент Джини.
Синтаксис
Аргументы
Возвращаемое значение
- Кортеж, содержащий коэффициенты Джини предсказанных значений, коэффициент Джини нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух коэффициентов Джини).
Примеры
Запрос:
Результат:
Distance functions
Все поддерживаемые функции описаны в документации по функциям расстояний.