Функции кортежей
tuple
Функция, которая позволяет группировать несколько колонок. Для колонок C1, C2, ...
с типами T1, T2, ...,
она возвращает Tuple(T1, T2, ...)
. Если настройка enable_named_columns_in_function_tuple
включена, то она возвращает Tuple(C1 T1, C2 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_div
: Кортеж значений делителей. Tuple числового типа.
Возвращаемое значение
- Кортеж остатков от деления
tuple_num
иtuple_div
. Tuple ненулевых целочисленных значений. - Будет вызвано исключение за деление на 0.
Примеры
Запрос:
Результат:
tupleModuloByNumber
Возвращает кортеж остатков (остатков) от операции деления кортежа и данного делителя.
Синтаксис
Параметры
Возвращаемое значение
- Кортеж остатков от деления
tuple_num
иdiv
. Tuple ненулевых целочисленных значений. - Будет вызвано исключение за деление на 0.
Примеры
Запрос:
Результат:
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
Все поддерживаемые функции описаны в документации функций расстояния.