Перейти к основному содержанию
Перейти к основному содержанию

Функции Map

map

Создаёт значение типа Map(key, value) из пар ключ–значение.

Синтаксис

map(key1, value1[, key2, value2, ...])

Аргументы

  • key_n — ключи элементов Map. Любой тип, поддерживаемый как тип ключа для Map.
  • value_n — значения элементов Map. Любой тип, поддерживаемый как тип значения для Map.

Возвращаемое значение

Примеры

Запрос:

SELECT map('key1', number, 'key2', number * 2) FROM numbers(3);

Результат:

┌─map('key1', number, 'key2', multiply(number, 2))─┐
│ {'key1':0,'key2':0}                              │
│ {'key1':1,'key2':2}                              │
│ {'key1':2,'key2':4}                              │
└──────────────────────────────────────────────────┘

mapFromArrays

Создает map из массива (или map) ключей и массива (или map) значений.

Функция является удобной альтернативой синтаксису CAST([...], 'Map(key_type, value_type)'). Например, вместо того чтобы писать

  • CAST((['aa', 'bb'], [4, 5]), 'Map(String, UInt32)'), или
  • CAST([('aa',4), ('bb',5)], 'Map(String, UInt32)')

можно написать mapFromArrays(['aa', 'bb'], [4, 5]).

Синтаксис

mapFromArrays(keys, values)

Alias: MAP_FROM_ARRAYS(keys, values)

Аргументы

  • keys — массив или map ключей (Array или Map), из которых формируется результирующий map. Если keys — массив, допускаются типы Array(Nullable(T)) или Array(LowCardinality(Nullable(T))) при условии, что он не содержит значения NULL.
  • values — массив или map значений (Array или Map), из которых формируется результирующий map.

Возвращаемое значение

  • Map, в котором ключи и значения сформированы из массива ключей и массива/map значений.

Пример

Запрос:

SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])

Результат:

┌─mapFromArrays(['a', 'b', 'c'], [1, 2, 3])─┐
│ {'a':1,'b':2,'c':3}                       │
└───────────────────────────────────────────┘

mapFromArrays также принимает аргументы типа Map. Во время выполнения они приводятся к массиву из кортежей.

SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))

Результат:

┌─mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))─┐
│ {1:('a',1),2:('b',2),3:('c',3)}                       │
└───────────────────────────────────────────────────────┘
SELECT mapFromArrays(map('a', 1, 'b', 2, 'c', 3), [1, 2, 3])

Результат:

┌─mapFromArrays(map('a', 1, 'b', 2, 'c', 3), [1, 2, 3])─┐
│ {('a',1):1,('b',2):2,('c',3):3}                       │
└───────────────────────────────────────────────────────┘

extractKeyValuePairs

Преобразует строку с парами ключ-значение в Map(String, String). Парсинг устойчив к «шуму» (например, в файлах логов). Пары ключ-значение во входной строке состоят из ключа, за которым следует разделитель ключ-значение и значение. Пары ключ-значение разделяются разделителем пар. Ключи и значения могут быть заключены в кавычки.

Синтаксис

extractKeyValuePairs(data[, key_value_delimiter[, pair_delimiter[, quoting_character[, unexpected_quoting_character_strategy]]])

Псевдонимы:

  • str_to_map
  • mapFromString

Аргументы

  • data — строка, из которой извлекаются пары ключ-значение. String или FixedString.
  • key_value_delimiter — одиночный символ, разделяющий ключи и значения. По умолчанию :. String или FixedString.
  • pair_delimiters — набор символов, разделяющих пары. По умолчанию , , и ;. String или FixedString.
  • quoting_character — одиночный символ, используемый в качестве кавычки. По умолчанию ". String или FixedString.
  • unexpected_quoting_character_strategy — стратегия обработки кавычек в неожиданных местах на этапах read_key и read_value. Возможные значения: invalid, accept и promote. invalid отбросит ключ/значение и вернётся в состояние WAITING_KEY. accept будет обрабатывать символ как обычный. promote перейдёт в состояние READ_QUOTED_{KEY/VALUE} и начнёт обработку со следующего символа.

Возвращаемые значения

Примеры

Запрос

SELECT extractKeyValuePairs('name:neymar, age:31 team:psg,nationality:brazil') AS kv

Результат:

┌─kv──────────────────────────────────────────────────────────────────────┐
│ {'name':'neymar','age':'31','team':'psg','nationality':'brazil'}        │
└─────────────────────────────────────────────────────────────────────────┘

С одинарной кавычкой ' в качестве символа цитирования:

SELECT extractKeyValuePairs('name:\'neymar\';\'age\':31;team:psg;nationality:brazil,last_key:last_value', ':', ';,', '\'') AS kv

Результат:

┌─kv───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ {'name':'neymar','age':'31','team':'psg','nationality':'brazil','last_key':'last_value'}                                 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Примеры unexpected_quoting_character_strategy:

unexpected_quoting_character_strategy=invalid

SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'INVALID') AS kv;
┌─kv────────────────┐
│ {'abc':'5'}  │
└───────────────────┘
SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'INVALID') AS kv;
┌─kv──┐
│ {}  │
└─────┘

unexpected_quoting_character_strategy=accept

SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'ACCEPT') AS kv;
┌─kv────────────────┐
│ {'name"abc':'5'}  │
└───────────────────┘
SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'ACCEPT') AS kv;
┌─kv─────────────────┐
│ {'name"abc"':'5'}  │
└────────────────────┘

unexpected_quoting_character_strategy=promote

SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'PROMOTE') AS kv;
┌─kv──┐
│ {}  │
└─────┘
SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'PROMOTE') AS kv;
┌─kv───────────┐
│ {'abc':'5'}  │
└──────────────┘

Escape-последовательности при отсутствии поддержки:

SELECT extractKeyValuePairs('age:a\\x0A\\n\\0') AS kv

Результат:

┌─kv─────────────────────┐
│ {'age':'a\\x0A\\n\\0'} │
└────────────────────────┘

Чтобы восстановить пары ключ–значение строковой карты, сериализованные с помощью toString:

SELECT
    map('John', '33', 'Paula', '31') AS m,
    toString(m) AS map_serialized,
    extractKeyValuePairs(map_serialized, ':', ',', '\'') AS map_restored
FORMAT Vertical;

Результат:

Строка 1:
──────
m:              {'John':'33','Paula':'31'}
map_serialized: {'John':'33','Paula':'31'}
map_restored:   {'John':'33','Paula':'31'}

extractKeyValuePairsWithEscaping

То же, что и extractKeyValuePairs, но с поддержкой экранирования.

Поддерживаемые escape-последовательности: \x, \N, \a, \b, \e, \f, \n, \r, \t, \v и \0. Нестандартные escape-последовательности возвращаются как есть (включая обратный слэш), за исключением следующих: \\, ', ", backtick (обратная кавычка), /, = или управляющие символы ASCII (c <= 31).

Эта функция подходит для случаев, когда предварительное и последующее экранирование неприменимы. Например, рассмотрим следующую входную строку: a: "aaaa\"bbb". Ожидаемый вывод: a: aaaa\"bbbb.

  • Предварительное экранирование: при предварительном экранировании будет получен вывод: a: "aaaa"bbb", а extractKeyValuePairs затем вернёт: a: aaaa
  • Последующее экранирование: extractKeyValuePairs вернёт a: aaaa\, и последующее экранирование оставит строку без изменений.

Начальные escape-последовательности будут пропущены в ключах и будут считаться недопустимыми для значений.

Примеры

Escape-последовательности при включённой поддержке экранирования:

SELECT extractKeyValuePairsWithEscaping('age:a\\x0A\\n\\0') AS kv

Результат:

┌─kv────────────────┐
│ {'age':'a\n\n\0'} │
└───────────────────┘

mapAdd

Собирает все ключи и суммирует соответствующие значения.

Синтаксис

mapAdd(arg1, arg2 [, ...])

Аргументы

Аргументы представляют собой map или tuple из двух arrays, где элементы в первом массиве являются ключами, а второй массив содержит значения для каждого ключа. Все массивы ключей должны иметь одинаковый тип, а все массивы значений должны содержать элементы, которые могут быть приведены к одному типу (Int64, UInt64 или Float64). Общий приведённый тип используется как тип для результирующего массива.

Возвращаемое значение

  • В зависимости от аргументов возвращается один map или tuple, где первый массив содержит отсортированные ключи, а второй массив — значения.

Пример

Запрос с типом Map:

SELECT mapAdd(map(1,1), map(1,1));

Результат:

┌─mapAdd(map(1, 1), map(1, 1))─┐
│ {1:2}                        │
└──────────────────────────────┘

Запрос с кортежем:

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) [, ...])

Аргументы

Аргументы — это map или tuple из двух array, где элементы первого массива представляют ключи, а второй массив содержит значения для каждого ключа. Все массивы ключей должны иметь один и тот же тип, а все массивы значений должны содержать элементы, которые могут быть приведены к одному типу (Int64, UInt64 или Float64). Общий приведённый тип используется как тип для результирующего массива.

Возвращаемое значение

  • В зависимости от аргументов функция возвращает map или tuple, где первый массив содержит отсортированные ключи, а второй массив содержит значения.

Пример

Запрос с типом Map:

SELECT mapSubtract(map(1,1), map(1,1));

Результат:

┌─mapSubtract(map(1, 1), map(1, 1))─┐
│ {1:0}                             │
└───────────────────────────────────┘

Запрос с отображением кортежей:

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) с целочисленными ключами. Чтобы можно было расширять множество ключей за пределы наибольшего значения, можно задать максимальный ключ. Более конкретно, функция возвращает отображение, в котором ключи образуют последовательность от наименьшего до наибольшего ключа (или аргумента max, если он указан) с шагом 1 и соответствующими значениями. Если для ключа не задано значение, используется значение по умолчанию. В случае повторяющихся ключей с каждым ключом связывается только первое значение (в порядке появления).

Синтаксис

mapPopulateSeries(map[, max])
mapPopulateSeries(keys, values[, max])

Для аргументов-массивов количество элементов в keys и values должно совпадать для каждой строки.

Аргументы

Аргументы — это Map или два массива Array, где первый массив содержит ключи, а второй — значения для каждого ключа.

Отображаемые массивы:

  • map — Map с целочисленными ключами. Map.

или

Возвращаемое значение

  • В зависимости от аргументов — Map или Tuple из двух Array: ключи в отсортированном порядке и значения, соответствующие этим ключам.

Пример

Запрос с типом Map:

SELECT mapPopulateSeries(map(1, 10, 5, 20), 6);

Результат:

┌─mapPopulateSeries(map(1, 10, 5, 20), 6)─┐
│ {1:10,2:0,3:0,4:0,5:20,6:0}             │
└─────────────────────────────────────────┘

Запрос с сопоставленными массивами:

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)) │
└──────────────────────────────┴───────────────────────────────────┘

mapKeys

Возвращает ключи заданной Map.

