Функции Массивов
empty
Проверяет, является ли входной массив пустым.
Синтаксис
Массив считается пустым, если он не содержит никаких элементов.
Можно оптимизировать, включив настройку 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
Возвращает пустой массив Дата.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
emptyArrayDateTime
Возвращает пустой массив DateTime.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayString
Возвращает пустой массив строк.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
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 (в этом случае будет ошибка 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
, если элементы 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
встречается второй раз.
Запрос:
Результат:
Изменение 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, 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
: Массив для частичного перемешивания. Массив.seed
(необязательно): семя, которое будет использоваться для генерации случайных чисел. Если не указано, используется случайное. UInt или Int.
Возвращаемое значение
- Массив с перемешанными элементами.
Подробности реализации
Эта функция не будет материализовать константы.
Примеры
В этом примере arrayShuffle
используется без указания seed
и, следовательно, будет генерировать его случайным образом.
Запрос:
Примечание: при использовании ClickHouse Fiddle точный ответ может отличаться из-за случайного характера функции.
Результат:
В этом примере arrayShuffle
указан seed
, и он будет производить стабильные результаты.
Запрос:
Результат:
arrayPartialShuffle
Дает массив размера N
для входного массива, где элементы в диапазоне [1...limit]
перемешаны, а оставшиеся элементы в диапазоне (limit...n]
не перемешаны.
Синтаксис
Параметры
arr
: Массив размераN
для частичного перемешивания. Массив.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
– Массив.
Возвращаемые значения
Возвращает массив различий между соседними элементами массива. UInt*, Int*, Float*.
Пример
Запрос:
Результат:
Пример переполнения из-за типа результата Int64:
Запрос:
Результат:
arrayDistinct
Принимает массив, возвращает массив, содержащий толькоDistinct элементы.
Синтаксис
Аргументы
array
– Массив.
Возвращаемые значения
Возвращает массив, содержащийDistinct элементы.
Пример
Запрос:
Результат:
arrayEnumerateDense
Возвращает массив такого же размера, как исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве.
Синтаксис
Пример
Запрос:
Результат:
arrayEnumerateDenseRanked
Возвращает массив того же размера, что и исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве. Он позволяет перечисление многомерного массива с возможностью указать, насколько глубоко нужно смотреть внутри массива.
Синтаксис
Параметры
clear_depth
: Перечислять элементы на указанном уровне отдельно. Положительное Целое число меньше или равноmax_arr_depth
.arr
: N-мерный массив для перечисления. Массив.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
— Массив.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Массив с уникальными элементами из исходных массивов.
Пример
Запрос:
Результат:
arrayIntersect
Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN
— Массив.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Массив с уникальными элементами, присутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arraySymmetricDifference
Принимает несколько массивов и возвращает массив с элементами, которые отсутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Симметричная разность более чем двух множеств математически определена как множество всех входных элементов, которые встречаются в нечетном количестве входных множеств.
В отличие от этого, функция arraySymmetricDifference
просто возвращает множество входных элементов, которые не встречаются во всех входных множествах.
Синтаксис
Аргументы
arrN
— Массив.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Массив сDistinct элементами, отсутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arrayJaccardIndex
Возвращает индекс Жаккара для двух массивов.
Пример
Запрос:
Результат:
arrayReduce
Применяет агрегатную функцию к элементам массива и возвращает его результат. Имя агрегатной функции передается как строка в одиночных кавычках 'max'
, 'sum'
. При использовании параметрических агрегатных функций параметр указывается после имени функции в скобках 'uniqUpTo(6)'
.
Синтаксис
Аргументы
agg_func
— Имя агрегатной функции, которое должно быть постоянной строкой.arr
— Любое количество колонок типа массив в качестве параметров агрегатной функции.
Возвращаемое значение
Пример
Запрос:
Результат:
Если агрегатная функция принимает несколько аргументов, то эта функция должна применяться к нескольким массивам одинакового размера.
Запрос:
Результат:
Пример с параметрической агрегатной функцией:
Запрос:
Результат:
Смотрите также
arrayReduceInRanges
Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив, содержащий результат для каждого диапазона. Функция вернет тот же результат, что и несколько arrayReduce(agg_func, arraySlice(arr1, index, length), ...)
.
Синтаксис
Аргументы
agg_func
— Имя агрегатной функции, которое должно быть постоянной строкой.ranges
— Диапазоны для агрегирования, которые должны быть массивом кортежей, содержащих индекс и длину каждого диапазона.arr
— Любое количество колонок типа массив в качестве параметров агрегатной функции.
Возвращаемое значение
- Массив, содержащий результаты агрегатной функции по указанным диапазонам. Массив.
Пример
Запрос:
Результат:
arrayFold
Применяет лямбда-функцию к одному или нескольким массивам одинакового размера и собирает результат в аккумулятор.
Синтаксис
Пример
Запрос:
Результат:
Пример с последовательностью Фибоначчи
Смотрите также
arrayReverse
Возвращает массив такого же размера, как исходный массив, содержащий элементы в обратном порядке.
Синтаксис
Пример:
reverse(arr)
Синоним для "arrayReverse"
arrayFlatten
Преобразует массив массивов в плоский массив.
Функция:
- Применима к любой глубине вложенных массивов.
- Не изменяет, если массивы уже являются плоскими.
Отфильтрованный массив содержит все элементы из всех исходных массивов.
Синтаксис
Псевдоним: flatten
.
Параметры
array_of_arrays
— Массив массивов. Например,[[1,2,3], [4,5]]
.
Примеры
arrayCompact
Удаляет последовательные дубликаты элементов из массива. Порядок значений результата определяется порядком в исходном массиве.
Синтаксис
Аргументы
arr
— массив для проверки.
Возвращаемое значение
Массив без дубликатов. Массив.
Пример
Запрос:
Результат:
arrayZip
Объединяет несколько массивов в один массив. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в порядке, указанном в списке аргументов.
Синтаксис
Аргументы
arrN
— Массив.
Функция может принимать любое количество массивов различных типов. Все входные массивы должны быть одинакового размера.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и в том же порядке, в котором массивы были переданы. Массив.
Пример
Запрос:
Результат:
arrayZipUnaligned
Объединяет несколько массивов в один массив, позволяя использовать не выровненные массивы. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в порядке, указанном в списке аргументов.
Синтаксис
Аргументы
arrN
— Массив.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и в том же порядке, в котором массивы были переданы. Массив. Если массивы имеют разные размеры, более короткие массивы будут дополнены значениями
null
.
Пример
Запрос:
Результат:
arrayROCAUC
Вычисляет площадь под кривой операционной характеристики (ROC). Кривая ROC создается путем построения графика доли истинноположительных срабатываний (TPR) на оси y и доли ложноположительных срабатываний (FPR) на оси x для всех порогов. Результирующее значение колеблется от 0 до 1, более высокое значение указывает на лучшее качество модели. ROC AUC (также известная как просто AUC) является понятием в машинном обучении. Для получения более детальной информации смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayAUC
Аргументы
arr_scores
— Оценки, которые дает модель прогнозирования. Массив Целых чисел или Чисел с плавающей запятой.arr_labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Массив Целых чисел или Перечислений.scale
— Определяет, следует ли возвращать нормализованную площадь. Если значение false, возвращается площадь под TP (истинно положительными) x FP (ложноположительными) кривая вместо этого. Значение по умолчанию: true. Bool. Необязательный.arr_partial_offsets
— Массив из четырех неотрицательных целых чисел для вычисления частичной площади под кривой ROC (эквивалентно вертикальной полосе пространства ROC) вместо всей AUC. Эта опция полезна для распределенных вычислений ROC AUC. Массив должен содержать следующие элементы [higher_partitions_tp
,higher_partitions_fp
,total_positives
,total_negatives
]. Массив неотрицательных Целых чисел. Необязательный.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 для отрицательного образца. Массив Целых чисел или Перечислений.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.
- Для_signed чисел — 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
Все поддерживаемые функции описаны в документации по функциям расстояния.