Функции массива
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
Возвращает пустой массив Date.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
emptyArrayDateTime
Возвращает пустой массив DateTime.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayString
Возвращает пустой массив String.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
Пустой массив.
Примеры
Запрос:
Результат:
emptyArrayToSingle
Принимает пустой массив и возвращает массив с одним элементом, который равен значению по умолчанию.
range(end), range([start, ] end [, step])
Возвращает массив чисел от start
до end - 1
с шагом step
. Поддерживаемые типы: UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64.
Синтаксис
Аргументы
start
— Первый элемент массива. Необязательный, обязательный, если используетсяstep
. Значение по умолчанию: 0.end
— Число, перед которым создается массив. Обязательный.step
— Определяет шаг инкремента между каждым элементом в массиве. Необязательный. Значение по умолчанию: 1.
Возвращаемое значение
- Массив чисел от
start
доend - 1
с шагомstep
.
Детали реализации
- Все аргументы
start
,end
,step
должны быть ниже следующих типов:UInt8
,UInt16
,UInt32
,UInt64
,Int8
,Int16
,Int32
,Int64
, а также элементы возвращаемого массива, тип которого является суперклассом всех аргументов. - Исключение выбрасывается, если запрос возвращает массивы с общей длиной, превышающей количество элементов, указанное настройкой function_range_max_elements_in_block.
- Возвращает Null, если любой из аргументов имеет тип Nullable(Nothing). Исключение выбрасывается, если любой из аргументов имеет значение Null (Nullable(T) тип).
Примеры
Запрос:
Результат:
array(x1, ...), оператор [x1, ...]
Создает массив из аргументов функции. Аргументы должны быть константами и иметь типы с наименьшим общим типом. Должен быть передан хотя бы один аргумент, поскольку в противном случае неясно, какой тип массива создать. То есть, вы не можете использовать эту функцию для создания пустого массива (для этого воспользуйтесь функцией 'emptyArray*', описанной выше). Возвращает результат типа 'Array(T)', где 'T' — наименьший общий тип среди переданных аргументов.
arrayWithConstant(length, elem)
Создает массив длиной length
, заполненный константой elem
.
arrayConcat
Объединяет массивы, переданные в качестве аргументов.
Аргументы
arrays
– Произвольное количество аргументов типа Array.
Пример
arrayElement(arr, n), оператор arr[n]
Получает элемент с индексом n
из массива arr
. n
может быть любого целочисленного типа.
Индексы в массиве начинаются с одного.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, номер которого считается с конца. Например, arr[-1]
— это последний элемент в массиве.
Если индекс выходит за пределы массива, возвращается некоторое значение по умолчанию (0 для чисел, пустая строка для строк и т. д.), за исключением случая с не константным массивом и константным индексом 0 (в этом случае будет ошибка Индексы массива начинаются с 1
).
has(arr, elem)
Проверяет, содержит ли массив 'arr' элемент 'elem'. Возвращает 0, если элемент не в массиве, или 1, если он есть.
NULL
обрабатывается как значение.
arrayElementOrNull(arr, n)
Получает элемент с индексом n
из массива arr
. n
может быть любого целочисленного типа.
Индексы в массиве начинаются с одного.
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, номер которого считается с конца. Например, arr[-1]
— это последний элемент в массиве.
Если индекс выходит за пределы массива, возвращается NULL
вместо значения по умолчанию.
Примеры
hasAll
Проверяет, является ли один массив подмножеством другого.
Аргументы
set
– Массив любого типа с набором элементов.subset
– Массив любого типа, который делит общий суперкласс сset
, содержащий элементы, которые должны быть проверены как подмножествоset
.
Возвращаемые значения
1
, еслиset
содержит все элементы изsubset
.0
, в противном случае.
Вызывает исключение NO_COMMON_TYPE
, если элементы set и subset не делят общий суперкласс.
Особые свойства
- Пустой массив является подмножеством любого массива.
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 = префикс + array2 + суффикс
.
Другими словами, функции проверяют, содержатся ли все элементы 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, конец_массива]
.
Пример
Элементы массива, установленные в NULL
, обрабатываются как обычные значения.
arrayShingles
Генерирует массив "шинглов", т. е. последовательных подмассивов с заданной длиной входного массива.
Синтаксис
Аргументы
array
— Входной массив Array.length
— Длина каждого шингла.
Возвращаемое значение
- Массив сгенерированных шинглов. Array.
Примеры
Запрос:
Результат:
arraySort([func,] arr, ...)
Сортирует элементы массива arr
в порядке возрастания. Если указана функция func
, порядок сортировки определяется результатом функции func
, примененной к элементам массива. Если func
принимает несколько аргументов, функции arraySort
передаются несколько массивов, которые будут соответствовать аргументам func
. Примеры приведены в конце описания arraySort
.
Пример сортировки целых чисел:
Пример сортировки строк:
Рассмотрим порядок сортировки для значений NULL
, NaN
и Inf
:
- Значения
-Inf
стоят первыми в массиве. - Значения
NULL
стоят последними в массиве. - Значения
NaN
стоят прямо передNULL
. - Значения
Inf
стоят прямо передNaN
.
Обратите внимание, что arraySort
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента. В этом случае порядок сортировки определяется результатом лямбда-функции, примененной к элементам массива.
Рассмотрим следующий пример:
Для каждого элемента исходного массива лямбда-функция возвращает ключ сортировки, то есть [1 –> -1, 2 –> -2, 3 –> -3]. Поскольку функция arraySort
сортирует ключи в порядке возрастания, результат будет [3, 2, 1]. Таким образом, лямбда-функция (x) –> -x
устанавливает убывающий порядок при сортировке.
Лямбда-функция может принимать несколько аргументов. В этом случае вам нужно передать функции arraySort
несколько массивов одинаковой длины, которые будут соответствовать аргументам лямбда-функции. Результирующий массив будет состоять из элементов первого входного массива; элементы следующих входных массивов будут определять ключи сортировки. Например:
Здесь элементы, переданные во втором массиве ([2, 1]), определяют ключ сортировки для соответствующего элемента из исходного массива (['hello', 'world']), то есть ['hello' –> 2, 'world' –> 1]. Поскольку лямбда-функция не использует x
, фактические значения исходного массива не влияют на порядок в результате. Таким образом, 'hello' будет вторым элементом в результате, а 'world' - первым.
Другие примеры приведены ниже.
Для повышения эффективности сортировки используется Шварцианская трансформация.
arrayPartialSort([func,] limit, arr, ...)
Тот же, что и arraySort
, с дополнительным аргументом limit
, позволяющим частичную сортировку. Возвращает массив такого же размера, как и исходный массив, где элементы в диапазоне [1..limit]
отсортированы в порядке возрастания. Оставшиеся элементы (limit..N]
будут содержать элементы в неопределенном порядке.
arrayReverseSort
Сортирует элементы массива arr
в порядке убывания. Если указана функция func
, arr
сортируется в соответствии с результатом функции func
, примененной к элементам массива, а затем отсортированный массив инвертируется. Если func
принимает несколько аргументов, функции arrayReverseSort
передаются несколько массивов, которые будут соответствовать аргументам func
. Примеры приведены в конце описания arrayReverseSort
.
Синтаксис
Пример сортировки целых чисел:
Пример сортировки строк:
Рассмотрим порядок сортировки для значений NULL
, NaN
и Inf
:
- Значения
Inf
стоят первыми в массиве. - Значения
NULL
стоят последними в массиве. - Значения
NaN
стоят прямо передNULL
. - Значения
-Inf
стоят прямо передNaN
.
Обратите внимание, что arrayReverseSort
является функцией высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента. Пример показан ниже.
Массив сортируется следующим образом:
- Изначально, исходный массив ([1, 2, 3]) сортируется в соответствии с результатом лямбда-функции, примененной к элементам массива. Результат – массив [3, 2, 1].
- Массив, полученный на предыдущем шаге, инвертируется. Таким образом, окончательный результат – [1, 2, 3].
Лямбда-функция может принимать несколько аргументов. В этом случае вам нужно передать функции arrayReverseSort
несколько массивов одинаковой длины, которые будут соответствовать аргументам лямбда-функции. Результирующий массив будет состоять из элементов первого входного массива; элементы следующих входных массивов будут определять ключи сортировки. Например:
В этом примере массив сортируется следующим образом:
- Изначально, исходный массив (['hello', 'world']) сортируется в соответствии с результатом лямбда-функции, примененной к элементам массивов. Элементы, переданные во втором массиве ([2, 1]), определяют ключи сортировки для соответствующих элементов из исходного массива. Результат – массив ['world', 'hello'].
- Массив, отсортированный на предыдущем шаге, инвертируется. Таким образом, окончательный результат будет ['hello', 'world'].
Другие примеры ниже.
arrayPartialReverseSort([func,] limit, arr, ...)
Тот же, что и arrayReverseSort
, с дополнительным аргументом limit
, позволяющим частичную сортировку. Возвращает массив такого же размера, как и исходный массив, где элементы в диапазоне [1..limit]
отсортированы в порядке убывания. Оставшиеся элементы (limit..N]
будут содержать элементы в неопределенном порядке.
arrayShuffle
Возвращает массив такого же размера, как и исходный массив, содержащий элементы в перемешанном порядке. Элементы переупорядочиваются таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
Синтаксис
Параметры
arr
: Массив для частичной перетасовки. Array.seed
(необязательный): семя, используемое для генерации псевдослучайных чисел. Если не указано, будет использовано случайное значение. UInt или Int.
Возвращаемое значение
- Массив с перемешанными элементами.
Детали реализации
Эта функция не будет материализовывать константы.
Примеры
В этом примере arrayShuffle
используется без указания seed
, поэтому она будет генерировать его случайно.
Запрос:
Примечание: при использовании ClickHouse Fiddle точный ответ может отличаться из-за случайного характера функции.
Результат:
В этом примере arrayShuffle
получает значение seed
, и результаты будут стабильными.
Запрос:
Результат:
arrayPartialShuffle
Данный массив с кардинальностью N
возвращает массив размера N, где элементы в диапазоне [1...limit]
перемешаны, а остальные элементы в диапазоне (limit...n]
не изменение.
Синтаксис
Параметры
arr
: Массив размераN
, который необходимо частично перетасовать. Array.limit
(необязательный): Число, ограничивающее количество перестановок элементов, в пределах[1..N]
. UInt или Int.seed
(необязательный): Значение семени для генерации псевдослучайных чисел. Если не указано, будет выбрано случайное. UInt или Int.
Возвращаемое значение
- Массив с частично перемешанными элементами.
Детали реализации
Эта функция не будет материализовывать константы.
Значение limit
должно находиться в диапазоне [1..N]
. Значения вне этого диапазона эквивалентны полной arrayShuffle.
Примеры
Примечание: при использовании ClickHouse Fiddle точный ответ может отличаться из-за случайного характера функции.
Запрос:
Результат:
Порядок элементов сохраняется ([2,3,4,5], [7,8,9,10]
) за исключением двух перемешанных элементов [1, 6]
. Поскольку семя не указано, функция выбирает его случайно.
В этом примере значение limit
увеличивается до 2
, и задается значение seed
. Порядок
Запрос:
Порядок элементов сохраняется ([4, 5, 6, 7, 8], [10]
) за исключением четырех перемешанных элементов [1, 2, 3, 9]
.
Результат:
arrayUniq(arr, ...)
Если передан один аргумент, он считает количество различных элементов в массиве. Если передано несколько аргументов, он считает количество различных кортежей элементов на соответствующих позициях в нескольких массивах.
Если вы хотите получить список уникальных элементов в массиве, вы можете использовать arrayReduce('groupUniqArray', arr).
arrayJoin(arr)
Особая функция. См. раздел "Функция ArrayJoin".
arrayDifference
Вычисляет массив разностей между смежными элементами массива. Первый элемент результирующего массива будет 0, второй a[1] - a[0]
, третий a[2] - a[1]
и так далее. Тип элементов в результирующем массиве определяется правилами вывода типов для вычитания (например, UInt8
- UInt8
= Int16
).
Синтаксис
Аргументы
array
– Array.
Возвращаемые значения
Возвращает массив разностей между смежными элементами массива. UInt*, Int*, Float*.
Пример
Запрос:
Результат:
Пример переполнения из-за типа результата Int64:
Запрос:
Результат:
arrayDistinct
Принимает массив и возвращает массив, содержащий только уникальные элементы.
Синтаксис
Аргументы
array
– Array.
Возвращаемые значения
Возвращает массив, содержащий уникальные элементы.
Пример
Запрос:
Результат:
arrayEnumerateDense
Возвращает массив того же размера, что и исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве.
Синтаксис
Пример
Запрос:
Результат:
arrayEnumerateDenseRanked
Возвращает массив такого же размера, как и исходный массив, указывая, где каждый элемент впервые появляется в исходном массиве. Позволяет перечислять многомерный массив с возможностью указать, на какую глубину просматривать массив.
Синтаксис
Параметры
clear_depth
: Считывать элементы на указанном уровне отдельно. Положительное целое число, не превышающееmax_arr_depth
.arr
: N-мерный массив для перечисления. Array.max_array_depth
: Максимальная эффективная глубина. Положительное целое число, не превышающее глубинуarr
.
Пример
С clear_depth=1
и max_array_depth=1
результат идентичен тому, что бы вы получили при использовании arrayEnumerateDense.
Запрос:
Результат:
В этом примере arrayEnumerateDenseRanked
используется для получения массива, указывая, для каждого элемента многомерного массива, какое его положение среди элементов одного и того же значения. Для первой строки переданного массива, [10,10,30,20]
, соответствующей первой строкой результата будет [1,1,2,3]
, указывая, что 10
– это первое число, обнаруженное на позициях 1 и 2, 30
– второе число, обнаруженное на позиции 3 и 20
– третье число, обнаруженное на позиции 4. Для второй строки, [40, 50, 10, 30]
, соответствующей второй строкой результата будет [4,5,1,2]
, указывая, что 40
и 50
– это четвертое и пятое числа, обнаруженные на позициях 1 и 2 этой строки, что еще одно 10
(первое обнаруженное число) находится на позиции 3, а 30
(второе обнаруженное число) находится на последней позиции.
Запрос:
Результат:
Изменение clear_depth=2
приводит к тому, что перечисление происходит отдельно для каждой строки.
Запрос:
Результат:
arrayUnion
Принимает несколько массивов и возвращает массив, содержащий все элементы, присутствующие в одном из исходных массивов. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Array с уникальными элементами из исходных массивов.
Пример
Запрос:
Результат:
arrayIntersect
Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Array с уникальными элементами, присутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arraySymmetricDifference
Принимает несколько массивов и возвращает массив с элементами, которые не присутствуют во всех исходных массивах. Результат содержит только уникальные значения.
Симметричная разность более чем двух множеств математически определяется как множество всех входных элементов, которые встречаются в нечетном количестве входных множеств. В отличие от этого функция arraySymmetricDifference
просто возвращает множество входных элементов, которые не встречаются во всех входных множествах.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Array с уникальными элементами, отсутствующими во всех исходных массивах.
Пример
Запрос:
Результат:
arrayJaccardIndex
Возвращает индекс Жаккара двух массивов.
Пример
Запрос:
Результат:
arrayReduce
Применяет агрегатную функцию к элементам массива и возвращает ее результат. Название функции агрегации передается в виде строки в одинарных кавычках 'max'
, 'sum'
. При использовании параметрических агрегатных функций параметр указывается после имени функции в скобках 'uniqUpTo(6)'
.
Синтаксис
Аргументы
agg_func
— Название агрегатной функции, которая должна быть постоянной строкой.arr
— Любое количество столбцов типа array в качестве параметров агрегатной функции.
Возвращаемое значение
Пример
Запрос:
Результат:
Если агрегатная функция принимает несколько аргументов, то эта функция должна применяться к нескольким массивам одинакового размера.
Запрос:
Результат:
Пример с параметрической агрегатной функцией:
Запрос:
Результат:
См. также
arrayReduceInRanges
Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив, содержащий результат для каждого диапазона. Функция вернет тот же результат, что и несколько вызовов arrayReduce(agg_func, arraySlice(arr1, index, length), ...)
.
Синтаксис
Аргументы
agg_func
— Название агрегатной функции, которая должна быть постоянной строкой.ranges
— Диапазоны для агрегации, которые должны быть массивом кортежей, содержащих индекс и длину каждого диапазона.arr
— Любое количество колонок типа Array в качестве параметров агрегатной функции.
Возвращаемое значение
- Массив, содержащий результаты агрегатной функции по указанным диапазонам. Array.
Пример
Запрос:
Результат:
arrayFold
Применяет лямбда-функцию к одному или нескольким массивам одинакового размера и собирает результат в аккумулятор.
Синтаксис
Пример
Запрос:
Результат:
Пример с последовательностью Фибоначчи
См. также
arrayReverse
Возвращает массив такого же размера, как и исходный массив, содержащий элементы в обратном порядке.
Синтаксис
Пример:
reverse(arr)
Синоним для "arrayReverse"
arrayFlatten
Преобразует массив массивов в плоский массив.
Функция:
- Применяется к любому уровню вложенности массивов.
- Не изменяет массивы, которые уже плоские.
Развернутый массив содержит все элементы из всех исходных массивов.
Синтаксис
Псевдоним: flatten
.
Параметры
array_of_arrays
— Array массивов. Например,[[1,2,3], [4,5]]
.
Примеры
arrayCompact
Удаляет последовательные дублирующиеся элементы из массива. Порядок результирующих значений определяется порядком в исходном массиве.
Синтаксис
Аргументы
arr
— Массив array для проверки.
Возвращаемое значение
Массив без дубликатов. Array.
Пример
Запрос:
Результат:
arrayZip
Объединяет несколько массивов в один массив. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов различных типов. Все входные массивы должны быть одинакового размера.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и они расположены в том же порядке, что и массивы подаются. Array.
Пример
Запрос:
Результат:
arrayZipUnaligned
Объединяет несколько массивов в один массив, позволяя невыравненные массивы. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.
Синтаксис
Аргументы
arrN
— Array.
Функция может принимать любое количество массивов различных типов.
Возвращаемое значение
- Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и они расположены в том же порядке, что и массивы подаются. Array. Если массивы имеют разный размер, более короткие массивы будут дополнены значениями
null
.
Пример
Запрос:
Результат:
arrayROCAUC
Вычисляет площадь под кривой характеристик, принимающих значения (ROC). ROC-кривая создается путем нанесения истинной положительной доли (TPR) по оси Y и ложной положительной доли (FPR) по оси X под всеми порогами. Результирующее значение варьируется от 0 до 1, с более высоким значением, указывающим на более высокую производительность модели. ROC AUC (также известная как просто AUC) является концепцией в машинном обучении. Для получения дополнительной информации смотрите здесь, здесь и здесь.
Синтаксис
Псевдоним: arrayAUC
Аргументы
arr_scores
— Оценки, которые дает модель предсказания. Array целых чисел или Float.arr_labels
— Метки образцов, обычно 1 для положительного образца и 0 для отрицательного образца. Array целых чисел или Enums.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
]. 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 для отрицательного образца. Массив Целых чисел или Перечислений.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.
- Для unsigned чисел — 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
Вычисляет нормализованный коэффициент Джини.
Синтаксис
Аргументы
Возвращаемое значение
- Кортеж, содержащий коэффициенты Джини предсказанных значений, коэффициент Джини нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух коэффициентов Джини).
Примеры
Запрос:
Результат:
arrayLevenshteinDistance
Вычисляет расстояние Левенштейна для двух массивов.
Синтаксис
Аргументы
from
— первый массивto
— второй массив
Возвращаемое значение
- Расстояние Левенштейна между первым и вторым массивами
Примеры
Запрос:
Результат:
arrayLevenshteinDistanceWeighted
Вычисляет расстояние Левенштейна для двух массивов с пользовательскими весами для каждого элемента. Количество элементов для массива и его весов должно совпадать.
Синтаксис
Аргументы
from
— первый массивto
— второй массивfrom_weights
— веса для первого массиваto_weights
— веса для второго массива
Возвращаемое значение
- Расстояние Левенштейна между первым и вторым массивами с пользовательскими весами для каждого элемента
Примеры
Запрос:
Результат:
arraySimilarity
Вычисляет схожесть массивов от 0 до 1 на основе взвешенного расстояния Левенштейна. Принимает те же аргументы, что и функция arrayLevenshteinDistanceWeighted
.
Синтаксис
Аргументы
from
— первый массивto
— второй массивfrom_weights
— веса для первого массиваto_weights
— веса для второго массива
Возвращаемое значение
- Сходство двух массивов на основе взвешенного расстояния Левенштейна
Примеры
Запрос:
Результат:
Distance functions
Все поддерживаемые функции описаны в документации по функциям расстояния.