Перейти к основному содержимому
Перейти к основному содержимому

Функции массива

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. Изначально, исходный массив ([1, 2, 3]) сортируется в соответствии с результатом лямбда-функции, примененной к элементам массива. Результат – массив [3, 2, 1].
  2. Массив, полученный на предыдущем шаге, инвертируется. Таким образом, окончательный результат – [1, 2, 3].

Лямбда-функция может принимать несколько аргументов. В этом случае вам нужно передать функции arrayReverseSort несколько массивов одинаковой длины, которые будут соответствовать аргументам лямбда-функции. Результирующий массив будет состоять из элементов первого входного массива; элементы следующих входных массивов будут определять ключи сортировки. Например:

В этом примере массив сортируется следующим образом:

  1. Изначально, исходный массив (['hello', 'world']) сортируется в соответствии с результатом лямбда-функции, примененной к элементам массивов. Элементы, переданные во втором массиве ([2, 1]), определяют ключи сортировки для соответствующих элементов из исходного массива. Результат – массив ['world', 'hello'].
  2. Массив, отсортированный на предыдущем шаге, инвертируется. Таким образом, окончательный результат будет ['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).

Синтаксис

Аргументы

Возвращаемые значения

Возвращает массив разностей между смежными элементами массива. UInt*, Int*, Float*.

Пример

Запрос:

Результат:

Пример переполнения из-за типа результата Int64:

Запрос:

Результат:

arrayDistinct

Принимает массив и возвращает массив, содержащий только уникальные элементы.

Синтаксис

Аргументы

Возвращаемые значения

Возвращает массив, содержащий уникальные элементы.

Пример

Запрос:

Результат:

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

Принимает несколько массивов и возвращает массив, содержащий все элементы, присутствующие в одном из исходных массивов. Результат содержит только уникальные значения.

Синтаксис

Аргументы

Функция может принимать любое количество массивов различных типов.

Возвращаемое значение

  • Array с уникальными элементами из исходных массивов.

Пример

Запрос:

Результат:

arrayIntersect

Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения.

Синтаксис

Аргументы

Функция может принимать любое количество массивов различных типов.

Возвращаемое значение

  • Array с уникальными элементами, присутствующими во всех исходных массивах.

Пример

Запрос:

Результат:

arraySymmetricDifference

Принимает несколько массивов и возвращает массив с элементами, которые не присутствуют во всех исходных массивах. Результат содержит только уникальные значения.

примечание

Симметричная разность более чем двух множеств математически определяется как множество всех входных элементов, которые встречаются в нечетном количестве входных множеств. В отличие от этого функция arraySymmetricDifference просто возвращает множество входных элементов, которые не встречаются во всех входных множествах.

Синтаксис

Аргументы

Функция может принимать любое количество массивов различных типов.

Возвращаемое значение

  • 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_arraysArray массивов. Например, [[1,2,3], [4,5]].

Примеры

arrayCompact

Удаляет последовательные дублирующиеся элементы из массива. Порядок результирующих значений определяется порядком в исходном массиве.

Синтаксис

Аргументы

arr — Массив array для проверки.

Возвращаемое значение

Массив без дубликатов. Array.

Пример

Запрос:

Результат:

arrayZip

Объединяет несколько массивов в один массив. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.

Синтаксис

Аргументы

Функция может принимать любое количество массивов различных типов. Все входные массивы должны быть одинакового размера.

Возвращаемое значение

  • Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и они расположены в том же порядке, что и массивы подаются. Array.

Пример

Запрос:

Результат:

arrayZipUnaligned

Объединяет несколько массивов в один массив, позволяя невыравненные массивы. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов.

Синтаксис

Аргументы

Функция может принимать любое количество массивов различных типов.

Возвращаемое значение

  • Массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже такие же, как и типы входных массивов, и они расположены в том же порядке, что и массивы подаются. 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.

Синтаксис

Параметры

Возвращаемое значение

  • Первый элемент в переданном массиве.
  • В противном случае возвращает NULL

Детали реализации

Обратите внимание, что arrayFirstOrNull является функцией высшего порядка. Вы должны передать ей лямбда-функцию как первый аргумент, и ее нельзя опустить.

Пример

Запрос:

Результат:

Запрос:

Результат:

Запрос:

Результат:

arrayLast(func, arr1, ...)

Возвращает последний элемент в массиве arr1, для которого func(arr1[i], ..., arrN[i]) возвращает что-то, отличное от 0.

Обратите внимание, что arrayLast является функцией высшего порядка. Вы должны передать ей лямбда-функцию как первый аргумент, и ее нельзя опустить.

arrayLastOrNull

Возвращает последний элемент в массиве arr1, для которого func(arr1[i], ..., arrN[i]) возвращает что-то, отличное от 0, в противном случае возвращает NULL.

Синтаксис

Параметры

Возвращаемое значение

  • Последний элемент в переданном массиве.
  • В противном случае возвращает 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]).

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает массив частичных сумм элементов в исходном массиве. UInt*, Int*, Float*.

