Функции кортежа
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.
Пример
Запрос:
Результат:
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.