Эту функцию можно оптимизировать с помощью настройки optimize_functions_to_subcolumns. При включённой настройке функция читает только подстолбец keys вместо всей Map. Запрос SELECT mapKeys(m) FROM table преобразуется в SELECT m.keys FROM table.

Синтаксис

mapKeys(map)

Аргументы

  • map — отображение. Map.

Возвращаемое значение

  • Массив, содержащий все ключи из отображения map. Array.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'name':'eleven','age':'11'}), ({'number':'twelve','position':'6.0'});

SELECT mapKeys(a) FROM tab;

Результат:

┌─mapKeys(a)────────────┐
│ ['name','age']        │
│ ['number','position'] │
└───────────────────────┘

mapContains

Возвращает, содержится ли заданный ключ в указанном отображении.

Синтаксис

mapContains(map, key)

Псевдоним: mapContainsKey(map, key)

Аргументы

  • map — Map. Map.
  • key — ключ. Тип должен совпадать с типом ключа в map.

Возвращаемое значение

  • 1, если map содержит key, 0 в противном случае. UInt8.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'name':'eleven','age':'11'}), ({'number':'twelve','position':'6.0'});

SELECT mapContains(a, 'name') FROM tab;

Результат:

┌─mapContains(a, 'name')─┐
│                      1 │
│                      0 │
└────────────────────────┘

mapContainsKeyLike

Синтаксис

mapContainsKeyLike(map, pattern)

Аргументы

  • map — Map. Map.
  • pattern - Строковый шаблон для сопоставления.

Возвращаемое значение

  • 1, если map содержит key, соответствующий заданному шаблону, 0 — если не содержит.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsKeyLike(a, 'a%') FROM tab;

Результат:

┌─mapContainsKeyLike(a, 'a%')─┐
│                           1 │
│                           0 │
└─────────────────────────────┘

mapExtractKeyLike

Для map со строковыми ключами и шаблоном LIKE эта функция возвращает map с элементами, ключи которых соответствуют заданному шаблону.

Синтаксис

mapExtractKeyLike(map, pattern)

Аргументы

  • map — Map. Map.
  • pattern - Строковый шаблон для сопоставления.

Возвращаемое значение

  • Map, содержащая элементы, ключи которых соответствуют указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая Map.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractKeyLike(a, 'a%') FROM tab;

Результат:

┌─mapExtractKeyLike(a, 'a%')─┐
│ {'abc':'abc'}              │
│ {}                         │
└────────────────────────────┘

mapValues

Возвращает значения указанной карты (Map).

Эта функция может быть оптимизирована с помощью настройки optimize_functions_to_subcolumns. При включённой настройке функция считывает только подстолбец values вместо всей карты. Запрос SELECT mapValues(m) FROM table преобразуется в SELECT m.values FROM table.

Синтаксис

mapValues(map)

Аргументы

  • mapMap. Map.

Возвращаемое значение

  • Массив, содержащий все значения из map. Array.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'name':'eleven','age':'11'}), ({'number':'twelve','position':'6.0'});

SELECT mapValues(a) FROM tab;

Результат:

┌─mapValues(a)─────┐
│ ['eleven','11']  │
│ ['twelve','6.0'] │
└──────────────────┘

mapContainsValue

Возвращает, содержится ли заданный ключ в указанной карте.

Синтаксис

mapContainsValue(map, value)

Псевдоним: mapContainsValue(map, value)

Аргументы

  • map — Map. Map.
  • value — Значение. Тип должен совпадать с типом значения map.

Возвращаемое значение

  • 1, если map содержит value, 0 в противном случае. UInt8.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'name':'eleven','age':'11'}), ({'number':'twelve','position':'6.0'});

SELECT mapContainsValue(a, '11') FROM tab;

Результат:

┌─mapContainsValue(a, '11')─┐
│                         1 │
│                         0 │
└───────────────────────────┘

mapContainsValueLike

Синтаксис

mapContainsValueLike(map, pattern)

Аргументы

  • map — Map. Map.
  • pattern - Строковый шаблон для сопоставления.

Возвращаемое значение

  • 1, если map содержит value, соответствующее указанному шаблону, 0 в противном случае.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsValueLike(a, 'a%') FROM tab;

Результат:

┌─mapContainsV⋯ke(a, 'a%')─┐
│                        1 │
│                        0 │
└──────────────────────────┘

mapExtractValueLike

Получив map со строковыми значениями и шаблоном LIKE, функция возвращает map с элементами, чьи значения соответствуют этому шаблону.

Синтаксис

mapExtractValueLike(map, pattern)

Аргументы

  • map — Map. Map.
  • pattern - Строковый шаблон для сопоставления.

Возвращаемое значение

  • Map, содержащая элементы, значения которых соответствуют указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая Map.

Пример

Запрос:

CREATE TABLE tab (a Map(String, String)) ENGINE = Memory;

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractValueLike(a, 'a%') FROM tab;

Результат:

┌─mapExtractValueLike(a, 'a%')─┐
│ {'abc':'abc'}                │
│ {}                           │
└──────────────────────────────┘

mapApply

Применяет функцию к каждому элементу карты.

Синтаксис

mapApply(func, map)

Аргументы

Возвращаемое значение

  • Возвращает объект Map, полученный из исходного объекта Map путём применения func(map1[i], ..., mapN[i]) к каждому элементу.

Пример

Запрос:

SELECT mapApply((k, v) -> (k, v * 10), _map) AS r
FROM
(
    SELECT map('key1', number, 'key2', number * 2) AS _map
    FROM numbers(3)
)

Результат:

┌─r─────────────────────┐
│ {'key1':0,'key2':0}   │
│ {'key1':10,'key2':20} │
│ {'key1':20,'key2':40} │
└───────────────────────┘