Пример:

Обратите внимание, что arrayCumSum является функцией высшего порядка. Вы можете передать ей лямбда-функцию как первый аргумент.

arrayCumSumNonNegative([func,] arr1, ...)

Так же, как arrayCumSum, возвращает массив частичных (накопительных) сумм элементов в исходном массиве. Если указана func, то сумма вычисляется путем применения func к arr1, arr2, ..., arrN, т.е. func(arr1[i], ..., arrN[i]). В отличие от arrayCumSum, если текущая накопительная сумма меньше 0, она заменяется на 0.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает массив неотрицательных частичных сумм элементов в исходном массиве. UInt*, Int*, Float*.

Обратите внимание, что arraySumNonNegative является функцией высшего порядка. Вы можете передать ей лямбда-функцию как первый аргумент.

arrayProduct

Умножает элементы массива.

Синтаксис

Аргументы

Возвращаемое значение

  • Произведение элементов массива. 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

Вычисляет нормализованный коэффициент Джини.

Синтаксис

Аргументы

  • predicted — Предсказанные значения (Array(T))
  • label — Фактические значения (Array(T))

Возвращаемое значение

  • Кортеж, содержащий коэффициенты Джини предсказанных значений, коэффициент Джини нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух коэффициентов Джини).

Примеры

Запрос:

Результат:

arrayLevenshteinDistance

Вычисляет расстояние Левенштейна для двух массивов.

Синтаксис

Аргументы

  • from — первый массив
  • to — второй массив

Возвращаемое значение

  • Расстояние Левенштейна между первым и вторым массивами

Примеры

Запрос:

Результат:

arrayLevenshteinDistanceWeighted

Вычисляет расстояние Левенштейна для двух массивов с пользовательскими весами для каждого элемента. Количество элементов для массива и его весов должно совпадать.

Синтаксис

Аргументы

  • from — первый массив
  • to — второй массив
  • from_weights — веса для первого массива
  • to_weights — веса для второго массива

Возвращаемое значение

  • Расстояние Левенштейна между первым и вторым массивами с пользовательскими весами для каждого элемента

Примеры

Запрос:

Результат:

arraySimilarity

Вычисляет схожесть массивов от 0 до 1 на основе взвешенного расстояния Левенштейна. Принимает те же аргументы, что и функция arrayLevenshteinDistanceWeighted.

Синтаксис

Аргументы

  • from — первый массив
  • to — второй массив
  • from_weights — веса для первого массива
  • to_weights — веса для второго массива

Возвращаемое значение

  • Сходство двух массивов на основе взвешенного расстояния Левенштейна

Примеры

Запрос:

Результат:

Distance functions

Все поддерживаемые функции описаны в документации по функциям расстояния.