Функции кортежа
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
Возвращает Расстояние Хэмминга между двумя кортежами одинакового размера.
Синтаксис
Аргументы
Кортежи должны иметь одинаковый тип элементов.
Возвращаемое значение
- Расстояние Хэмминга.
Тип результата вычисляется так же, как это делается для Арифметических функций, исходя из количества элементов во входных кортежах.
Примеры
Запрос:
Результат:
Может быть использовано с функциями MinHash для обнаружения полуподобных строк:
Результат:
tupleToNameValuePairs
Преобразует именованный кортеж в массив пар (имя, значение). Для Tuple(a T, b T, ..., c T)
возвращает Array(Tuple(String, T), ...)
, в котором Strings
представляют именованные поля кортежа, а T
— значения, ассоциированные с этими именами. Все значения в кортеже должны быть одного типа.
Синтаксис
Аргументы
tuple
— Именованный кортеж. Tuple с любыми типами значений.
Возвращаемое значение
Пример
Запрос:
Результат:
Можно преобразовать колонки в строки, используя эту функцию:
Результат:
Если вы передадите простой кортеж в функцию, ClickHouse использует индексы значений в качестве их имен:
Результат:
tupleNames
Преобразует кортеж в массив имен колонок. Для кортежа в форме Tuple(a T, b T, ...)
возвращает массив строк, представляющих именованные колонки кортежа. Если элементы кортежа не имеют явных имен, их индексы будут использоваться в качестве имен колонок.
Синтаксис
Аргументы
tuple
— Именованный кортеж. Tuple с любыми типами значений.
Возвращаемое значение
- Массив строк.
Тип: Array(Tuple(String, ...)).
Пример
Запрос:
Результат:
Если вы передадите простой кортеж в функцию, ClickHouse использует индексы колонок в качестве их имен:
Результат:
tuplePlus
Вычисляет сумму соответствующих значений двух кортежей одинакового размера.
Синтаксис
Псевдоним: vectorSum
.
Аргументы
Возвращаемое значение
- Кортеж с суммой. Tuple.
Пример
Запрос:
Результат:
tupleMinus
Вычисляет вычитание соответствующих значений двух кортежей одинакового размера.
Синтаксис
Псевдоним: vectorDifference
.
Аргументы
Возвращаемое значение
- Кортеж с результатом вычитания. Tuple.
Пример
Запрос:
Результат:
tupleMultiply
Вычисляет произведение соответствующих значений двух кортежей одинакового размера.
Синтаксис
Аргументы
Возвращаемое значение
- Кортеж с произведением. Tuple.
Пример
Запрос:
Результат:
tupleDivide
Вычисляет деление соответствующих значений двух кортежей одинакового размера. Обратите внимание, что деление на ноль вернет inf
.
Синтаксис
Аргументы
Возвращаемое значение
- Кортеж с результатом деления. Tuple.
Пример
Запрос:
Результат:
tupleNegate
Вычисляет отрицание значений кортежа.
Синтаксис
Аргументы
tuple
— Tuple.
Возвращаемое значение
- Кортеж с результатом отрицания. 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
иdiv
. Tuple целых значений.
Особенности реализации
- Если в
tuple_num
илиdiv
содержатся нецелые значения, результат вычисляется путем округления каждого нецелого числителя или делителя. - Будет выброшена ошибка при делении на 0.
Примеры
Запрос:
Результат:
Запрос:
Результат:
tupleIntDivOrZeroByNumber
Как и tupleIntDivByNumber, выполняет целочисленное деление кортежа числителей на заданный делитель и возвращает кортеж целых частных. Не выбрасывает ошибку при делителях, равных 0, а возвращает частное равным 0.
Синтаксис
Параметры
Возвращаемое значение
- Кортеж целых частных
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
и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.
Пример
Запрос:
Результат:
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.