mapFilter

Фильтрует map, применяя функцию к каждому элементу карты.

Синтаксис

mapFilter(func, map)

Аргументы

Возвращаемое значение

  • Возвращает map, содержащий только те элементы из map, для которых func(map1[i], ..., mapN[i]) возвращает значение, не равное 0.

Пример

Запрос:

SELECT mapFilter((k, v) -> ((v % 2) = 0), _map) AS r
FROM
(
    SELECT map('key1', number, 'key2', number * 2) AS _map
    FROM numbers(3)
)

Результат:

┌─r───────────────────┐
│ {'key1':0,'key2':0} │
│ {'key2':2}          │
│ {'key1':2,'key2':4} │
└─────────────────────┘

mapUpdate

Синтаксис

mapUpdate(map1, map2)

Аргументы

Возвращаемое значение

  • Возвращает map1 с обновлёнными значениями для соответствующих ключей из map2.

Пример

Запрос:

SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10)) AS map;

Результат:

┌─map────────────────────────────┐
│ {'key3':0,'key1':10,'key2':10} │
└────────────────────────────────┘

mapConcat

Объединяет несколько map на основе совпадения их ключей. Если элементы с одинаковым ключом присутствуют более чем в одной входной map, все элементы добавляются в результирующую map, но только первый элемент доступен через оператор [].

Синтаксис

mapConcat(maps)

Аргументы

  • maps – Произвольное количество значений типа Map.

Возвращаемое значение

  • Возвращает значение типа Map, полученное объединением карт, переданных в качестве аргументов.

Примеры

Запрос:

SELECT mapConcat(map('key1', 1, 'key3', 3), map('key2', 2)) AS map;

Результат:

┌─map──────────────────────────┐
│ {'key1':1,'key3':3,'key2':2} │
└──────────────────────────────┘

Запрос:

SELECT mapConcat(map('key1', 1, 'key2', 2), map('key1', 3)) AS map, map['key1'];

Результат:

┌─map──────────────────────────┬─elem─┐
│ {'key1':1,'key2':2,'key1':3} │    1 │
└──────────────────────────────┴──────┘

mapExists([func,], map)

Возвращает 1, если в map есть хотя бы одна пара ключ-значение, для которой func(key, value) возвращает что-либо, отличное от 0. В противном случае возвращает 0.

Примечание

mapExistsфункция высшего порядка. Вы можете передать ей лямбда-функцию в качестве первого аргумента.

Пример

Запрос:

SELECT mapExists((k, v) -> (v = 1), map('k1', 1, 'k2', 2)) AS res

Результат:

┌─res─┐
│   1 │
└─────┘

mapAll([func,] map)

Возвращает 1, если func(key, value) возвращает значение, отличное от 0, для всех пар «ключ–значение» в map. В противном случае возвращает 0.

Примечание

Обратите внимание, что mapAll — это функция высшего порядка. В качестве первого аргумента ей можно передать лямбда-функцию.

Пример

Запрос:

SELECT mapAll((k, v) -> (v = 1), map('k1', 1, 'k2', 2)) AS res

Результат:

┌─res─┐
│   0 │
└─────┘

mapSort([func,], map)

Сортирует элементы карты по возрастанию. Если указана функция func, порядок сортировки определяется результатом применения func к ключам и значениям карты.

Примеры

SELECT mapSort(map('key2', 2, 'key3', 1, 'key1', 3)) AS map;
┌─map──────────────────────────┐
│ {'key1':3,'key2':2,'key3':1} │
└──────────────────────────────┘
SELECT mapSort((k, v) -> v, map('key2', 2, 'key3', 1, 'key1', 3)) AS map;
┌─map──────────────────────────┐
│ {'key3':1,'key2':2,'key1':3} │
└──────────────────────────────┘

Подробнее см. справочник по функции arraySort.

mapPartialSort

Сортирует элементы карты в порядке возрастания с дополнительным аргументом limit, который позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям карты.

Синтаксис

mapPartialSort([func,] limit, map)

Аргументы

  • func – необязательная функция, применяемая к ключам и значениям отображения. Lambda function.
  • limit – количество элементов, которые будут отсортированы (элементы с позициями в диапазоне [1..limit]). (U)Int.
  • map – отображение для сортировки. Map.

Возвращаемое значение

  • Частично отсортированное отображение. Map.

Пример

SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2));
┌─mapPartialSort(lambda(tuple(k, v), v), 2, map('k1', 3, 'k2', 1, 'k3', 2))─┐
│ {'k2':1,'k3':2,'k1':3}                                                    │
└───────────────────────────────────────────────────────────────────────────┘

mapReverseSort([func,], map)

Сортирует элементы map в порядке убывания. Если указана функция func, порядок сортировки определяется результатом её применения к ключам и значениям map.

Примеры

SELECT mapReverseSort(map('key2', 2, 'key3', 1, 'key1', 3)) AS map;
┌─map──────────────────────────┐
│ {'key3':1,'key2':2,'key1':3} │
└──────────────────────────────┘
SELECT mapReverseSort((k, v) -> v, map('key2', 2, 'key3', 1, 'key1', 3)) AS map;
┌─map──────────────────────────┐
│ {'key1':3,'key2':2,'key3':1} │
└──────────────────────────────┘

Подробнее см. функцию arrayReverseSort.

mapPartialReverseSort

Сортирует элементы map в порядке убывания с дополнительным аргументом limit, позволяющим выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом функции func, применённой к ключам и значениям map.

Синтаксис

mapPartialReverseSort([func,] limit, map)

