Introduzido em: v23.4.0
Extrai pares chave-valor de qualquer string. A string não precisa estar 100% estruturada no formato de par chave-valor;
Pode conter ruído (por exemplo, arquivos de log). O formato de par chave-valor a ser interpretado deve ser especificado por meio dos argumentos da função.
Um par chave-valor consiste em uma chave seguida de um key_value_delimiter e um valor. Chaves e valores entre aspas também são suportados. Os pares chave-valor devem ser separados por delimitadores de pares.
Sintaxe
extractKeyValuePairs(data, [key_value_delimiter], [pair_delimiter], [quoting_character])
Argumentos
data - String da qual serão extraídos pares chave-valor. String ou FixedString.
key_value_delimiter - Caractere a ser usado como delimitador entre a chave e o valor. O padrão é :. String ou FixedString.
pair_delimiters - Conjunto de caracteres a ser usado como delimitadores entre pares. O padrão é \space, , e ;. String ou FixedString.
quoting_character - Caractere a ser usado para delimitar aspas. O padrão é ". String ou FixedString.
unexpected_quoting_character_strategy - Estratégia para lidar com caracteres de aspas em posições inesperadas durante a fase read_key e read_value. Valores possíveis: invalid, accept e promote. invalid descartará a chave ou o valor e fará a transição de volta para o estado WAITING_KEY. accept o tratará como um caractere normal. promote fará a transição para o estado READ_QUOTED_{KEY/VALUE} e começará a partir do próximo caractere. O valor padrão é INVALID
Valores retornados
- Os pares chave-valor extraídos em um Map(String, String).
Exemplos
Consulta:
Caso simples
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'} │
└─────────────────────────────────────────────────────────────────────────┘
Aspas simples como caractere de aspas
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'} │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
exemplos de 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;
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;
SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'PROMOTE') as kv;
┌─kv───────────┐
│ {'abc':'5'} │
└──────────────┘
Sequências de escape sem suporte a escapes
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'} │
└───────────────────────┘
Sintaxe
extractKeyValuePairs(input)
Aliases: str_to_map, mapFromString
Argumentos
Valor retornado
Exemplos
Introduzido em: v23.4.0
Igual a extractKeyValuePairs, mas com suporte a sequências de escape.
Sequências de escape aceitas: \x, \N, \a, \b, \e, \f, \n, \r, \t, \v e \0.
Sequências de escape fora do padrão são retornadas como estão (incluindo a barra invertida), a menos que sejam uma das seguintes:
\\, ', ", backtick, /, = ou caracteres de controle ASCII (c <= 31).
Esta função atende ao caso de uso em que pre-escaping e post-escaping não são adequados. Por exemplo, considere a seguinte
string de entrada: a: "aaaa\"bbb". A saída esperada é: a: aaaa\"bbbb.
- Pre-escaping: ao aplicar pre-escaping, a saída será:
a: "aaaa"bbb" e extractKeyValuePairs então produzirá: a: aaaa
- Post-escaping:
extractKeyValuePairs produzirá a: aaaa\ e o post-escaping o manterá como está.
As sequências de escape iniciais serão ignoradas nas chaves e consideradas inválidas nos valores.
Sequências de escape com suporte a sequências de escape habilitado
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'} │
└──────────────────┘
Sintaxe
extractKeyValuePairsWithEscaping(input)
Argumentos
Valor retornado
Exemplos
Introduzido em: v21.1.0
Cria um valor do tipo Map(key, value) a partir de pares chave-valor.
Sintaxe
map(key1, value1[, key2, value2, ...])
Argumentos
key_n — As chaves das entradas do map. Any
value_n — Os valores das entradas do map. Any
Valor retornado
Retorna um map que contém pares chave:valor. Map(Any, Any)
Exemplos
Exemplo de uso
SELECT map('key1', number, 'key2', number * 2) FROM numbers(3)
{'key1':0,'key2':0}
{'key1':1,'key2':2}
{'key1':2,'key2':4}
Introduzido em: v20.7.0
Coleta todas as chaves e soma os valores correspondentes.
Sintaxe
mapAdd(arg1[, arg2, ...])
Argumentos
arg1[, arg2, ...] — maps ou tuplas de dois arrays, nos quais os itens do primeiro array representam chaves, e o segundo array contém os valores de cada chave. Map(K, V) ou Tuple(Array(T), Array(T))
Valor retornado
Retorna um map ou uma tupla, em que o primeiro array contém as chaves ordenadas e o segundo array contém os valores. Map(K, V) ou Tuple(Array(T), Array(T))
Exemplos
Com o tipo Map
SELECT mapAdd(map(1, 1), map(1, 1))
Com tupla
SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1]))
Introduzido em: v23.4.0
Verifica se uma condição é satisfeita para todos os pares chave-valor em um map.
mapAll é uma função de ordem superior.
Você pode passar uma função lambda como primeiro argumento.
Sintaxe
Argumentos
Valor retornado
Retorna 1 se todos os pares chave-valor satisfizerem a condição, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT mapAll((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Introduzido em: v22.3.0
Aplica uma função a cada elemento de um map.
Sintaxe
Argumentos
Valor retornado
Retorna um novo map obtido a partir do map original pela aplicação de func a cada elemento. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapApply((k, v) -> (k, v * 2), map('k1', 1, 'k2', 2))
Introduzido em: v23.4.0
Concatena vários maps com base na igualdade entre suas chaves.
Se houver elementos com a mesma chave em mais de um map de entrada, todos os elementos serão adicionados ao map resultante, mas apenas o primeiro poderá ser acessado pelo operador [].
Sintaxe
Argumentos
maps — Uma quantidade arbitrária de maps. Map
Valor retornado
Retorna um map com a concatenação dos maps passados como argumentos. Map
Exemplos
Exemplo de uso
SELECT mapConcat(map('k1', 'v1'), map('k2', 'v2'))
Introduzido em: v21.2.0
Determina se uma chave está contida em um map.
Sintaxe
Aliases: mapContains
Argumentos
map — map em que pesquisar. Map(K, V)
key — chave a ser pesquisada. O tipo deve corresponder ao tipo da chave do map. Any
Valor retornado
Retorna 1 se o map contiver a chave, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT mapContainsKey(map('k1', 'v1', 'k2', 'v2'), 'k1')
Introduzido em: v23.4.0
Verifica se o map contém uma chave correspondente ao padrão especificado com LIKE.
Sintaxe
mapContainsKeyLike(map, pattern)
Argumentos
Valor retornado
Retorna 1 se map contiver uma chave que corresponda a pattern; caso contrário, 0. UInt8
Exemplos
Exemplo de uso
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 │
└─────────────────────────────┘
Introduzido em: v25.6.0
Determina se um valor está presente em um map.
Sintaxe
mapContainsValue(map, value)
Argumentos
map — map em que a busca será realizada. Map(K, V)
value — Valor a ser buscado. O tipo deve corresponder ao tipo de valor do map. Any
Valor retornado
Retorna 1 se o map contiver o valor e 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT mapContainsValue(map('k1', 'v1', 'k2', 'v2'), 'v1')
Introduzido em: v25.5.0
Verifica se um map contém um valor que corresponde ao padrão especificado via LIKE.
Sintaxe
mapContainsValueLike(map, pattern)
Argumentos
map — map em que será feita a busca. Map(K, V)
pattern — Padrão usado para corresponder aos valores. const String
Valor retornado
Retorna 1 se map contiver um valor que corresponda a pattern, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
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 │
└──────────────────────────┘
Introduzido em: v23.4.0
Verifica se uma condição é atendida para pelo menos um par chave-valor em um map.
mapExists é uma função de ordem superior.
Você pode passar uma função lambda como primeiro argumento.
Sintaxe
Argumentos
Valor retornado
Retorna 1 se pelo menos um par chave-valor atender à condição, 0 caso contrário. UInt8
Exemplos
Exemplo de uso
SELECT mapExists((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Introduzido em: v23.4.0
Dado um map com chaves do tipo string e um padrão LIKE, esta função retorna um map com os elementos cuja chave corresponde ao padrão.
Sintaxe
mapExtractKeyLike(map, pattern)
Argumentos
Valor retornado
Retorna um map contendo os elementos cujas chaves correspondem ao padrão especificado. Se nenhum elemento corresponder ao padrão, será retornado um map vazio. Map(K, V)
Exemplos
Exemplo de uso
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'} │
│ {} │
└────────────────────────────┘
Introduzido na versão: v25.5.0
Dado um map com valores do tipo string e um padrão LIKE, esta função retorna um map com os elementos cujo valor corresponde ao padrão.
Sintaxe
mapExtractValueLike(map, pattern)
Argumentos
Valor retornado
Retorna um map contendo os elementos cujo valor corresponde ao padrão especificado. Se nenhum elemento corresponder ao padrão, será retornado um map vazio. Map(K, V)
Exemplos
Exemplo de uso
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'} │
│ {} │
└──────────────────────────────┘
Introduzido em: v22.3.0
Filtra um map aplicando uma função a cada um de seus elementos.
Sintaxe
Argumentos
Valor retornado
Retorna um map que contém apenas os elementos para os quais func retorna um valor diferente de 0. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapFilter((k, v) -> v > 1, map('k1', 1, 'k2', 2))
Introduzido em: v23.3.0
Cria um map a partir de um array ou map de chaves e de um array ou map de valores.
A função é uma alternativa conveniente à sintaxe CAST([...], 'Map(key_type, value_type)').
Sintaxe
mapFromArrays(keys, values)
Aliases: MAP_FROM_ARRAYS
Argumentos
keys — Array ou map de chaves a partir do qual criar o map. Array ou Map
values — Array ou map de valores a partir do qual criar o map. Array ou Map
Valor retornado
Retorna um map com chaves e valores construídos a partir do array de chaves e do array/map de valores. Map
Exemplos
Uso básico
SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])
Com entradas do tipo map
SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))
{1:('a', 1), 2:('b', 2), 3:('c', 3)}
Introduzido em: v21.2.0
Retorna as chaves de um determinado map.
Esta função pode ser otimizada ativando a configuração optimize_functions_to_subcolumns.
Com a configuração ativada, a função lê apenas a subcoluna keys, em vez do map inteiro.
A consulta SELECT mapKeys(m) FROM table é transformada em SELECT m.keys FROM table.
Sintaxe
Argumentos
map — map do qual as chaves serão extraídas. Map(K, V)
Valor retornado
Retorna um array com todas as chaves do mapa. Array(T)
Exemplos
Exemplo de uso
SELECT mapKeys(map('k1', 'v1', 'k2', 'v2'))
Introduzido em: v23.4.0
Ordena os elementos de um map em ordem decrescente, com um argumento de limite adicional que permite ordenação parcial.
Se a função func for especificada, a ordem de ordenação será determinada pelo resultado da função func aplicada às chaves e aos valores do map.
Sintaxe
mapPartialReverseSort([func,] limit, map)
Argumentos
func — Opcional. Função lambda. Função lambda
limit — Os elementos no intervalo [1..limit] são ordenados. (U)Int*
map — map a ser ordenado. Map(K, V)
Valor retornado
Retorna um map parcialmente ordenado em ordem decrescente. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Introduzido em: v23.4.0
Ordena os elementos de um map em ordem crescente, com um argumento adicional de limite que permite ordenação parcial.
Se a função func for especificada, a ordem de classificação será determinada pelo resultado da função func aplicada às chaves e aos valores do map.
Sintaxe
mapPartialSort([func,] limit, map)
Argumentos
func — Opcional. Função lambda. Função lambda
limit — Os elementos no intervalo [1..limit] são ordenados. (U)Int*
map — map a ser ordenado. Map(K, V)
Valor retornado
Retorna um map parcialmente ordenado. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Introduzido em: v20.10.0
Preenche pares chave-valor ausentes em um map com chaves inteiras.
Para permitir estender as chaves além do maior valor, é possível especificar uma chave máxima.
Mais especificamente, a função retorna um map em que as chaves formam uma série da menor até a maior chave (ou o argumento max, se especificado), com passo 1, e seus valores correspondentes.
Se nenhum valor for especificado para uma chave, um valor padrão será usado.
Caso haja chaves repetidas, somente o primeiro valor (na ordem de aparição) será associado à chave.
Sintaxe
mapPopulateSeries(map[, max]) | mapPopulateSeries(keys, values[, max])
Argumentos
Valor retornado
Retorna um map ou uma tupla de dois arrays, em que o primeiro contém as chaves em ordem ordenada e o segundo contém os valores das chaves correspondentes. Map(K, V) ou Tuple(Array(UInt*), Array(Any))
Exemplos
Com o tipo Map
SELECT mapPopulateSeries(map(1, 10, 5, 20), 6)
{1:10, 2:0, 3:0, 4:0, 5:20, 6:0}
Com arrays mapeados
SELECT mapPopulateSeries([1, 2, 4], [11, 22, 44], 5)
([1, 2, 3, 4, 5], [11, 22, 0, 44, 0])
Introduzido em: v23.4.0
Ordena os elementos de um map em ordem decrescente.
Se a função func for especificada, a ordem de classificação será determinada pelo resultado da aplicação da função func às chaves e aos valores do map.
Sintaxe
mapReverseSort([func,] map)
Argumentos
Valor retornado
Retorna um map em ordem decrescente. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapReverseSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Introduzido em: v23.4.0
Ordena os elementos de um map em ordem crescente.
Se a função func for especificada, a ordem de classificação será determinada pelo resultado da função func aplicada às chaves e aos valores do map.
Sintaxe
Argumentos
Valor retornado
Retorna um map ordenado em ordem crescente. Map(K, V)
Exemplos
Exemplo de uso
SELECT mapSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Introduzido em: v20.7.0
Coleta todas as chaves e subtrai os valores correspondentes.
Sintaxe
mapSubtract(arg1[, arg2, ...])
Argumentos
arg1[, arg2, ...] — maps ou tuplas de dois arrays, em que os itens do primeiro array representam as chaves, e o segundo array contém os valores de cada chave. Map(K, V) ou Tuple(Array(T), Array(T))
Valor retornado
Retorna um map ou uma tupla, em que o primeiro array contém as chaves ordenadas e o segundo array contém os valores. Map(K, V) ou Tuple(Array(T), Array(T))
Exemplos
Com o tipo Map
SELECT mapSubtract(map(1, 1), map(1, 1))
Com map de tuplas
SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1]))
Introduzido em: v22.3.0
Para dois maps, retorna o primeiro map com os valores atualizados com base nos valores das chaves correspondentes no segundo map.
Sintaxe
Argumentos
Valor retornado
Retorna map1 com os valores atualizados com base nos valores das chaves correspondentes em map2. Map(K, V)
Exemplos
Uso básico
SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10))
{'key3':0,'key1':10,'key2':10}
Introduzida em: v21.2.0
Retorna os valores de um determinado map.
Esta função pode ser otimizada ao ativar a configuração optimize_functions_to_subcolumns.
Com a configuração ativada, a função lê apenas a subcoluna values, em vez do map inteiro.
A consulta SELECT mapValues(m) FROM table é transformada em SELECT m.values FROM table.
Sintaxe
Argumentos
map — Map de onde extrair os valores. Map(K, V)
Valor retornado
Retorna um array contendo todos os valores do map. Array(T)
Exemplos
Exemplo de uso
SELECT mapValues(map('k1', 'v1', 'k2', 'v2'))
Última modificação em 10 de junho de 2026