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

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

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_mod: Кортеж значений делителей. Tuple числового типа.

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

  • Кортеж остатков от деления tuple_num и tuple_mod. Tuple не нулевых целых значений.
  • Будет вызвано исключение при делении на ноль.

Примеры

Запрос:

Результат:

tupleModuloByNumber

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

Синтаксис

Параметры

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

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

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

Примеры

Запрос:

Результат:

flattenTuple

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

Синтаксис

Параметры

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

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

  • output кортеж, элементы которого являются путями из оригинального input. Tuple.

Пример

Запрос:

Результат:

Distance functions

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