Аргументы

  • func – необязательная функция, применяемая к ключам и значениям map. Lambda function.
  • limit – сортируются элементы с индексами в диапазоне [1..limit]. (U)Int.
  • map – объект типа Map для сортировки. Map.

Возвращаемое значение

  • Частично отсортированный объект типа Map. Map.

Пример

SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2));
┌─mapPartialReverseSort(lambda(tuple(k, v), v), 2, map('k1', 3, 'k2', 1, 'k3', 2))─┐
│ {'k1':3,'k3':2,'k2':1}                                                           │
└──────────────────────────────────────────────────────────────────────────────────┘

extractKeyValuePairs

Введено в: v

Извлекает пары ключ-значение из произвольной строки. Строка не обязана строго соответствовать формату пар ключ-значение;

она может содержать «шум» (например, файлы журналов / логи). Формат пар ключ-значение, который нужно интерпретировать, задаётся через аргументы функции.

Пара ключ-значение состоит из ключа, за которым следует key_value_delimiter, и значения. Также поддерживаются ключи и значения, заключённые в кавычки. Пары ключ-значение должны быть разделены разделителями пар ключ-значение.

Синтаксис

            extractKeyValuePairs(data, [key_value_delimiter], [pair_delimiter], [quoting_character])

Аргументы

  • data - Строка, из которой извлекаются пары ключ-значение. String или FixedString.
    • key_value_delimiter - Символ, используемый в качестве разделителя между ключом и значением. По умолчанию :. String или FixedString.
    • pair_delimiters - Набор символов, используемых в качестве разделителей между парами. По умолчанию \space, , и ;. String или FixedString.
    • quoting_character - Символ, используемый в качестве символа кавычек. По умолчанию ". String или FixedString.
    • unexpected_quoting_character_strategy - Стратегия обработки символов кавычек в неожиданных местах во время фаз read_key и read_value. Возможные значения: invalid, accept и promote. invalid отбросит ключ/значение и вернёт состояние WAITING_KEY. accept будет трактовать его как обычный символ. promote переведёт в состояние READ_QUOTED_{KEY/VALUE} и начнёт со следующего символа. Значение по умолчанию — INVALID.

Возвращаемые значения

  • Извлечённые пары ключ-значение в Map(String, String).

Примеры

Запрос:

Простой пример

            arthur :) select extractKeyValuePairs('name:neymar, age:31 team:psg,nationality:brazil') as kv

            SELECT extractKeyValuePairs('name:neymar, age:31 team:psg,nationality:brazil') as kv

            Query id: f9e0ca6f-3178-4ee2-aa2c-a5517abb9cee

            ┌─kv──────────────────────────────────────────────────────────────────────┐
            │ {'name':'neymar','age':'31','team':'psg','nationality':'brazil'}        │
            └─────────────────────────────────────────────────────────────────────────┘

Одинарная кавычка как символ обрамления

            arthur :) select extractKeyValuePairs('name:\'neymar\';\'age\':31;team:psg;nationality:brazil,last_key:last_value', ':', ';,', '\'') as kv

            SELECT extractKeyValuePairs('name:\'neymar\';\'age\':31;team:psg;nationality:brazil,last_key:last_value', ':', ';,', '\'') as kv

            Идентификатор запроса: 0e22bf6b-9844-414a-99dc-32bf647abd5e

            ┌─kv───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
            │ {'name':'neymar','age':'31','team':'psg','nationality':'brazil','last_key':'last_value'}                                 │
            └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Примеры unexpected_quoting_character_strategy:

unexpected_quoting_character_strategy=invalid

            SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'INVALID') as kv;
            ┌─kv────────────────┐
            │ {'abc':'5'}  │
            └───────────────────┘
            SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'INVALID') as kv;
            ┌─kv──┐
            │ {}  │
            └─────┘

unexpected_quoting_character_strategy=accept

            SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'ACCEPT') as kv;
            ┌─kv────────────────┐
            │ {'name"abc':'5'}  │
            └───────────────────┘
            SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'ACCEPT') as kv;
            ┌─kv─────────────────┐
            │ {'name"abc"':'5'}  │
            └────────────────────┘

unexpected_quoting_character_strategy=promote

            SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'PROMOTE') as kv;
            ┌─kv──┐
            │ {}  │
            └─────┘
            SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'PROMOTE') as kv;
            ┌─kv───────────┐
            │ {'abc':'5'}  │
            └──────────────┘

Escape-последовательности при отключённой поддержке экранирования

            arthur :) select extractKeyValuePairs('age:a\\x0A\\n\\0') as kv

            SELECT extractKeyValuePairs('age:a\\x0A\\n\\0') AS kv

            Query id: e9fd26ee-b41f-4a11-b17f-25af6fd5d356

            ┌─kv────────────────────┐
            │ {'age':'a\\x0A\\n\\0'} │
            └───────────────────────┘

Синтаксис

Псевдонимы: str_to_map, mapFromString

Аргументы

  • Отсутствуют.

Возвращаемое значение

Примеры

extractKeyValuePairsWithEscaping

Введена в: v

Та же функция, что и extractKeyValuePairs, но с поддержкой экранирования.

Поддерживаемые последовательности экранирования: \x, \N, \a, \b, \e, \f, \n, \r, \t, \v и \0. Нестандартные последовательности экранирования возвращаются без изменений (включая обратный слеш), за исключением следующих: \\, ', ", backtick, /, = или управляющие символы ASCII (c <= 31).

Эта функция подходит для случаев, когда предварительное и последующее экранирование неприменимы. Например, рассмотрим следующую входную строку: a: "aaaa\"bbb". Ожидаемый результат: a: aaaa\"bbbb.

  • Предварительное экранирование: при предварительном экранировании результат будет: a: "aaaa"bbb", а затем extractKeyValuePairs вернёт: a: aaaa
    • Последующее экранирование: extractKeyValuePairs вернёт a: aaaa\, и последующее экранирование сохранит это без изменений.

Начальные последовательности экранирования в ключах будут пропущены и будут считаться недопустимыми для значений.

Последовательности экранирования при включённой поддержке экранирования

            arthur :) select extractKeyValuePairsWithEscaping('age:a\\x0A\\n\\0') as kv

            SELECT extractKeyValuePairsWithEscaping('age:a\\x0A\\n\\0') AS kv

            Query id: 44c114f0-5658-4c75-ab87-4574de3a1645

            ┌─kv───────────────┐
            │ {'age':'a\n\n\0'} │
            └──────────────────┘

Синтаксис

Аргументы

  • Нет.

Возвращаемое значение

Примеры

map

Добавлена в: v21.1

Создаёт значение типа Map(key, value) из пар ключ–значение.

Синтаксис

map(key1, value1[, key2, value2, ...])

Аргументы

  • key_n — ключи элементов map. Any
  • value_n — значения элементов map. Any

Возвращаемое значение

Возвращает map с парами ключ:значение. Map(Any, Any)

Примеры

Пример использования

SELECT map('key1', number, 'key2', number * 2) FROM numbers(3)
{'key1':0,'key2':0}
{'key1':1,'key2':2}
{'key1':2,'key2':4}

mapAdd

Добавлена в версии: v20.7

Собирает все ключи и суммирует соответствующие значения.

Синтаксис

mapAdd(arg1[, arg2, ...])

Аргументы

  • arg1[, arg2, ...] — значения типов Map или Tuple из двух массивов, в которых элементы первого массива представляют ключи, а второй массив содержит значения для каждого ключа. Map(K, V) или Tuple(Array(T), Array(T))

Возвращаемое значение

Возвращает значение типа Map или Tuple, где первый массив содержит отсортированные ключи, а второй массив — соответствующие им значения. Map(K, V) или Tuple(Array(T), Array(T))

Примеры

Для типа Map

SELECT mapAdd(map(1, 1), map(1, 1))
{1:2}

С использованием кортежа

SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1]))
([1, 2], [2, 2])

mapAll

Введена в: v23.4

Проверяет, выполняется ли условие для всех пар ключ–значение в map. mapAll — это функция высшего порядка. В качестве первого аргумента ей можно передать лямбда-функцию.

Синтаксис

mapAll([func,] map)

Аргументы

  • func — лямбда-функция. Lambda function
  • map — проверяемая структура Map. Map(K, V)

Возвращаемое значение

Возвращает 1, если все пары ключ-значение удовлетворяют условию, иначе 0. UInt8

Примеры

Пример использования

SELECT mapAll((k, v) -> v = 1, map('k1', 1, 'k2', 2))
0

mapApply

Впервые представлена в: v22.3

Применяет функцию к каждому элементу map.

Синтаксис

mapApply(func, map)

Аргументы

  • func — лямбда-функция. Lambda function
  • map — map, к которому применяется функция. Map(K, V)

Возвращаемое значение

Возвращает новый map, полученный из исходного map посредством применения func к каждому элементу. Map(K, V)

Примеры

Пример использования

SELECT mapApply((k, v) -> (k, v * 2), map('k1', 1, 'k2', 2))
{'k1':2,'k2':4}

mapConcat

Появилась в версии: v23.4

Объединяет несколько значений типа Map по совпадающим ключам. Если элементы с одинаковым ключом присутствуют более чем в одном входном значении Map, все элементы добавляются в результирующее значение Map, но через оператор [] доступен только первый.

Синтаксис

mapConcat(maps)

Аргументы

  • maps — произвольное количество отображений типа Map.

Возвращаемое значение

Возвращает Map, полученный объединением карт, переданных в качестве аргументов. Map

Примеры

Пример использования

SELECT mapConcat(map('k1', 'v1'), map('k2', 'v2'))
{'k1':'v1','k2':'v2'}

mapContainsKey

Введена в версии: v21.2

Определяет, содержится ли ключ в map.

Синтаксис

mapContains(map, key)

Псевдонимы: mapContains

Аргументы

  • map — отображение, в котором выполняется поиск. Map(K, V)
  • key — ключ для поиска. Тип должен совпадать с типом ключа отображения. Any

Возвращаемое значение

Возвращает 1, если отображение содержит ключ, и 0, если не содержит. UInt8

Примеры

Пример использования

SELECT mapContainsKey(map('k1', 'v1', 'k2', 'v2'), 'k1')
1

mapContainsKeyLike

Добавлено в версии: v23.4

Проверяет, содержит ли map ключ, соответствующий заданному шаблону LIKE.

Синтаксис

mapContainsKeyLike(map, pattern)

Аргументы

  • map — Карта, в которой выполняется поиск. Map(K, V)
  • pattern — Шаблон для сопоставления с ключами. const String

Возвращаемое значение

Возвращает 1, если map содержит ключ, соответствующий pattern, иначе 0. UInt8

Примеры

Пример использования

CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsKeyLike(a, 'a%') FROM tab;
┌─mapContainsKeyLike(a, 'a%')─┐
│                           1 │
│                           0 │
└─────────────────────────────┘

mapContainsValue

Впервые представлена в: v25.6

Определяет, содержится ли значение в отображении (map).

Синтаксис

mapContainsValue(map, value)

Аргументы

  • map — отображение, в котором выполняется поиск. Map(K, V)
  • value — значение, которое требуется найти. Тип должен совпадать с типом значений отображения. Any

Возвращаемое значение

Возвращает 1, если отображение содержит это значение, и 0 в противном случае. UInt8

Примеры

Пример использования

SELECT mapContainsValue(map('k1', 'v1', 'k2', 'v2'), 'v1')
1

mapContainsValueLike

Впервые появилась в версии: v25.5

Проверяет, содержит ли отображение (map) значение, соответствующее шаблону LIKE.

Синтаксис

mapContainsValueLike(map, pattern)

Аргументы

  • map — карта, в которой выполняется поиск. Map(K, V)
  • pattern — шаблон для сопоставления значений. const String

Возвращаемое значение

Возвращает 1, если map содержит значение, соответствующее pattern, иначе 0. UInt8

Примеры

Пример использования

CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsValueLike(a, 'a%') FROM tab;
┌─mapContainsV⋯ke(a, 'a%')─┐
│                        1 │
│                        0 │
└──────────────────────────┘

mapExists

Введена в версии: v23.4

Проверяет, выполняется ли условие хотя бы для одной пары ключ–значение в типе данных Map. mapExists — это функция высшего порядка. В качестве первого аргумента ей можно передать лямбда-функцию.

Синтаксис

mapExists([func,] map)

Аргументы

  • func — необязательный параметр. Лямбда-функция. Lambda function
  • map — отображение для проверки. Map(K, V)

Возвращаемое значение

Возвращает 1, если хотя бы одна пара ключ-значение удовлетворяет условию, иначе 0. UInt8

Примеры

Пример использования

SELECT mapExists((k, v) -> v = 1, map('k1', 1, 'k2', 2))
1

mapExtractKeyLike

Добавлена в версии v23.4

Для карты со строковыми ключами и шаблоном LIKE эта функция возвращает карту с элементами, ключи которых соответствуют шаблону.

Синтаксис

mapExtractKeyLike(map, pattern)

Аргументы

  • map — Карта, из которой выполняется извлечение. Map(K, V)
  • pattern — Шаблон для сопоставления с ключами карты. const String

Возвращаемое значение

Возвращает карту, содержащую элементы, ключ которых соответствует указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая карта. Map(K, V)

Примеры

Пример использования

CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractKeyLike(a, 'a%') FROM tab;
┌─mapExtractKeyLike(a, 'a%')─┐
│ {'abc':'abc'}              │
│ {}                         │
└────────────────────────────┘

mapExtractValueLike

Впервые появилась в: v25.5

Для заданного map со строковыми значениями и шаблоном LIKE эта функция возвращает map с элементами, значения которых соответствуют шаблону.

Синтаксис

mapExtractValueLike(map, pattern)

Аргументы

  • map — карта, из которой выполняется извлечение. Map(K, V)
  • pattern — шаблон для сопоставления значений. const String

Возвращаемое значение

Возвращает карту, содержащую элементы, значение которых соответствует указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая карта. Map(K, V)

Примеры

Пример использования

CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractValueLike(a, 'a%') FROM tab;
┌─mapExtractValueLike(a, 'a%')─┐
│ {'abc':'abc'}                │
│ {}                           │
└──────────────────────────────┘

mapFilter

Появилась в версии: v22.3

Фильтрует map, применяя функцию к каждому её элементу.

Синтаксис

mapFilter(func, map)

Аргументы

  • func — лямбда-функция. Lambda function
  • map — отображение (map), которое нужно отфильтровать. Map(K, V)

Возвращаемое значение

Возвращает отображение (map), содержащее только те элементы, для которых func возвращает значение, отличное от 0. Map(K, V)

Примеры

Пример использования

SELECT mapFilter((k, v) -> v > 1, map('k1', 1, 'k2', 2))
{'k2':2}

mapFromArrays

Введена в версии: v23.3

Создаёт Map из массива или Map с ключами и массива или Map со значениями. Функция является удобной альтернативой синтаксису CAST([...], 'Map(key_type, value_type)').

Синтаксис

mapFromArrays(keys, values)

Псевдонимы: MAP_FROM_ARRAYS

Аргументы

  • keys — Массив или Map с ключами, из которых создаётся отображение. Array или Map
  • values — Массив или Map со значениями, из которых создаётся отображение. Array или Map

Возвращаемое значение

Возвращает отображение с ключами и значениями, построенными на основе массива ключей и массива/Map значений. Map

Примеры

Базовое использование

SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])
{'a':1,'b':2,'c':3}

Для входных данных типа map

SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))
{1:('a', 1), 2:('b', 2), 3:('c', 3)}

mapKeys

Добавлено в версии: v21.2

Возвращает ключи указанного столбца типа Map. Эта функция может быть оптимизирована путём включения настройки optimize_functions_to_subcolumns. При включённой настройке функция читает только подстолбец keys вместо всего столбца Map. Запрос SELECT mapKeys(m) FROM table преобразуется в SELECT m.keys FROM table.

Синтаксис

mapKeys(map)

Аргументы

  • map — отображение, из которого извлекаются ключи. Map(K, V)

Возвращаемое значение

Возвращает массив, содержащий все ключи отображения. Array(T)

Примеры

Пример использования

SELECT mapKeys(map('k1', 'v1', 'k2', 'v2'))
['k1','k2']

mapPartialReverseSort

Добавлена в версии: v23.4

Сортирует элементы map по убыванию с дополнительным аргументом limit, который позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.

Синтаксис

mapPartialReverseSort([func,] limit, map)

