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

Функции кортежей

tuple

Функция, которая позволяет группировать несколько столбцов. Для столбцов C1, C2, ... с типами T1, T2, ..., она возвращает именованное Tuple(C1 T1, C2 T2, ...) тип кортеже, содержащий эти столбцы, если их имена уникальны и могут рассматриваться как идентификаторы без кавычек, в противном случае возвращается Tuple(T1, T2, ...). Выполнение функции не имеет стоимости. Кортежи обычно используются в качестве промежуточных значений для аргументов операторов IN или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу.

Функция реализует оператор (x, y, ...).

Синтаксис

tupleElement

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

Если второй аргумент — это число index, то это индекс столбца, начиная с 1. Если второй аргумент — это строка name, то это название элемента. Кроме того, мы можем предоставить третий необязательный аргумент, такой что, когда индекс выходит за пределы или элемент для имени не существует, возвращается значение по умолчанию вместо выброса исключения. Второй и третий аргументы, если предоставлены, должны быть константами. Выполнение функции не имеет стоимости.

Функция реализует операторы x.index и x.name.

Синтаксис

untuple

Выполняет синтаксическую замену элементов tuple в месте вызова.

Имена результирующих столбцов специфичны для реализации и могут изменяться. Не предполагается наличие конкретных имен столбцов после untuple.

Синтаксис

Вы можете использовать выражение EXCEPT, чтобы пропустить столбцы в результате запроса.

Аргументы

  • x — Функция tuple, столбец или кортеж элементов. Tuple.

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

  • Нет.

Примеры

Входная таблица:

Пример использования кортежа типа Tuple в качестве аргумента функции untuple:

Запрос:

Результат:

Пример использования выражения EXCEPT:

Запрос:

Результат:

Смотрите также

tupleHammingDistance

Возвращает Расстояние Хэмминга между двумя кортежами одинакового размера.

Синтаксис

Аргументы

  • tuple1 — Первый кортеж. Tuple.
  • tuple2 — Второй кортеж. Tuple.

Кортежи должны иметь одинаковый тип элементов.

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

  • Расстояние Хэмминга.
примечание

Тип результата рассчитывается так же, как и для арифметических функций, исходя из количества элементов во входных кортежах.

Примеры

Запрос:

Результат:

Может использоваться с функциями MinHash для обнаружения полудублирующих строк:

Результат:

tupleToNameValuePairs

Преобразует именованный кортеж в массив пар (имя, значение). Для Tuple(a T, b T, ..., c T) возвращает Array(Tuple(String, T), ...), в котором Strings представляют именованные поля кортежа, а T — это значения, связанные с этими именами. Все значения в кортеже должны быть одного типа.

Синтаксис

Аргументы

  • tuple — Именованный кортеж. Tuple с любыми типами значений.

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

  • Массив с парами (имя, значение). Array(Tuple(String, ...)).

Пример

Запрос:

Результат:

Можно преобразовать столбцы в строки, используя эту функцию:

Результат:

Если вы передадите простой кортеж функции, ClickHouse использует индексы значений в качестве их имен:

Результат:

tupleNames

Преобразует кортеж в массив имен столбцов. Для кортежа в форме Tuple(a T, b T, ...) он возвращает массив строк, представляющих именованные столбцы кортежа. Если элементы кортежа не имеют явных имен, их индексы будут использоваться в качестве имен столбцов.

Синтаксис

Аргументы

  • tuple — Именованный кортеж. Tuple с любыми типами значений.

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

  • Массив строк.

Тип: Array(Tuple(String, ...)).

Пример

Запрос:

Результат:

Если вы передадите простой кортеж функции, ClickHouse использует индексы столбцов в качестве их имен:

Результат:

tuplePlus

Вычисляет сумму соответствующих значений двух кортежей одинакового размера.

Синтаксис

Псевдоним: vectorSum.

Аргументы

  • tuple1 — Первый кортеж. Tuple.
  • tuple2 — Второй кортеж. Tuple.

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

  • Кортеж с суммой. Tuple.

Пример

Запрос:

Результат:

tupleMinus

Вычисляет вычитание соответствующих значений двух кортежей одинакового размера.

Синтаксис

Псевдоним: vectorDifference.

Аргументы

  • tuple1 — Первый кортеж. Tuple.
  • tuple2 — Второй кортеж. Tuple.

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

  • Кортеж с результатом вычитания. Tuple.

Пример

Запрос:

Результат:

tupleMultiply

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

Синтаксис

Аргументы

  • tuple1 — Первый кортеж. Tuple.
  • tuple2 — Второй кортеж. Tuple.

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

  • Кортеж с произведением. Tuple.

Пример

Запрос:

Результат:

tupleDivide

Вычисляет деление соответствующих значений двух кортежей одинакового размера. Обратите внимание, что деление на ноль вернёт inf.

Синтаксис

Аргументы

  • tuple1 — Первый кортеж. Tuple.
  • tuple2 — Второй кортеж. Tuple.

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

  • Кортеж с результатом деления. Tuple.

