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

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

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: Значение делителя. Numeric тип.

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

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

Особенности реализации

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

Примеры

Запрос:

Результат:

Запрос:

Результат:

tupleIntDivOrZeroByNumber

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

Синтаксис

Параметры

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

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

  • Кортеж целых частных 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: Значение делителя. Numeric тип.

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

  • Кортеж остатков от деления 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.

Пример

Запрос:

Результат:

Функции расстояния

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