Функции работы с кортежами
Приведённая ниже документация сгенерирована из системной таблицы system.functions.
flattenTuple
Добавлена в версии v22.6
Разворачивает именованный и вложенный tuple.
Элементы возвращаемого tuple представляют собой пути к элементам входного tuple.
Синтаксис
Аргументы
input— Именованный вложенный кортеж для разворачивания.Tuple(n1 T1[, n2 T2, ... ])
Возвращаемое значение
Возвращает кортеж, элементы которого являются путями к элементам исходного кортежа. Tuple(T)
Примеры
Пример использования
tuple
Впервые представлена в: v
Возвращает кортеж, группируя входные аргументы.
Для столбцов C1, C2, ... с типами T1, T2, ... функция возвращает кортеж типа Tuple(C1 T1, C2 T2, ...) с именованными полями, содержащий эти столбцы, если их имена уникальны и могут рассматриваться как идентификаторы без кавычек; в противном случае возвращается Tuple(T1, T2, ...). Выполнение функции не требует вычислительных затрат. Кортежи обычно используются в качестве промежуточных значений в аргументах операторов IN или для создания списка формальных параметров lambda-функций. Кортежи нельзя записывать в таблицу.
Функция реализует оператор (x, y, ...).
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Примеры
Типичный
tupleConcat
Появилось в версии: v23.8
Объединяет кортежи, переданные в качестве аргументов.
Синтаксис
Аргументы
tupleN— Произвольное число аргументов типа Tuple.Tuple(T)
Возвращаемое значение
Возвращает кортеж, содержащий все элементы из входных кортежей. Tuple(T)
Примеры
Пример использования
tupleDivide
Введена в версии: v21.11
Выполняет деление соответствующих элементов двух кортежей одинакового размера.
При делении на ноль возвращается значение inf.
Синтаксис
Аргументы
t1— первый кортеж:Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2— второй кортеж:Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с результатами деления: Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleDivideByNumber
Впервые представлена в: v21.11
Возвращает кортеж, в котором каждый элемент делится на число.
При делении на ноль возвращается inf.
Синтаксис
Аргументы
tuple— кортеж для деления.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)number— делитель.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж с разделёнными элементами. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleElement
Впервые появилась в: v1.1
Извлекает элемент из кортежа по индексу или имени.
Для доступа по индексу используется числовой индекс, начинающийся с 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
Возвращает расстояние Хэмминга между двумя кортежами одинакового размера.
Тип результата определяется так же, как и для арифметических функций, на основе числа элементов во входных кортежах.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает расстояние Хэмминга. UInt8/16/32/64
Примеры
Пример использования
С MinHash для обнаружения почти дублирующихся строк
tupleIntDiv
Введено в: v23.8
Выполняет целочисленное поэлементное деление кортежа числителей на кортеж знаменателей. Возвращает кортеж частных. Если какой-либо из кортежей содержит нецелочисленные элементы, результат вычисляется с округлением до ближайшего целого для каждого нецелочисленного числителя или делителя. Деление на 0 приводит к ошибке.
Синтаксис
Аргументы
tuple_num— кортеж значений числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)tuple_div— кортеж значений делителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж результатов деления. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
С десятичными числами
tupleIntDivByNumber
Введено в: v23.8
Выполняет целочисленное деление кортежа числителей на заданный знаменатель и возвращает кортеж частных. Если хотя бы один из входных параметров содержит нецелочисленные элементы, результат вычисляется с округлением до ближайшего целого для каждого нецелочисленного числителя или делителя. При попытке деления на 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
Аналогично функции tupleIntDiv выполняет целочисленное деление кортежа числителей на кортеж знаменателей и возвращает кортеж частных.
В случае деления на 0 возвращает частное, равное 0, вместо генерации исключения.
Если хотя бы один из кортежей содержит нецелочисленные элементы, результат вычисляется путём округления до ближайшего целого для каждого нецелочисленного числителя или делителя.
Синтаксис
Аргументы
tuple_num— кортеж значений числителей.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)tuple_div— кортеж значений делителей.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж частных. Возвращает 0 для тех частных, у которых делитель равен 0. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
С нулевыми делителями
tupleIntDivOrZeroByNumber
Введено в: v23.8
Как и 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
Вычисляет разность между соответствующими элементами двух кортежей одинакового размера.
Синтаксис
Псевдонимы: vectorDifference
Аргументы
t1— Первый кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2— Второй кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж, содержащий результаты операций вычитания. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleModulo
Появилась в версии: v23.8
Возвращает кортеж остатков (модулей) поэлементного деления двух кортежей.
Синтаксис
Аргументы
tuple_num— Кортеж значений числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)tuple_mod— Кортеж значений модуля деления.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж остатков от деления. При делении на ноль выбрасывается ошибка. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleModuloByNumber
Добавлена в версии: v23.8
Возвращает кортеж остатков от деления элементов кортежа на заданный делитель.
Синтаксис
Аргументы
tuple_num— кортеж элементов числителя.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)div— значение делителя.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж остатков от деления. При делении на ноль выбрасывается ошибка. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleMultiply
Введено в версии: v21.11
Вычисляет произведение соответствующих элементов двух кортежей одинакового размера.
Синтаксис
Аргументы
t1— Первый кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2— Второй кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с результатами умножения. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleMultiplyByNumber
Добавлена в версии: v21.11
Возвращает кортеж, в котором все элементы умножены на число.
Синтаксис
Аргументы
tuple— кортеж, который нужно умножить.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)number— множитель.(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает кортеж с умноженными элементами. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleNames
Добавлена в: v
Преобразует кортеж в массив имён столбцов. Для кортежа вида Tuple(a T, b T, ...) возвращает массив строк, представляющих именованные столбцы кортежа. Если элементы кортежа не имеют явных имён, в качестве имён столбцов используются их индексы.
Синтаксис
Аргументы
- Нет
Возвращаемое значение
Примеры
Типичный пример
tupleNegate
Введена в версии v21.11
Вычисляет отрицание элементов кортежа.
Синтаксис
Аргументы
t— кортеж, к которому применяется операция отрицания.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж с результатом отрицания. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tuplePlus
Добавлена в версии v21.11
Вычисляет сумму соответствующих элементов двух кортежей одинаковой длины.
Синтаксис
Псевдонимы: vectorSum
Аргументы
t1— Первый кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)t2— Второй кортеж.Tuple((U)Int*)илиTuple(Float*)илиTuple(Decimal)
Возвращаемое значение
Возвращает кортеж, содержащий суммы соответствующих элементов входных кортежей. Tuple((U)Int*) или Tuple(Float*) или Tuple(Decimal)
Примеры
Базовое использование
tupleToNameValuePairs
Впервые появился в: v21.9
Преобразует кортеж в массив пар (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:
Запрос:
Результат:
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.