* Update in-functions.md and tuple-functions.md Изменил регистр в названиях разделов. * Update tuple-functions.md and in-functions.md Убрал описание операторов из in-functions.md. Co-authored-by: Dmitriy <sevirov@yandex-team.ru>
4.0 KiB
toc_priority | toc_title |
---|---|
68 | Функции для работы с кортежами |
Функции для работы с кортежами
tuple
Функция, позволяющая сгруппировать несколько столбцов. Для столбцов, имеющих типы T1, T2, … возвращает кортеж типа Tuple(T1, T2, …), содержащий эти столбцы. Выполнение функции ничего не стоит. Кортежи обычно используются как промежуточное значение в качестве аргумента операторов IN, или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу.
С помощью функции реализуется оператор (x, y, …)
.
Синтаксис
tuple(x, y, …)
tupleElement
Функция, позволяющая достать столбец из кортежа. N - индекс столбца начиная с 1. N должно быть константой. N должно быть целым строго положительным числом не большим размера кортежа. Выполнение функции ничего не стоит.
С помощью функции реализуется оператор x.N
.
Синтаксис
tupleElement(tuple, n)
untuple
Выполняет синтаксическую подстановку элементов кортежа в место вызова.
Синтаксис
untuple(x)
Чтобы пропустить некоторые столбцы в результате запроса, вы можете использовать выражение EXCEPT
.
Параметры
x
- функцияtuple
, столбец или кортеж элементов. Tuple.
Возвращаемое значение
- Нет.
Примеры
Входная таблица:
┌─key─┬─v1─┬─v2─┬─v3─┬─v4─┬─v5─┬─v6────────┐
│ 1 │ 10 │ 20 │ 40 │ 30 │ 15 │ (33,'ab') │
│ 2 │ 25 │ 65 │ 70 │ 40 │ 6 │ (44,'cd') │
│ 3 │ 57 │ 30 │ 20 │ 10 │ 5 │ (55,'ef') │
│ 4 │ 55 │ 12 │ 7 │ 80 │ 90 │ (66,'gh') │
│ 5 │ 30 │ 50 │ 70 │ 25 │ 55 │ (77,'kl') │
└─────┴────┴────┴────┴────┴────┴───────────┘
Пример использования столбца типа Tuple
в качестве параметра функции untuple
:
Запрос:
SELECT untuple(v6) FROM kv;
Результат:
┌─_ut_1─┬─_ut_2─┐
│ 33 │ ab │
│ 44 │ cd │
│ 55 │ ef │
│ 66 │ gh │
│ 77 │ kl │
└───────┴───────┘
Пример использования выражения EXCEPT
:
Запрос:
SELECT untuple((* EXCEPT (v2, v3),)) FROM kv;
Результат:
┌─key─┬─v1─┬─v4─┬─v5─┬─v6────────┐
│ 1 │ 10 │ 30 │ 15 │ (33,'ab') │
│ 2 │ 25 │ 40 │ 6 │ (44,'cd') │
│ 3 │ 57 │ 10 │ 5 │ (55,'ef') │
│ 4 │ 55 │ 80 │ 90 │ (66,'gh') │
│ 5 │ 30 │ 25 │ 55 │ (77,'kl') │
└─────┴────┴────┴────┴───────────┘
Смотрите также