Пример

Запрос:

Результат:

tupleNegate

Вычисляет отрицание значений кортежа.

Синтаксис

Аргументы

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

  • Кортеж с результатом отрицания. Tuple.

Пример

Запрос:

Результат:

tupleMultiplyByNumber

Возвращает кортеж со всеми значениями, умноженными на число.

Синтаксис

Аргументы

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

  • Кортеж с умноженными значениями. Tuple.

Пример

Запрос:

Результат:

tupleDivideByNumber

Возвращает кортеж со всеми значениями, разделенными на число. Обратите внимание, что деление на ноль вернёт inf.

Синтаксис

Аргументы

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

  • Кортеж с разделёнными значениями. Tuple.

Пример

Запрос:

Результат:

tupleConcat

Объединяет кортежи, переданные в качестве аргументов.

Аргументы

  • tuples – Произвольное количество аргументов типа Tuple.

Пример

tupleIntDiv

Выполняет целочисленное деление кортежа числителей и кортежа делителей, и возвращает кортеж частных.

Синтаксис

Параметры

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • tuple_div: Кортеж значений делителей. Tuple числового типа.

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

  • Кортеж частных tuple_num и tuple_div. Tuple целых значений.

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

  • Если либо tuple_num, либо tuple_div содержат нецелочисленные значения, то результат вычисляется округлением до ближайшего целого для каждого нецелочисленного числителя или делителя.
  • Ошибка будет выброшена при делении на 0.

Примеры

Запрос:

Результат:

Запрос:

Результат:

tupleIntDivOrZero

Как и tupleIntDiv, выполняет целочисленное деление кортежа числителей и кортежа делителей, и возвращает кортеж частных. Он не выбрасывает ошибку для делителей равных 0, а вместо этого возвращает частное как 0.

Синтаксис

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • tuple_div: Кортеж значений делителей. Tuple числового типа.

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

  • Кортеж частных tuple_num и tuple_div. Tuple целых значений.
  • Возвращает 0 для частных, где делитель равен 0.

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

  • Если либо tuple_num, либо tuple_div содержат нецелочисленные значения, то результат вычисляется округлением до ближайшего целого для каждого нецелочисленного числителя или делителя, как в tupleIntDiv.

Примеры

Запрос:

Результат:

tupleIntDivByNumber

Выполняет целочисленное деление кортежа числителей на данный делитель, и возвращает кортеж частных.

Синтаксис

Параметры

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • div: Значение делителя. Числовое типа.

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

  • Кортеж частных tuple_num и div. Tuple целых значений.

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

  • Если либо tuple_num, либо div содержат нецелочисленные значения, то результат вычисляется округлением до ближайшего целого для каждого нецелочисленного числителя или делителя.
  • Ошибка будет выброшена при делении на 0.

Примеры

Запрос:

Результат:

Запрос:

Результат:

tupleIntDivOrZeroByNumber

Как и tupleIntDivByNumber, выполняет целочисленное деление кортежа числителей на данный делитель и возвращает кортеж частных. Он не выбрасывает ошибку для делителей равных 0, а вместо этого возвращает частное как 0.

Синтаксис

Параметры

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • div: Значение делителя. Числовое типа.

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

  • Кортеж частных tuple_num и div. Tuple целых значений.
  • Возвращает 0 для частных, где делитель равен 0.

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

  • Если либо tuple_num, либо div содержат нецелочисленные значения, то результат вычисляется округлением до ближайшего целого для каждого нецелочисленного числителя или делителя, как в tupleIntDivByNumber.

Примеры

Запрос:

Результат:

Запрос:

Результат:

tupleModulo

Возвращает кортеж остатков (остатков) от деления двух кортежей.

Синтаксис

Параметры

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • tuple_div: Кортеж значений делителей. Tuple числового типа.

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

  • Кортеж остатков от деления tuple_num и tuple_div. Tuple целых значений.
  • Ошибка выбрасывается при делении на ноль.

Примеры

Запрос:

Результат:

tupleModuloByNumber

Возвращает кортеж остатков (остатков) от деления кортежа и данного делителя.

Синтаксис

Параметры

  • tuple_num: Кортеж значений числителей. Tuple числового типа.
  • div: Значение делителя. Числовое типа.

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

  • Кортеж остатков от деления tuple_num и div. Tuple целых значений.
  • Ошибка выбрасывается при делении на ноль.

Примеры

Запрос:

Результат:

flattenTuple

Возвращает выровненный выходной кортеж из вложенного именованного входного кортежа. Элементы выходного кортежа — это пути из исходного входного кортежа. Например: Tuple(a Int, Tuple(b Int, c Int)) -> Tuple(a Int, b Int, c Int). flattenTuple может использоваться для выбора всех путей из типа Object в качестве отдельных столбцов.

Синтаксис

Параметры

  • input: Вложенный именованный кортеж для выравнивания. Tuple.

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

  • Выходной кортеж, элементы которого — это пути из исходного входного кортежа. Tuple.

Пример

Запрос:

Результат:

Distance functions

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