Функции кортежей
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
Все поддерживаемые функции описаны в документации функций расстояния.