Функции Map
extractKeyValuePairs
Введено в: v
Извлекает пары ключ-значение из произвольной строки. Строка не обязана строго соответствовать формату пар ключ-значение;
она может содержать «шум» (например, файлы журналов / логи). Формат пар ключ-значение, который нужно интерпретировать, задаётся через аргументы функции.
Пара ключ-значение состоит из ключа, за которым следует key_value_delimiter, и значения. Также поддерживаются ключи и значения, заключённые в кавычки. Пары ключ-значение должны быть разделены разделителями пар ключ-значение.
Синтаксис
Аргументы
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).
Примеры
Запрос:
Простой пример
Одинарная кавычка как символ обрамления
Примеры unexpected_quoting_character_strategy:
unexpected_quoting_character_strategy=invalid
unexpected_quoting_character_strategy=accept
unexpected_quoting_character_strategy=promote
Escape-последовательности при отключённой поддержке экранирования
Синтаксис
Псевдонимы: 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\, и последующее экранирование сохранит это без изменений.
- Последующее экранирование:
Начальные последовательности экранирования в ключах будут пропущены и будут считаться недопустимыми для значений.
Последовательности экранирования при включённой поддержке экранирования
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
Примеры
map
Добавлена в: v21.1
Создаёт значение типа Map(key, value) из пар ключ–значение.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает map с парами ключ:значение. Map(Any, Any)
Примеры
Пример использования
mapAdd
Добавлена в версии: v20.7
Собирает все ключи и суммирует соответствующие значения.
Синтаксис
Аргументы
arg1[, arg2, ...]— значения типовMapилиTupleиз двух массивов, в которых элементы первого массива представляют ключи, а второй массив содержит значения для каждого ключа.Map(K, V)илиTuple(Array(T), Array(T))
Возвращаемое значение
Возвращает значение типа Map или Tuple, где первый массив содержит отсортированные ключи, а второй массив — соответствующие им значения. Map(K, V) или Tuple(Array(T), Array(T))
Примеры
Для типа Map
С использованием кортежа
mapAll
Введена в: v23.4
Проверяет, выполняется ли условие для всех пар ключ–значение в map.
mapAll — это функция высшего порядка.
В качестве первого аргумента ей можно передать лямбда-функцию.
Синтаксис
Аргументы
func— лямбда-функция.Lambda functionmap— проверяемая структура Map.Map(K, V)
Возвращаемое значение
Возвращает 1, если все пары ключ-значение удовлетворяют условию, иначе 0. UInt8
Примеры
Пример использования
mapApply
Впервые представлена в: v22.3
Применяет функцию к каждому элементу map.
Синтаксис
Аргументы
func— лямбда-функция.Lambda functionmap— map, к которому применяется функция.Map(K, V)
Возвращаемое значение
Возвращает новый map, полученный из исходного map посредством применения func к каждому элементу. Map(K, V)
Примеры
Пример использования
mapConcat
Появилась в версии: v23.4
Объединяет несколько значений типа Map по совпадающим ключам.
Если элементы с одинаковым ключом присутствуют более чем в одном входном значении Map, все элементы добавляются в результирующее значение Map, но через оператор [] доступен только первый.
Синтаксис
Аргументы
maps— произвольное количество отображений типаMap.
Возвращаемое значение
Возвращает Map, полученный объединением карт, переданных в качестве аргументов. Map
Примеры
Пример использования
mapContainsKey
Введена в версии: v21.2
Определяет, содержится ли ключ в map.
Синтаксис
Псевдонимы: mapContains
Аргументы
map— отображение, в котором выполняется поиск.Map(K, V)key— ключ для поиска. Тип должен совпадать с типом ключа отображения.Any
Возвращаемое значение
Возвращает 1, если отображение содержит ключ, и 0, если не содержит. UInt8
Примеры
Пример использования
mapContainsKeyLike
Добавлено в версии: v23.4
Проверяет, содержит ли map ключ, соответствующий заданному шаблону LIKE.
Синтаксис
Аргументы
map— Карта, в которой выполняется поиск.Map(K, V)pattern— Шаблон для сопоставления с ключами.const String
Возвращаемое значение
Возвращает 1, если map содержит ключ, соответствующий pattern, иначе 0. UInt8
Примеры
Пример использования
mapContainsValue
Впервые представлена в: v25.6
Определяет, содержится ли значение в отображении (map).
Синтаксис
Аргументы
map— отображение, в котором выполняется поиск.Map(K, V)value— значение, которое требуется найти. Тип должен совпадать с типом значений отображения.Any
Возвращаемое значение
Возвращает 1, если отображение содержит это значение, и 0 в противном случае. UInt8
Примеры
Пример использования
mapContainsValueLike
Впервые появилась в версии: v25.5
Проверяет, содержит ли отображение (map) значение, соответствующее шаблону LIKE.
Синтаксис
Аргументы
map— карта, в которой выполняется поиск.Map(K, V)pattern— шаблон для сопоставления значений.const String
Возвращаемое значение
Возвращает 1, если map содержит значение, соответствующее pattern, иначе 0. UInt8
Примеры
Пример использования
mapExists
Введена в версии: v23.4
Проверяет, выполняется ли условие хотя бы для одной пары ключ–значение в типе данных Map.
mapExists — это функция высшего порядка.
В качестве первого аргумента ей можно передать лямбда-функцию.
Синтаксис
Аргументы
func— необязательный параметр. Лямбда-функция.Lambda functionmap— отображение для проверки.Map(K, V)
Возвращаемое значение
Возвращает 1, если хотя бы одна пара ключ-значение удовлетворяет условию, иначе 0. UInt8
Примеры
Пример использования
mapExtractKeyLike
Добавлена в версии v23.4
Для карты со строковыми ключами и шаблоном LIKE эта функция возвращает карту с элементами, ключи которых соответствуют шаблону.
Синтаксис
Аргументы
map— Карта, из которой выполняется извлечение.Map(K, V)pattern— Шаблон для сопоставления с ключами карты.const String
Возвращаемое значение
Возвращает карту, содержащую элементы, ключ которых соответствует указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая карта. Map(K, V)
Примеры
Пример использования
mapExtractValueLike
Впервые появилась в: v25.5
Для заданного map со строковыми значениями и шаблоном LIKE эта функция возвращает map с элементами, значения которых соответствуют шаблону.
Синтаксис
Аргументы
map— карта, из которой выполняется извлечение.Map(K, V)pattern— шаблон для сопоставления значений.const String
Возвращаемое значение
Возвращает карту, содержащую элементы, значение которых соответствует указанному шаблону. Если ни один элемент не соответствует шаблону, возвращается пустая карта. Map(K, V)
Примеры
Пример использования
mapFilter
Появилась в версии: v22.3
Фильтрует map, применяя функцию к каждому её элементу.
Синтаксис
Аргументы
func— лямбда-функция.Lambda functionmap— отображение (map), которое нужно отфильтровать.Map(K, V)
Возвращаемое значение
Возвращает отображение (map), содержащее только те элементы, для которых func возвращает значение, отличное от 0. Map(K, V)
Примеры
Пример использования
mapFromArrays
Введена в версии: v23.3
Создаёт Map из массива или Map с ключами и массива или Map со значениями.
Функция является удобной альтернативой синтаксису CAST([...], 'Map(key_type, value_type)').
Синтаксис
Псевдонимы: MAP_FROM_ARRAYS
Аргументы
keys— Массив илиMapс ключами, из которых создаётся отображение.ArrayилиMapvalues— Массив илиMapсо значениями, из которых создаётся отображение.ArrayилиMap
Возвращаемое значение
Возвращает отображение с ключами и значениями, построенными на основе массива ключей и массива/Map значений. Map
Примеры
Базовое использование
Для входных данных типа map
mapKeys
Добавлено в версии: v21.2
Возвращает ключи указанного столбца типа Map.
Эта функция может быть оптимизирована путём включения настройки optimize_functions_to_subcolumns.
При включённой настройке функция читает только подстолбец keys вместо всего столбца Map.
Запрос SELECT mapKeys(m) FROM table преобразуется в SELECT m.keys FROM table.
Синтаксис
Аргументы
map— отображение, из которого извлекаются ключи.Map(K, V)
Возвращаемое значение
Возвращает массив, содержащий все ключи отображения. Array(T)
Примеры
Пример использования
mapPartialReverseSort
Добавлена в версии: v23.4
Сортирует элементы map по убыванию с дополнительным аргументом limit, который позволяет выполнять частичную сортировку.
Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.
Синтаксис
Аргументы
func— Необязательный параметр. Лямбда-функция.Лямбда-функцияlimit— Сортируются элементы в диапазоне[1..limit].(U)Int*map— Отображение (map), которое требуется отсортировать.Map(K, V)
Возвращаемое значение
Возвращает частично отсортированное отображение (map) по убыванию. Map(K, V)
Примеры
Пример использования
mapPartialSort
Введена в версии v23.4
Сортирует элементы map по возрастанию с дополнительным аргументом limit, который позволяет выполнять частичную сортировку. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.
Синтаксис
Аргументы
func— Необязательный аргумент. Лямбда-функция.Lambda functionlimit— Сортируются элементы в диапазоне[1..limit].(U)Int*map— Отображение (map) для сортировки.Map(K, V)
Возвращаемое значение
Возвращает частично отсортированное отображение. Map(K, V)
Примеры
Пример использования
mapPopulateSeries
Введена в: v20.10
Заполняет отсутствующие пары ключ-значение в map с целочисленными ключами.
Чтобы можно было продолжить последовательность ключей за пределы наибольшего значения, можно указать максимальный ключ.
Более точно, функция возвращает map, в котором ключи образуют последовательность от наименьшего до наибольшего ключа (или до аргумента max, если он указан) с шагом 1 и соответствующими значениями.
Если для ключа не задано значение, используется значение по умолчанию.
Если ключи повторяются, с ключом связывается только первое значение (в порядке появления).
Синтаксис
Аргументы
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
С сопоставленными массивами
mapReverseSort
Введена в версии: v23.4
Сортирует элементы map в порядке убывания.
Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.
Синтаксис
Аргументы
func— необязательная лямбда‑функция.Lambda functionmap— отображение для сортировки.Map(K, V)
Возвращаемое значение
Возвращает отображение, отсортированное по убыванию. Map(K, V)
Примеры
Пример использования
mapSort
Впервые добавлена в: v23.4
Сортирует элементы map по возрастанию. Если указана функция func, порядок сортировки определяется результатом применения функции func к ключам и значениям map.
Синтаксис
Аргументы
func— Необязательная лямбда-функция.Lambda functionmap— Map для сортировки.Map(K, V)
Возвращаемое значение
Возвращает Map, отсортированный по возрастанию. Map(K, V)
Примеры
Пример использования
mapSubtract
Появилась в версии v20.7
Собирает все ключи и вычитает соответствующие им значения.
Синтаксис
Аргументы
arg1[, arg2, ...]— значения типаMapили кортежи из двух массивов, в которых элементы первого массива являются ключами, а второй массив содержит значения, соответствующие каждому ключу.Map(K, V)илиTuple(Array(T), Array(T))
Возвращаемое значение
Возвращает одно значение типа Map или кортеж, где первый массив содержит отсортированные ключи, а второй массив — соответствующие им значения. Map(K, V) или Tuple(Array(T), Array(T))
Примеры
С типом Map
С отображением с кортежами в качестве ключей
mapUpdate
Впервые появилась в: v22.3
Для двух map возвращает первую map, в которой значения заменены на значения из второй map для соответствующих ключей.
Синтаксис
Аргументы
map1— Отображение, которое нужно обновить.Map(K, V)map2— Отображение, используемое для обновления.Map(K, V)
Возвращаемое значение
Возвращает map1, в котором значения для соответствующих ключей обновлены значениями из map2. Map(K, V)
Примеры
Базовое использование
mapValues
Введена в версии: v21.2
Возвращает значения заданной карты.
Эту функцию можно оптимизировать, включив настройку optimize_functions_to_subcolumns.
При включённой настройке функция читает только подстолбец values вместо всей карты.
Запрос SELECT mapValues(m) FROM table преобразуется в SELECT m.values FROM table.
Синтаксис
Аргументы
map— отображение, из которого извлекаются значения.Map(K, V)
Возвращаемое значение
Возвращает массив, содержащий все значения из отображения. Array(T)
Примеры
Пример использования