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

Функции Map

map

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

Синтаксис

Аргументы

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

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

Примеры

Запрос:

Результат:

mapFromArrays

Создает карту из массива или карты ключей и массива или карты значений.

Эта функция является удобной альтернативой синтаксису 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]).

Синтаксис

Псевдоним: MAP_FROM_ARRAYS(keys, values)

Аргументы

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

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

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

Пример

Запрос:

Результат:

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

Результат:

Результат:

extractKeyValuePairs

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

Синтаксис

Псевдонимы:

  • str_to_map
  • mapFromString

Аргументы

  • data - Строка, из которой нужно извлечь пары ключ-значение. String или FixedString.
  • key_value_delimiter - Один символ, разделяющий ключи и значения. По умолчанию :. String или FixedString.
  • pair_delimiters - Набор символов, разделяющий пары. По умолчанию , , и ;. String или FixedString.
  • quoting_character - Один символ, используемый в качестве символа кавычки. По умолчанию ". String или FixedString.

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

Примеры

Запрос:

Результат:

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

Результат:

Эскейп последовательности без поддержки эскейпов:

Результат:

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

Результат:

extractKeyValuePairsWithEscaping

То же самое, что и 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\, и последующее экранирование сохранит его как есть.

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

Примеры

Эскейп последовательности с поддержкой эскейп последовательностей включены:

Результат:

mapAdd

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

Синтаксис

Аргументы

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

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

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

Пример

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

Результат:

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

Результат:

mapSubtract

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

Синтаксис

Аргументы

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

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

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

Пример

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

Результат:

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

Результат:

mapPopulateSeries

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

Синтаксис

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

Аргументы

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

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

  • map — Карта с целыми ключами. Map.

или

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

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

Пример

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

Результат:

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

Результат:

mapContains

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

Синтаксис

Аргументы

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

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

  • 1, если map содержит key, 0, если нет. UInt8.

Пример

Запрос:

Результат:

mapKeys

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

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

Синтаксис

Аргументы

  • map — Карта. Map.

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

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

Пример

Запрос:

Результат:

mapValues

Возвращает значения данной карты.

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

Синтаксис

Аргументы

  • map — Карта. Map.

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

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

Пример

Запрос:

Результат:

mapContainsKeyLike

Синтаксис

Аргументы

  • map — Карта. Map.
  • pattern - Шаблон строки для сопоставления.

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

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

Пример

Запрос:

Результат:

mapExtractKeyLike

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

Синтаксис

Аргументы

  • map — Карта. Map.
  • pattern - Шаблон строки для сопоставления.

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

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

Пример

Запрос:

Результат:

mapApply

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

Синтаксис

Аргументы

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

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

Пример

Запрос:

Результат:

mapFilter

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

Синтаксис

Аргументы

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

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

Пример

Запрос:

Результат:

mapUpdate

Синтаксис

Аргументы

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

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

Пример

Запрос:

Результат:

mapConcat

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

Синтаксис

Аргументы

  • maps – Произвольное количество Maps.

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

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

Примеры

Запрос:

Результат:

Запрос:

Результат:

mapExists([func,], map)

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

примечание

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

Пример

Запрос:

Результат:

mapAll([func,] map)

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

примечание

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

Пример

Запрос:

Результат:

mapSort([func,], map)

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

Примеры

Для получения дополнительной информации см. ссылку на функцию arraySort.

mapPartialSort

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

Синтаксис

Аргументы

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

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

  • Частично отсортированная карта. Map.

Пример

mapReverseSort([func,], map)

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

Примеры

Для получения дополнительной информации см. функцию arrayReverseSort.

mapPartialReverseSort

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

Синтаксис

Аргументы

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

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

  • Частично отсортированная карта. Map.

Пример