Функции работы с кортежами
Приведённая ниже документация сгенерирована из системной таблицы system.functions.
dotProduct
Добавлено в: v21.11.0
Вычисляет скалярное произведение двух векторов одинаковой длины (кортежей или массивов). Возвращает сумму произведений соответствующих элементов.
Синтаксис
Псевдонимы: scalarProduct
Аргументы
vector1— Первый вектор.Array(T)илиTuple(T)vector2— Второй вектор. Должен быть того же размера, что и первый вектор.Array(T)илиTuple(T)
Возвращаемое значение
Возвращает скалярное произведение двух векторов. (U)Int* или Float* или Decimal
Примеры
Базовое использование
flattenTuple
Добавлена в версии v22.6.0
Разворачивает именованный и вложенный tuple.
Элементы возвращаемого tuple представляют собой пути к элементам входного tuple.
Синтаксис
Аргументы
input— Именованный вложенный кортеж для разворачивания.Tuple(n1 T1[, n2 T2, ... ])
Возвращаемое значение
Возвращает кортеж, элементы которого являются путями к элементам исходного кортежа. Tuple(T)
Примеры
Пример использования
tuple
Впервые представлена в: v1.1.0
Возвращает кортеж, группируя входные аргументы.
Для столбцов C1, C2, ... с типами T1, T2, ... функция возвращает кортеж типа Tuple(C1 T1, C2 T2, ...) с именованными полями, содержащий эти столбцы, если их имена уникальны и могут рассматриваться как идентификаторы без кавычек; в противном случае возвращается Tuple(T1, T2, ...). Выполнение функции не требует вычислительных затрат. Кортежи обычно используются в качестве промежуточных значений в аргументах операторов IN или для создания списка формальных параметров lambda-функций. Кортежи нельзя записывать в таблицу.
Функция реализует оператор (x, y, ...).
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Примеры
Типичный
tupleConcat
Появилось в версии: v23.8.0
Объединяет кортежи, переданные в качестве аргументов.
Синтаксис
Аргументы
tupleN— Произвольное число аргументов типа Tuple.Tuple(T)
Возвращаемое значение
Возвращает кортеж, содержащий все элементы из входных кортежей. Tuple(T)
Примеры
Пример использования
tupleDivide
Добавленный в: v21.11.0
Вычисляет поэлементное деление двух или более Tuple одинакового размера слева направо.
При делении на ноль возвращается inf.
Синтаксис
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных кортежей. Все кортежи должны быть одинакового размера.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж, содержащий результаты поэлементного деления. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два кортежа
Три Tuple
tupleDivideByNumber
Впервые представлена в: v21.11.0
Возвращает кортеж, в котором каждый элемент делится на число.
При делении на ноль возвращается inf.
Синтаксис
Аргументы
tuple— кортеж для деления.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)number— делитель.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж с разделёнными элементами. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleElement
Впервые появилась в: v1.1.0
Извлекает элемент из кортежа по индексу или имени.
Для доступа по индексу используется числовой индекс, начинающийся с 1. Для доступа по имени имя элемента может быть передано в виде строки (работает только для именованных кортежей).
Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, нумерация ведется с конца. Например, tuple.-1 — это последний элемент кортежа.
Необязательный третий аргумент задает значение по умолчанию, которое возвращается вместо выброса исключения, если запрашиваемый элемент не существует. Все аргументы должны быть константами.
Эта функция имеет нулевую стоимость выполнения и реализует операторы x.index и x.name.
Синтаксис
Аргументы
tuple— Кортеж или массив кортежей.Tuple(T)илиArray(Tuple(T))index— Индекс столбца, начиная с 1.const UInt8/16/32/64name— Имя элемента.const Stringdefault_value— Значение по умолчанию, возвращаемое, когда индекс выходит за допустимые границы или элемент не существует.Any
Возвращаемое значение
Возвращает элемент по указанному индексу или имени. Any
Примеры
Доступ по индексу
Отрицательные индексы
Именованный кортеж в таблице
Со значением по умолчанию
Синтаксис оператора
tupleHammingDistance
Добавлено в: v21.1.0
Возвращает расстояние Хэмминга между двумя кортежами одинакового размера.
Тип результата определяется так же, как и для арифметических функций, на основе числа элементов во входных кортежах.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает расстояние Хэмминга. UInt8/16/32/64
Примеры
Пример использования
С MinHash для обнаружения почти дублирующихся строк
tupleIntDiv
Добавленный в: v23.8.0
Выполняет поэлементное целочисленное деление двух или более Tuple одинакового размера слева направо. Возвращает кортеж частных. Если какой-либо кортеж содержит нецелочисленные элементы, результат вычисляется с округлением до ближайшего целого для каждого нецелочисленного делимого или делителя. Деление на 0 приводит к исключению.
Синтаксис
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных Tuple. Все Tuple должны иметь одинаковую длину.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж из целочисленных частных. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два Tuple
С десятичными дробями
Три Tuple
tupleIntDivByNumber
Введено в: v23.8.0
Выполняет целочисленное деление кортежа числителей на заданный знаменатель и возвращает кортеж частных. Если хотя бы один из входных параметров содержит нецелочисленные элементы, результат вычисляется с округлением до ближайшего целого для каждого нецелочисленного числителя или делителя. При попытке деления на 0 генерируется ошибка.
Синтаксис
Аргументы
tuple_num— кортеж значений числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)div— значение делителя.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж результатов деления. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
Для десятичных значений
tupleIntDivOrZero
Введена в версии v23.8.0
Аналогично функции tupleIntDiv, выполняет поэлементное целочисленное деление двух или более Tuple одинакового размера слева направо.
В случае деления на 0 возвращает 0 для этого элемента вместо генерации исключения.
Если какой-либо кортеж содержит нецелочисленные элементы, результат вычисляется путём округления до ближайшего целого для каждого нецелочисленного числителя или делителя.
Синтаксис
Аргументы
t1— первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— один или несколько дополнительных входных Tuple. Все Tuple должны быть одного размера.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж целочисленных частных. Для любого элемента, у которого делитель равен 0, возвращается 0. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
С нулевыми делителями
Три Tuple
tupleIntDivOrZeroByNumber
Введено в: v23.8.0
Как и tupleIntDivByNumber, выполняет целочисленное деление кортежа числителей на заданный знаменатель и возвращает кортеж частных.
Не вызывает ошибку при нулевом делителе, а вместо этого возвращает частное, равное нулю.
Если кортеж числителей или делитель содержат нецелочисленные элементы, результат вычисляется путём округления до ближайшего целого для каждого нецелочисленного числителя или делителя.
Синтаксис
Аргументы
tuple_num— кортеж значений числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)div— значение делителя.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж частных, где для элементов с делителем, равным 0, возвращается 0. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовый пример
При нулевом делителе
tupleMinus
Добавленный в: v21.11.0
Вычисляет поэлементную разность двух или более Tuple одинакового размера; операция применяется слева направо.
Синтаксис
Псевдонимы: vectorDifference
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных кортежей. Все кортежи должны быть одинакового размера.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж, содержащий поэлементные разности. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два кортежа
Три Tuple
tupleModulo
Добавленный в: v23.8.0
Возвращает Tuple с поэлементными остатками от деления двух или более Tuple одинакового размера; операция выполняется слева направо.
Синтаксис
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных кортежей. Все кортежи должны быть одинаковой длины.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с поэлементными остатками. При делении на ноль генерируется исключение. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два кортежа
Три Tuple
tupleModuloByNumber
Добавлена в версии: v23.8.0
Возвращает кортеж остатков от деления элементов кортежа на заданный делитель.
Синтаксис
Аргументы
tuple_num— кортеж элементов числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)div— значение делителя.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж остатков от деления. При делении на ноль выбрасывается ошибка. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleMultiply
Добавленный в: v21.11.0
Вычисляет поэлементное произведение двух или более Tuple одинакового размера.
Синтаксис
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных кортежей. Все кортежи должны быть одинакового размера.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж, содержащий произведения соответствующих элементов. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два кортежа
Три Tuple
tupleMultiplyByNumber
Добавлена в версии: v21.11.0
Возвращает кортеж, в котором все элементы умножены на число.
Синтаксис
Аргументы
tuple— кортеж, который нужно умножить.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)number— множитель.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж с умноженными элементами. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleNames
Добавлена в: v24.8.0
Преобразует кортеж в массив имён столбцов. Для кортежа вида Tuple(a T, b T, ...) возвращает массив строк, представляющих именованные столбцы кортежа. Если элементы кортежа не имеют явных имён, в качестве имён столбцов используются их индексы.
Синтаксис
Аргументы
- Нет
Возвращаемое значение
Примеры
Типичный пример
tupleNegate
Введена в версии v21.11.0
Вычисляет отрицание элементов кортежа.
Синтаксис
Аргументы
t— кортеж, к которому применяется операция отрицания.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с результатом отрицания. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tuplePlus
Добавленный в: v21.11.0
Вычисляет поэлементную сумму двух или более Tuple одинакового размера.
Синтаксис
Псевдонимы: vectorSum
Аргументы
t1— Первый входной кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2, ..., tN— Один или несколько дополнительных входных кортежей. Все кортежи должны иметь одинаковую длину.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с поэлементными суммами. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Два кортежа
Три Tuple
tuplePositiveModuloByNumber
Добавлено в: v26.4.0
Возвращает кортеж положительных остатков от деления элементов кортежа на заданный делитель. В отличие от tupleModuloByNumber, результат всегда неотрицательный.
Синтаксис
Аргументы
tuple_num— Кортеж значений делимого.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)div— Значение делителя.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж неотрицательных остатков. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Основное использование
tupleToNameValuePairs
Впервые появился в: v21.9.0
Преобразует кортеж в массив пар (name, value).
Например, кортеж Tuple(n1 T1, n2 T2, ...) преобразуется в Array(Tuple('n1', T1), Tuple('n2', T2), ...).
Все значения в кортеже должны быть одного типа.
Синтаксис
Аргументы
tuple— именованный кортеж произвольных типов.Tuple(n1 T1[, n2 T2, ...])
Возвращаемое значение
Возвращает массив пар вида (name, value). Array(Tuple(String, T))
Примеры
Именованный кортеж
Неименованный кортеж
untuple
Выполняет синтаксическую подстановку элементов tuple на месте вызова.
Имена результирующих столбцов зависят от реализации и могут изменяться. Не полагайтесь на конкретные имена столбцов после untuple.
Синтаксис
Вы можете использовать выражение EXCEPT, чтобы исключать столбцы из результата запроса.
Аргументы
x— функцияtuple, столбец или кортеж элементов. Tuple.
Возвращаемое значение
- Отсутствует.
Примеры
Входная таблица:
Пример использования столбца типа данных Tuple в качестве параметра функции untuple:
Пример использования выражения EXCEPT:
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.