Функции кортежей (Tuple)
Приведённая ниже документация сгенерирована на основе системной таблицы system.functions.
flattenTuple
Впервые появилось в: v22.6
Разворачивает именованный и вложенный кортеж. Элементы возвращаемого кортежа — это пути к элементам входного кортежа.
Синтаксис
Аргументы
input— именованный и вложенный кортеж для преобразования в плоский вид.Tuple(n1 T1[, n2 T2, ... ])
Возвращаемое значение
Возвращает результирующий кортеж, элементы которого представляют собой пути в исходном кортеже. Tuple(T)
Примеры
Пример использования
tuple
Впервые представлена в версии: v
Возвращает кортеж, группируя входные аргументы.
Для столбцов C1, C2, ... с типами T1, T2, ... возвращается именованный кортеж типа Tuple(C1 T1, C2 T2, ...), содержащий эти столбцы, если их имена уникальны и могут трактоваться как идентификаторы без кавычек; в противном случае возвращается Tuple(T1, T2, ...). Выполнение функции не имеет вычислительной стоимости. Кортежи обычно используются как промежуточные значения для аргументов операторов IN или для создания списка формальных параметров лямбда-функций. Кортежи нельзя записывать в таблицу.
Функция реализует оператор (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. При доступе по имени имя элемента может быть передано в виде строки (работает только для именованных кортежей).
Необязательный третий аргумент задаёт значение по умолчанию, которое возвращается вместо генерации исключения, если запрашиваемый элемент не существует. Все аргументы должны быть константами.
Эта функция не имеет накладных затрат во время выполнения и реализует операторы 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:
Запрос:
Результат:
Функции расстояния
Все поддерживаемые функции описаны в документации по функциям расстояния.