Функции для работы с кортежами
tuple
Функция, позволяющая сгруппировать несколько столбцов. Для столбцов, имеющих типы T1, T2, ... возвращает кортеж типа Tuple(T1, T2, ...), содержащий эти столбцы. Выполнение функции ничего не стоит. Кортежи обычно используются как промежуточное значение в качестве аргумента операторов IN, или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу.
С помощью функции реализуется оператор (x, y, ...)
.
Синтаксис
tupleElement
Функция, позволяющая достать столбец из кортежа. N - индекс столбца начиная с 1. N должно быть константой. N должно быть целым строго положительным числом не большим размера кортежа. Выполнение функции ничего не стоит.
С помощью функции реализуется оператор x.N
.
Синтаксис
untuple
Выполняет синтаксическую подстановку элементов кортежа в место вызова.
Синтаксис
Чтобы пропустить некоторые столбцы в результате запроса, вы можете использовать выражение EXCEPT
.
Аргументы
x
— функцияtuple
, столбец или кортеж элементов. Tuple.
Возвращаемое значение
- Нет.
Примеры
Входная таблица:
Пример использования столбца типа Tuple
в качестве параметра функции untuple
:
Запрос:
Результат:
Пример использования выражения EXCEPT
:
Запрос:
Результат:
Смотрите также
tupleHammingDistance
Возвращает расстояние Хэмминга между двумя кортежами одинакового размера.
Синтаксис
Аргументы
Кортежи должны иметь одинаковый размер и тип элементов.
Возвращаемое значение
- Расстояние Хэмминга.
Тип: UInt8.
Примеры
Запрос:
Результат:
Может быть использовано с функциями MinHash для проверки строк на совпадение:
Результат:
tupleToNameValuePairs
Приводит именованный кортеж к списку пар (имя, значение). Для Tuple(a T, b T, ..., c T)
возвращает Array(Tuple(String, T), ...)
, где Strings
— это названия именованных полей, а 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.
Пример
Запрос:
Результат:
dotProduct
Вычисляет скалярное произведение двух кортежей одинакового размера.
Синтаксис
Синоним: scalarProduct
.
Аргументы
Возвращаемое значение
- Скалярное произведение.
Тип: Int/UInt, Float или Decimal.
Пример
Запрос:
Результат:
L1Norm
Вычисляет сумму абсолютных значений кортежа.
Синтаксис
Синоним: normL1
.
Аргументы
tuple
— кортеж. Tuple.
Возвращаемое значение
- L1-норма или расстояние городских кварталов.
Пример
Запрос:
Результат:
L2Norm
Вычисляет квадратный корень из суммы квадратов значений кортежа.
Синтаксис
Синоним: normL2
.
Аргументы
tuple
— кортеж. Tuple.
Возвращаемое значение
- L2-норма или Евклидово расстояние.
Тип: Float.
Пример
Запрос:
Результат:
LinfNorm
Вычисляет максимум из абсолютных значений кортежа.
Синтаксис
Синоним: normLinf
.
Аргументы
tuple
— кортеж. Tuple.
Возвращаемое значение
- Linf-норма или максимальное абсолютное значение.
Тип: Float.
Пример
Запрос:
Результат:
LpNorm
Возвращает корень степени p
из суммы абсолютных значений кортежа, возведенных в степень p
.
Синтаксис
Синоним: normLp
.
Аргументы
tuple
— кортеж. Tuple.p
— степень. Возможные значение: любое число из промежутка [1;inf). UInt или Float.
Возвращаемое значение
Тип: Float.
Пример
Запрос:
Результат:
L1Distance
Вычисляет расстояние между двумя точками (значения кортежей — координаты точек) в пространстве L1
(расстояние городских кварталов).
Синтаксис
Синоним: distanceL1
.
Аргументы
Возвращаемое значение
- Расстояние в норме L1.
Тип: Float.
Пример
Запрос:
Результат:
L2Distance
Вычисляет расстояние между двумя точками (значения кортежей — координаты точек) в пространстве L2
(Евклидово расстояние).
Синтаксис
Синоним: distanceL2
.
Аргументы
Возвращаемое значение
- Расстояние в норме L2.
Тип: Float.
Пример
Запрос:
Результат:
LinfDistance
Вычисляет расстояние между двумя точками (значения кортежей — координаты точек) в пространстве L_{inf}
.
Синтаксис
Синоним: distanceLinf
.
Аргументы
Возвращаемые значения
- Расстояние в норме Linf.
Тип: Float.
Пример
Запрос:
Результат:
LpDistance
Вычисляет расстояние между двумя точками (значения кортежей — координаты точек) в пространстве Lp
.
Синтаксис
Синоним: distanceLp
.
Аргументы
tuple1
— первый кортеж. Tuple.tuple2
— второй кортеж. Tuple.p
— степень. Возможные значение: любое число из промежутка [1;inf). UInt или Float.
Возвращаемое значение
- Расстояние в норме Lp.
Тип: Float.
Пример
Запрос:
Результат:
L1Normalize
Вычисляет единичный вектор для исходного вектора (значения кортежа — координаты вектора) в пространстве L1
(расстояние городских кварталов).
Синтаксис
Синоним: normalizeL1
.
Аргументы
tuple
— Tuple.
Возвращаемое значение
- Единичный вектор.
Тип: кортеж Tuple значений Float.
Пример
Запрос:
Результат:
L2Normalize
Вычисляет единичный вектор для исходного вектора (значения кортежа — координаты вектора) в пространстве L2
(Евклидово пространство.
Синтаксис
Синоним: normalizeL1
.
Аргументы
tuple
— кортеж. Tuple.
Возвращаемое значение
- Единичный вектор.
Тип: кортеж Tuple значений Float.
Пример
Запрос:
Результат:
LinfNormalize
Вычисляет единичный вектор для исходного вектора (значения кортежа — координаты вектора) в пространстве L_{inf}
.
Синтаксис
Синоним: normalizeLinf
.
Аргументы
tuple
— кортеж. Tuple.
Возвращаемое значение
- Единичный вектор.
Тип: кортеж Tuple значений Float.
Пример
Запрос:
Результат:
LpNormalize
Вычисляет единичный вектор для исходного вектора (значения кортежа — координаты вектора) в пространстве Lp
.
Синтаксис
Синоним: normalizeLp
.
Аргументы
tuple
— кортеж. Tuple.p
— степень. Возможные значение: любое число из промежутка [1;inf). UInt или Float.
Возвращаемое значение
- Единичный вектор.
Тип: кортеж Tuple значений Float.
Пример
Запрос:
Результат:
cosineDistance
Вычисляет косинусную разницу двух векторов (значения кортежей — координаты векторов). Чем меньше возвращаемое значение, тем больше сходство между векторами.
Синтаксис
Аргументы
Возвращаемые значения
- Разность между единицей и косинуса угла между векторами.
Тип: Float.
Пример
Запрос:
Результат: