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

extractKeyValuePairs

Добавленный в: v23.4.0 Извлекает пары ключ-значение из любой строки. Строка не обязана быть полностью структурирована в формате ключ-значение; Он может содержать шум (например, файлы журналов). Формат пар ключ-значение для интерпретации задаётся через аргументы функции. Пара ключ-значение состоит из ключа, за которым следует 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

            Query id: 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'}  │
            └──────────────┘
Управляющие последовательности без их поддержки
            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'} │
            └───────────────────────┘
Синтаксис
extractKeyValuePairs(input)
Псевдонимы: str_to_map, mapFromString Аргументы
  • Отсутствуют.
Возвращаемое значение Примеры

extractKeyValuePairsWithEscaping

Добавленный в: v23.4.0 То же, что и 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'} │
            └──────────────────┘
Синтаксис
extractKeyValuePairsWithEscaping(input)
Аргументы
  • Отсутствуют.
Возвращаемое значение Примеры

map

Добавленный в: v21.1.0 Создаёт значение типа Map(key, value) из пар в формате ключ-значение. Синтаксис
map(key1, value1[, key2, value2, ...])
Аргументы
  • key_n — Ключи элементов типа Map. Any
  • value_n — Значения элементов типа Map. Any
Возвращаемое значение Возвращает значение типа Map, содержащее пары ключ:значение. Map(Any, Any) Примеры Пример использования
Query
SELECT map('key1', number, 'key2', number * 2) FROM numbers(3)
Response
{'key1':0,'key2':0}
{'key1':1,'key2':2}
{'key1':2,'key2':4}

mapAdd

Добавленный в: v20.7.0 Собирает все ключи и суммирует соответствующие им значения. Синтаксис
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
Query
SELECT mapAdd(map(1, 1), map(1, 1))
Response
{1:2}
С использованием кортежа
Query
SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1]))
Response
([1, 2], [2, 2])

mapAll

Добавленный в: v23.4.0 Проверяет, выполняется ли условие для всех пар ключ-значение в типе данных Map. mapAll — функция высшего порядка. В качестве первого аргумента ей можно передать лямбда-функцию. Синтаксис
mapAll([func,] map)
Аргументы Возвращаемое значение Возвращает 1, если все пары ключ-значение удовлетворяют условию, иначе — 0. UInt8 Примеры Пример использования
Query
SELECT mapAll((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Response
0

mapApply

Добавленный в: v22.3.0 Применяет функцию к каждому элементу map. Синтаксис
mapApply(func, map)
Аргументы Возвращаемое значение Возвращает новый Map, полученный из исходного применением func к каждому элементу. Map(K, V) Примеры Пример использования
Query
SELECT mapApply((k, v) -> (k, v * 2), map('k1', 1, 'k2', 2))
Response
{'k1':2,'k2':4}

mapConcat

Добавленный в: v23.4.0 Объединяет несколько значений типа Map на основе равенства их ключей. Если элементы с одинаковым ключом есть более чем в одном входном Map, все элементы добавляются в результирующий Map, но через оператор [] доступен только первый из них. Синтаксис
mapConcat(maps)
Аргументы
  • maps — Произвольное количество значений типа Map. Map
Возвращаемое значение Возвращает значение типа Map, полученное объединением Map, переданных в качестве аргументов. Map Примеры Пример использования
Query
SELECT mapConcat(map('k1', 'v1'), map('k2', 'v2'))
Response
{'k1':'v1','k2':'v2'}

mapContainsKey

Добавленный в: v21.2.0 Определяет, содержится ли ключ в Map. Синтаксис
mapContainsKey(map, key)
Псевдонимы: mapContains Аргументы
  • map — Объект Map, в котором выполняется поиск. Map(K, V)
  • key — Ключ, который нужно найти. Тип должен совпадать с типом ключа в Map. Any
Возвращаемое значение Возвращает 1, если Map содержит ключ, и 0 в противном случае. UInt8 Примеры Пример использования
Query
SELECT mapContainsKey(map('k1', 'v1', 'k2', 'v2'), 'k1')
Response
1

mapContainsKeyLike

Добавленный в: v23.4.0 Проверяет, содержит ли Map ключ, соответствующий указанному шаблону LIKE. Синтаксис
mapContainsKeyLike(map, pattern)
Аргументы
  • map — Map, в котором выполняется поиск. Map(K, V)
  • pattern — Шаблон регулярного выражения, с которым сопоставляются ключи. const String
Возвращаемое значение Возвращает 1, если map содержит ключ, соответствующий pattern, иначе — 0. UInt8 Примеры Пример использования
Query
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;
Response
┌─mapContainsKeyLike(a, 'a%')─┐
│                           1 │
│                           0 │
└─────────────────────────────┘

mapContainsValue

Добавленный в: v25.6.0 Определяет, содержится ли значение в Map. Синтаксис
mapContainsValue(map, value)
Аргументы
  • map — Map, в которой выполняется поиск. Map(K, V)
  • value — Искомое значение. Тип должен совпадать с типом значений в map. Any
Возвращаемое значение Возвращает 1, если map содержит value, и 0 — в противном случае. UInt8 Примеры Пример использования
Query
SELECT mapContainsValue(map('k1', 'v1', 'k2', 'v2'), 'v1')
Response
1

mapContainsValueLike

Добавленный в: v25.5.0 Проверяет, содержит ли Map значение, соответствующее указанному шаблону LIKE. Синтаксис
mapContainsValueLike(map, pattern)
Аргументы
  • map — Map, в которой выполняется поиск. Map(K, V)
  • pattern — Шаблон регулярного выражения для сопоставления со значениями. const String
Возвращаемое значение Возвращает 1, если map содержит значение, соответствующее pattern, в противном случае — 0. UInt8 Примеры Пример использования
Query
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;
Response
┌─mapContainsV⋯ke(a, 'a%')─┐
│                        1 │
│                        0 │
└──────────────────────────┘

mapExists

Добавленный в: v23.4.0 Проверяет, выполняется ли условие хотя бы для одной пары ключ-значение в Map. mapExists — функция высшего порядка. В качестве первого аргумента в нее можно передать лямбда-функцию. Синтаксис
mapExists([func,] map)
Аргументы Возвращаемое значение Возвращает 1, если хотя бы одна пара ключ-значение удовлетворяет условию, в противном случае — 0. UInt8 Примеры Пример использования
Query
SELECT mapExists((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Response
1

mapExtractKeyLike

Добавленный в: v23.4.0 Принимает map со строковыми ключами и шаблон LIKE, а возвращает map с элементами, ключи которых соответствуют шаблону. Синтаксис
mapExtractKeyLike(map, pattern)
Аргументы
  • map — Map, из которого извлекаются данные. Map(K, V)
  • pattern — Шаблон регулярного выражения, с которым сопоставляются ключи. const String
Возвращаемое значение Возвращает Map, содержащий элементы, ключи которых соответствуют указанному шаблону регулярного выражения. Если ни один элемент не соответствует шаблону регулярного выражения, возвращается пустой Map. Map(K, V) Примеры Пример использования
Query
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;
Response
┌─mapExtractKeyLike(a, 'a%')─┐
│ {'abc':'abc'}              │
│ {}                         │
└────────────────────────────┘

mapExtractValueLike

Добавленный в: v25.5.0 Для map со строковыми значениями и шаблоном LIKE эта функция возвращает map, содержащий элементы, значения которых соответствуют шаблону. Синтаксис
mapExtractValueLike(map, pattern)
Аргументы
  • map — Map, из которого извлекаются данные. Map(K, V)
  • pattern — Шаблон регулярного выражения для сопоставления со значениями. const String
Возвращаемое значение Возвращает map, содержащий элементы, значения которых соответствуют указанному шаблону регулярного выражения. Если ни один элемент не соответствует шаблону регулярного выражения, возвращается пустой map. Map(K, V) Примеры Пример использования
Query
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;
Response
┌─mapExtractValueLike(a, 'a%')─┐
│ {'abc':'abc'}                │
│ {}                           │
└──────────────────────────────┘

mapFilter

Добавленный в: v22.3.0 Фильтрует map, применяя функцию к каждому её элементу. Синтаксис
mapFilter(func, map)
Аргументы Возвращаемое значение Возвращает Map, содержащий только те элементы, для которых func возвращает значение, отличное от 0. Map(K, V) Примеры Пример использования
Query
SELECT mapFilter((k, v) -> v > 1, map('k1', 1, 'k2', 2))
Response
{'k2':2}

mapFromArrays

Добавленный в: v23.3.0 Создает map из массива или map ключей и массива или map значений. Функция служит удобной альтернативой синтаксису CAST([...], 'Map(key_type, value_type)'). Синтаксис
mapFromArrays(keys, values)
Псевдонимы: MAP_FROM_ARRAYS Аргументы
  • keys — Массив или Map ключей, из которых создаётся карта. Array или Map
  • values — Массив или Map значений, из которых создаётся карта. Array или Map
Возвращаемое значение Возвращает карту с ключами и значениями, сформированную из массива ключей и массива/карты значений. Map Примеры Базовое использование
Query
SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])
Response
{'a':1,'b':2,'c':3}
Для входных данных типа Map
Query
SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))
Response
{1:('a', 1), 2:('b', 2), 3:('c', 3)}

mapKeys

Добавленный в: v21.2.0 Возвращает ключи заданного Map. Эту функцию можно оптимизировать, включив настройку optimize_functions_to_subcolumns. Когда настройка включена, функция считывает только подстолбец keys, а не весь Map. Запрос SELECT mapKeys(m) FROM table преобразуется в SELECT m.keys FROM table. Синтаксис
mapKeys(map)
Аргументы
  • map — Map, из которого извлекаются ключи. Map(K, V)
Возвращаемое значение Возвращает массив, содержащий все ключи карты. Array(T) Примеры Пример использования
Query
SELECT mapKeys(map('k1', 'v1', 'k2', 'v2'))
Response
['k1','k2']

mapPartialReverseSort

Добавленный в: v23.4.0 Сортирует элементы типа Map в порядке убывания; дополнительный аргумент limit позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям типа Map. Синтаксис
mapPartialReverseSort([func,] limit, map)
Аргументы
  • func — Необязательный параметр. Лямбда-функция. Лямбда-функция
  • limit — Сортируются элементы в диапазоне [1..limit]. (U)Int*
  • map — Сортируемый Map. Map(K, V)
Возвращаемое значение Возвращает частично отсортированный Map в порядке убывания. Map(K, V) Примеры Пример использования
Query
SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Response
{'k1':3,'k3':2,'k2':1}

mapPartialSort

Добавленный в: v23.4.0 Сортирует элементы map в порядке возрастания; дополнительный аргумент limit позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map. Синтаксис
mapPartialSort([func,] limit, map)
Аргументы
  • func — Необязательный. Лямбда-функция. лямбда-функция
  • limit — Сортируются элементы в диапазоне [1..limit]. (U)Int*
  • map — Сортируемое значение типа Map. Map(K, V)
Возвращаемое значение Возвращает частично отсортированное значение типа Map. Map(K, V) Примеры Пример использования
Query
SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Response
{'k2':1,'k3':2,'k1':3}

mapPopulateSeries

Добавленный в: v20.10.0 Заполняет отсутствующие пары ключ-значение в 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
Query
SELECT mapPopulateSeries(map(1, 10, 5, 20), 6)
Response
{1:10, 2:0, 3:0, 4:0, 5:20, 6:0}
С преобразованными массивами
Query
SELECT mapPopulateSeries([1, 2, 4], [11, 22, 44], 5)
Response
([1, 2, 3, 4, 5], [11, 22, 0, 44, 0])

mapReverseSort

Добавленный в: v23.4.0 Сортирует элементы Map в порядке убывания. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям Map. Синтаксис
mapReverseSort([func,] map)
Аргументы Возвращаемое значение Возвращает Map, отсортированный по убыванию. Map(K, V) Примеры Пример использования
Query
SELECT mapReverseSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Response
{'k1':3,'k3':2,'k2':1}

mapSort

Добавленный в: v23.4.0 Сортирует элементы Map по возрастанию. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям Map. Синтаксис
mapSort([func,] map)
Аргументы Возвращаемое значение Возвращает Map, отсортированную по возрастанию. Map(K, V) Примеры Пример использования
Query
SELECT mapSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Response
{'k2':1,'k3':2,'k1':3}

mapSubtract

Добавленный в: v20.7.0 Собирает все ключи и вычитает соответствующие им значения. Синтаксис
mapSubtract(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
Query
SELECT mapSubtract(map(1, 1), map(1, 1))
Response
{1:0}
С map из кортежей
Query
SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1]))
Response
([1, 2], [-1, 0])

mapUpdate

Добавленный в: v22.3.0 Для двух Map возвращает первую Map, в которой значения обновлены значениями для соответствующих ключей из второй Map. Синтаксис
mapUpdate(map1, map2)
Аргументы
  • map1Map, который нужно обновить. Map(K, V)
  • map2Map, значения из которого используются для обновления. Map(K, V)
Возвращаемое значение Возвращает map1, в котором значения обновлены на основе значений соответствующих ключей из map2. Map(K, V) Примеры Базовое использование
Query
SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10))
Response
{'key3':0,'key1':10,'key2':10}

mapValues

Добавленный в: v21.2.0 Возвращает значения указанного Map. Эту функцию можно оптимизировать, включив настройку optimize_functions_to_subcolumns. Если настройка включена, функция считывает только подстолбец values, а не весь Map. Запрос SELECT mapValues(m) FROM table преобразуется в SELECT m.values FROM table. Синтаксис
mapValues(map)
Аргументы
  • map — объект Map, из которого извлекаются значения. Map(K, V)
Возвращаемое значение Возвращает массив, содержащий все значения из Map. Array(T) Примеры Пример использования
Query
SELECT mapValues(map('k1', 'v1', 'k2', 'v2'))
Response
['v1','v2']
Последнее изменение 10 июня 2026 г.