Аргументы

  • func — Необязательный параметр. Лямбда-функция. Лямбда-функция
  • limit — Сортируются элементы в диапазоне [1..limit]. (U)Int*
  • map — Отображение (map), которое требуется отсортировать. Map(K, V)

Возвращаемое значение

Возвращает частично отсортированное отображение (map) по убыванию. Map(K, V)

Примеры

Пример использования

SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
{'k1':3,'k3':2,'k2':1}

mapPartialSort

Введена в версии v23.4

Сортирует элементы map по возрастанию с дополнительным аргументом limit, который позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.

Синтаксис

mapPartialSort([func,] limit, map)

Аргументы

  • func — Необязательный аргумент. Лямбда-функция. Lambda function
  • limit — Сортируются элементы в диапазоне [1..limit]. (U)Int*
  • map — Отображение (map) для сортировки. Map(K, V)

Возвращаемое значение

Возвращает частично отсортированное отображение. Map(K, V)

Примеры

Пример использования

SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
{'k2':1,'k3':2,'k1':3}

mapPopulateSeries

Введена в: v20.10

Заполняет отсутствующие пары ключ-значение в map с целочисленными ключами. Чтобы можно было продолжить последовательность ключей за пределы наибольшего значения, можно указать максимальный ключ. Более точно, функция возвращает map, в котором ключи образуют последовательность от наименьшего до наибольшего ключа (или до аргумента max, если он указан) с шагом 1 и соответствующими значениями. Если для ключа не задано значение, используется значение по умолчанию. Если ключи повторяются, с ключом связывается только первое значение (в порядке появления).

Синтаксис

mapPopulateSeries(map[, max]) | mapPopulateSeries(keys, values[, max])

Аргументы

  • map — Map с целочисленными ключами. Map((U)Int*, V)
  • keys — Массив ключей. Array(T)
  • values — Массив значений. Array(T)
  • max — Необязательный параметр. Максимальное значение ключа. Int8 или Int16 или Int32 или Int64 или Int128 или Int256

Возвращаемое значение

Возвращает Map или кортеж из двух массивов, в котором первый содержит ключи в отсортированном порядке, а второй — значения для соответствующих ключей. Map(K, V) или Tuple(Array(UInt*), Array(Any))

Примеры

С типом Map

SELECT mapPopulateSeries(map(1, 10, 5, 20), 6)
{1:10, 2:0, 3:0, 4:0, 5:20, 6:0}

С сопоставленными массивами

SELECT mapPopulateSeries([1, 2, 4], [11, 22, 44], 5)
([1, 2, 3, 4, 5], [11, 22, 0, 44, 0])

mapReverseSort

Введена в версии: v23.4

Сортирует элементы map в порядке убывания. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.

Синтаксис

mapReverseSort([func,] map)

Аргументы

  • func — необязательная лямбда‑функция. Lambda function
  • map — отображение для сортировки. Map(K, V)

Возвращаемое значение

Возвращает отображение, отсортированное по убыванию. Map(K, V)

Примеры

Пример использования

SELECT mapReverseSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
{'k1':3,'k3':2,'k2':1}

mapSort

Впервые добавлена в: v23.4

Сортирует элементы map по возрастанию. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.

Синтаксис

mapSort([func,] map)

Аргументы

  • func — Необязательная лямбда-функция. Lambda function
  • map — Map для сортировки. Map(K, V)

Возвращаемое значение

Возвращает Map, отсортированный по возрастанию. Map(K, V)

Примеры

Пример использования

SELECT mapSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
{'k2':1,'k3':2,'k1':3}

mapSubtract

Появилась в версии v20.7

Собирает все ключи и вычитает соответствующие им значения.

Синтаксис

mapSubtract(arg1[, arg2, ...])

Аргументы

  • arg1[, arg2, ...] — значения типа Map или кортежи из двух массивов, в которых элементы первого массива являются ключами, а второй массив содержит значения, соответствующие каждому ключу. Map(K, V) или Tuple(Array(T), Array(T))

Возвращаемое значение

Возвращает одно значение типа Map или кортеж, где первый массив содержит отсортированные ключи, а второй массив — соответствующие им значения. Map(K, V) или Tuple(Array(T), Array(T))

Примеры

С типом Map

SELECT mapSubtract(map(1, 1), map(1, 1))
{1:0}

С отображением с кортежами в качестве ключей

SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1]))
([1, 2], [-1, 0])

mapUpdate

Впервые появилась в: v22.3

Для двух map возвращает первую map, в которой значения заменены на значения из второй map для соответствующих ключей.

Синтаксис

mapUpdate(map1, map2)

Аргументы

  • map1 — Отображение, которое нужно обновить. Map(K, V)
  • map2 — Отображение, используемое для обновления. Map(K, V)

Возвращаемое значение

Возвращает map1, в котором значения для соответствующих ключей обновлены значениями из map2. Map(K, V)

Примеры

Базовое использование

SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10))
{'key3':0,'key1':10,'key2':10}

mapValues

Введена в версии: v21.2

Возвращает значения заданной карты. Эту функцию можно оптимизировать, включив настройку optimize_functions_to_subcolumns. При включённой настройке функция читает только подстолбец values вместо всей карты. Запрос SELECT mapValues(m) FROM table преобразуется в SELECT m.values FROM table.

Синтаксис

mapValues(map)

Аргументы

  • map — отображение, из которого извлекаются значения. Map(K, V)

Возвращаемое значение

Возвращает массив, содержащий все значения из отображения. Array(T)

Примеры

Пример использования

SELECT mapValues(map('k1', 'v1', 'k2', 'v2'))
['v1','v2']