* Add translate for map func * Edit English text * Made ru description match the template * Fixed links, updated wording * Fixed links * Update
7.0 KiB
toc_priority | toc_title |
---|---|
46 | Работа с контейнерами map |
Функции для работы с контейнерами map
mapAdd
Собирает все ключи и суммирует соответствующие значения.
Синтаксис
mapAdd(Tuple(Array, Array), Tuple(Array, Array) [, ...])
Параметры
Аргументами являются кортежи из двух массивов, где элементы в первом массиве представляют ключи, а второй массив содержит значения для каждого ключа. Все массивы ключей должны иметь один и тот же тип, а все массивы значений должны содержать элементы, которые можно приводить к одному типу (Int64, UInt64 или Float64). Общий приведенный тип используется в качестве типа для результирующего массива.
Возвращаемое значение
- Возвращает один кортеж, в котором первый массив содержит отсортированные ключи, а второй - значения.
Пример
Запрос:
SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1])) as res, toTypeName(res) as type;
Результат:
┌─res───────────┬─type───────────────────────────────┐
│ ([1,2],[2,2]) │ Tuple(Array(UInt8), Array(UInt64)) │
└───────────────┴────────────────────────────────────┘
mapSubtract
Собирает все ключи и вычитает соответствующие значения.
Синтаксис
mapSubtract(Tuple(Array, Array), Tuple(Array, Array) [, ...])
Параметры
Аргументами являются кортежи из двух массивов, где элементы в первом массиве представляют ключи, а второй массив содержит значения для каждого ключа. Все массивы ключей должны иметь один и тот же тип, а все массивы значений должны содержать элементы, которые можно приводить к одному типу (Int64, UInt64 или Float64). Общий приведенный тип используется в качестве типа для результирующего массива.
Возвращаемое значение
- Возвращает один tuple, в котором первый массив содержит отсортированные ключи, а второй - значения.
Пример
Запрос:
SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1])) as res, toTypeName(res) as type;
Результат:
┌─res────────────┬─type──────────────────────────────┐
│ ([1,2],[-1,0]) │ Tuple(Array(UInt8), Array(Int64)) │
└────────────────┴───────────────────────────────────┘
mapPopulateSeries
Заполняет недостающие ключи в контейнере map (пара массивов ключей и значений), где ключи являются целыми числами. Кроме того, он поддерживает указание максимального ключа, который используется для расширения массива ключей.
Синтаксис
mapPopulateSeries(keys, values[, max])
Генерирует контейнер map, где ключи - это серия чисел, от минимального до максимального ключа (или аргумент max
, если он указан), взятых из массива keys
с размером шага один, и соответствующие значения, взятые из массива values
. Если значение не указано для ключа, то в результирующем контейнере используется значение по умолчанию.
Количество элементов в keys
и values
должно быть одинаковым для каждой строки.
Параметры
Возвращаемое значение
- Возвращает кортеж из двух массивов: ключи отсортированные по порядку и значения соответствующих ключей.
Пример
Запрос:
select mapPopulateSeries([1,2,4], [11,22,44], 5) as res, toTypeName(res) as type;
Результат:
┌─res──────────────────────────┬─type──────────────────────────────┐
│ ([1,2,3,4,5],[11,22,0,44,0]) │ Tuple(Array(UInt8), Array(UInt8)) │
└──────────────────────────────┴───────────────────────────────────┘