Introduit dans : v23.4.0
Extrait des paires clé-valeur depuis n’importe quelle chaîne. La chaîne n’a pas besoin d’être structurée à 100 % au format de paires clé-valeur ;
Il peut contenir du bruit (par exemple, des fichiers de log). Le format des paires clé-valeur à interpréter doit être spécifié via les arguments de la fonction.
Une paire clé-valeur est composée d’une clé suivie d’un key_value_delimiter et d’une valeur. Les clés et valeurs entre guillemets sont également prises en charge. Les paires clé-valeur doivent être séparées par des délimiteurs de paires.
Syntaxe
extractKeyValuePairs(data, [key_value_delimiter], [pair_delimiter], [quoting_character])
Arguments
data - Chaîne dont extraire des paires clé-valeur. String ou FixedString.
key_value_delimiter - Caractère utilisé comme délimiteur entre la clé et la valeur. La valeur par défaut est :. String ou FixedString.
pair_delimiters - Ensemble de caractères utilisés comme délimiteurs entre les paires. La valeur par défaut est \space, , et ;. String ou FixedString.
quoting_character - Caractère utilisé comme caractère de guillemet. La valeur par défaut est ". String ou FixedString.
unexpected_quoting_character_strategy - Stratégie de gestion des caractères de guillemet lorsqu’ils apparaissent à des emplacements inattendus pendant les phases read_key et read_value. Valeurs possibles : invalid, accept et promote. Invalid supprimera la clé/valeur et reviendra à l’état WAITING_KEY. Accept le traitera comme un caractère normal. Promote passera à l’état READ_QUOTED_{KEY/VALUE} et commencera à partir du caractère suivant. La valeur par défaut est INVALID
Valeurs renvoyées
- Les paires clé-valeur extraites sous forme de Map(String, String).
Exemples
Requête :
Cas simple
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'} │
└─────────────────────────────────────────────────────────────────────────┘
Apostrophe comme caractère de délimitation
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'} │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Exemples 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'} │
└──────────────┘
Séquences d’échappement sans prise en charge de l’échappement
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'} │
└───────────────────────┘
Syntaxe
extractKeyValuePairs(input)
Alias : str_to_map, mapFromString
Arguments
Valeur renvoyée
Exemples
Introduit dans : v23.4.0
Identique à extractKeyValuePairs, mais avec la prise en charge de l’échappement.
Séquences d’échappement prises en charge : \x, \N, \a, \b, \e, \f, \n, \r, \t, \v et \0.
Les séquences d’échappement non standard sont renvoyées telles quelles (y compris le backslash), sauf si elles correspondent à l’une des suivantes :
\\, ', ", backtick, /, = ou des caractères de contrôle ASCII (c <= 31).
Cette fonction couvre le cas d’usage où le pré-échappement et le post-échappement ne conviennent pas. Par exemple, considérons la
chaîne d’entrée suivante : a: "aaaa\"bbb". La sortie attendue est : a: aaaa\"bbbb.
- Pré-échappement : en appliquant le pré-échappement, on obtient
a: "aaaa"bbb" et extractKeyValuePairs renverra alors a: aaaa
- Post-échappement :
extractKeyValuePairs renverra a: aaaa\ et le post-échappement le conservera tel quel.
Les séquences d’échappement en tête seront ignorées dans les clés et considérées comme invalides pour les valeurs.
Séquences d’échappement avec la prise en charge de l’échappement activée
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'} │
└──────────────────┘
Syntaxe
extractKeyValuePairsWithEscaping(input)
Arguments
valeur renvoyée
Exemples
Introduit dans : v21.1.0
Crée une valeur de type Map(key, value) à partir de paires clé-valeur.
Syntaxe
map(key1, value1[, key2, value2, ...])
Arguments
key_n — Les clés des entrées de la map. Any
value_n — Les valeurs des entrées de la map. Any
Valeur renvoyée
Renvoie une map contenant des paires clé:valeur. Map(Any, Any)
Exemples
Exemple d’utilisation
SELECT map('key1', number, 'key2', number * 2) FROM numbers(3)
{'key1':0,'key2':0}
{'key1':1,'key2':2}
{'key1':2,'key2':4}
Introduit dans : v20.7.0
Rassemble toutes les clés et additionne les valeurs correspondantes.
Syntaxe
mapAdd(arg1[, arg2, ...])
Arguments
arg1[, arg2, ...] — Objets map ou tuples composés de deux tableaux, dans lesquels les éléments du premier tableau représentent les clés et le second tableau contient les valeurs associées à chaque clé. Map(K, V) ou Tuple(Array(T), Array(T))
Valeur renvoyée
Renvoie un objet map ou un tuple, dans lequel le premier tableau contient les clés triées et le second tableau contient les valeurs. Map(K, V) ou Tuple(Array(T), Array(T))
Exemples
Avec le type map
SELECT mapAdd(map(1, 1), map(1, 1))
Avec un tuple
SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1]))
Disponible à partir de : v23.4.0
Vérifie si une condition est remplie pour toutes les paires clé-valeur d’une map.
mapAll est une fonction d’ordre supérieur.
Vous pouvez lui passer une fonction lambda en premier argument.
Syntaxe
Arguments
Valeur renvoyée
Renvoie 1 si toutes les paires clé-valeur respectent la condition, 0 sinon. UInt8
Exemples
Exemple d’utilisation
SELECT mapAll((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Introduit dans : v22.3.0
Applique une fonction à chaque élément d’une map.
Syntaxe
Arguments
Valeur renvoyée
Renvoie une nouvelle map obtenue à partir de la map d’origine en appliquant func à chaque élément. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapApply((k, v) -> (k, v * 2), map('k1', 1, 'k2', 2))
Introduit dans : v23.4.0
Concatène plusieurs maps en fonction de l’égalité de leurs clés.
Si des éléments ayant la même clé existent dans plusieurs maps d’entrée, tous les éléments sont ajoutés à la map de résultat, mais seul le premier est accessible via l’opérateur [].
Syntaxe
Arguments
maps — Un nombre quelconque de maps. Map
Valeur renvoyée
Renvoie une map résultant de la concaténation des maps fournies en argument. Map
Exemples
Exemple d’utilisation
SELECT mapConcat(map('k1', 'v1'), map('k2', 'v2'))
Introduit dans : v21.2.0
Indique si une clé est présente dans une map.
Syntaxe
Alias : mapContains
Arguments
map — Map dans laquelle rechercher. Map(K, V)
key — Clé à rechercher. Le type doit correspondre au type de clé de la Map. Any
Valeur renvoyée
Renvoie 1 si la Map contient la clé, 0 sinon. UInt8
Exemples
Exemple d’utilisation
SELECT mapContainsKey(map('k1', 'v1', 'k2', 'v2'), 'k1')
Introduit dans : v23.4.0
Vérifie si la map contient une clé correspondant au motif spécifié par LIKE.
Syntaxe
mapContainsKeyLike(map, pattern)
Arguments
Valeur renvoyée
Renvoie 1 si map contient une clé correspondant à pattern, sinon 0. UInt8
Exemples
Exemple d’utilisation
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 │
└─────────────────────────────┘
Introduit dans : v25.6.0
Indique si une valeur est présente dans une map.
Syntaxe
mapContainsValue(map, value)
Arguments
map — Map dans laquelle rechercher. Map(K, V)
value — Valeur à rechercher. Le type doit correspondre au type des valeurs de la map. Any
Valeur renvoyée
Renvoie 1 si la map contient la valeur, 0 sinon. UInt8
Exemples
Exemple d’utilisation
SELECT mapContainsValue(map('k1', 'v1', 'k2', 'v2'), 'v1')
Introduit dans : v25.5.0
Vérifie si une map contient une valeur correspondant au motif spécifié avec LIKE.
Syntaxe
mapContainsValueLike(map, pattern)
Arguments
map — Map dans laquelle effectuer la recherche. Map(K, V)
pattern — Motif auquel comparer les valeurs. const String
Valeur renvoyée
Renvoie 1 si map contient une valeur correspondant à pattern, sinon 0. UInt8
Exemples
Exemple d’utilisation
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 │
└──────────────────────────┘
Introduit dans : v23.4.0
Teste si une condition est vérifiée pour au moins une paire clé-valeur dans une Map.
mapExists est une fonction d’ordre supérieur.
Vous pouvez lui passer une fonction lambda comme premier argument.
Syntaxe
Arguments
Valeur renvoyée
Renvoie 1 si au moins une paire clé-valeur remplit la condition, 0 sinon. UInt8
Exemples
Exemple d’utilisation
SELECT mapExists((k, v) -> v = 1, map('k1', 1, 'k2', 2))
Introduit dans : v23.4.0
Étant donné une Map avec des clés de type chaîne et un motif LIKE, cette fonction renvoie une Map contenant les éléments dont la clé correspond au motif.
Syntaxe
mapExtractKeyLike(map, pattern)
Arguments
map — Map à partir de laquelle extraire. Map(K, V)
pattern — Motif auquel les clés doivent correspondre. const String
Valeur renvoyée
Map contenant les éléments dont la clé correspond au motif spécifié. Si aucun élément ne correspond au motif, une map vide est renvoyée. Map(K, V)
Exemples
Exemple d’utilisation
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'} │
│ {} │
└────────────────────────────┘
Introduit dans : v25.5.0
Étant donné une map dont les valeurs sont des chaînes de caractères et un motif LIKE, cette fonction renvoie une map contenant les éléments dont la valeur correspond au motif.
Syntaxe
mapExtractValueLike(map, pattern)
Arguments
map — Map à partir de laquelle effectuer l’extraction. Map(K, V)
pattern — Motif auquel les valeurs doivent correspondre. const String
Valeur renvoyée
Renvoie une map contenant les éléments dont la valeur correspond au motif spécifié. Si aucun élément ne correspond au motif, une map vide est renvoyée. Map(K, V)
Exemples
Exemple d’utilisation
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'} │
│ {} │
└──────────────────────────────┘
Introduit dans : v22.3.0
Filtre une map en appliquant une fonction à chaque élément.
Syntaxe
Arguments
Valeur renvoyée
Renvoie une Map ne contenant que les éléments pour lesquels func renvoie une valeur différente de 0. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapFilter((k, v) -> v > 1, map('k1', 1, 'k2', 2))
Introduit dans : v23.3.0
Crée un Map à partir d’un Array ou d’un Map de clés et d’un Array ou d’un Map de valeurs.
La fonction est une alternative pratique à la syntaxe CAST([...], 'Map(key_type, value_type)').
Syntaxe
mapFromArrays(keys, values)
Alias : MAP_FROM_ARRAYS
Arguments
keys — Array ou map de clés utilisée pour créer la map. Array ou Map
values — Array ou map de valeurs utilisée pour créer la map. Array ou Map
Valeur renvoyée
Renvoie une map dont les clés et les valeurs sont construites à partir du tableau de clés et du tableau ou de la map de valeurs. Map
Exemples
Utilisation de base
SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])
Avec des entrées Map
SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))
{1:('a', 1), 2:('b', 2), 3:('c', 3)}
Introduit dans : v21.2.0
Renvoie les clés de la map donnée.
Cette fonction peut être optimisée en activant le paramètre optimize_functions_to_subcolumns.
Lorsque ce paramètre est activé, la fonction lit uniquement la sous-colonne keys au lieu de lire la map entière.
La requête SELECT mapKeys(m) FROM table est transformée en SELECT m.keys FROM table.
Syntaxe
Arguments
map — Map dont les clés doivent être extraites. Map(K, V)
Valeur renvoyée
Renvoie un tableau contenant toutes les clés de la map. Array(T)
Exemples
Exemple d’utilisation
SELECT mapKeys(map('k1', 'v1', 'k2', 'v2'))
Introduit dans : v23.4.0
Trie les éléments d’une map par ordre décroissant, avec un argument de limite supplémentaire permettant un tri partiel.
Si la fonction func est spécifiée, l’ordre de tri est déterminé par le résultat de la fonction func appliquée aux clés et aux valeurs de la map.
Syntaxe
mapPartialReverseSort([func,] limit, map)
Arguments
Valeur renvoyée
Renvoie une map partiellement triée par ordre décroissant. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Introduit dans : v23.4.0
Trie les éléments d’une map par ordre croissant, avec un argument limit supplémentaire permettant un tri partiel.
Si la fonction func est spécifiée, l’ordre de tri est déterminé par le résultat de la fonction func appliquée aux clés et aux valeurs de la map.
Syntaxe
mapPartialSort([func,] limit, map)
Arguments
Valeur renvoyée
Renvoie une map partiellement triée. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
Introduite dans : v20.10.0
Remplit les paires clé-valeur manquantes dans une map à clés entières.
Pour permettre d’étendre les clés au-delà de la valeur la plus élevée, une clé maximale peut être spécifiée.
Plus précisément, la fonction renvoie une map dans laquelle les clés forment une série allant de la plus petite à la plus grande clé (ou jusqu’à l’argument max, s’il est spécifié), avec un pas de 1, ainsi que les valeurs correspondantes.
Si aucune valeur n’est spécifiée pour une clé, une valeur par défaut est utilisée.
Si des clés sont répétées, seule la première valeur (dans l’ordre d’apparition) est associée à la clé.
Syntaxe
mapPopulateSeries(map[, max]) | mapPopulateSeries(keys, values[, max])
Arguments
Valeur renvoyée
Renvoie une map ou un tuple de deux tableaux, dans lequel le premier contient les clés dans l’ordre trié et le second les valeurs correspondant à ces clés. Map(K, V) ou Tuple(Array(UInt*), Array(Any))
Exemples
Avec le type Map
SELECT mapPopulateSeries(map(1, 10, 5, 20), 6)
{1:10, 2:0, 3:0, 4:0, 5:20, 6:0}
Avec des tableaux transformés
SELECT mapPopulateSeries([1, 2, 4], [11, 22, 44], 5)
([1, 2, 3, 4, 5], [11, 22, 0, 44, 0])
Introduit dans : v23.4.0
Trie les éléments d’une map par ordre décroissant.
Si la fonction func est spécifiée, l’ordre de tri est déterminé par le résultat de la fonction func appliquée aux clés et aux valeurs de la map.
Syntaxe
mapReverseSort([func,] map)
Arguments
valeur renvoyée
Renvoie une map triée dans l’ordre décroissant. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapReverseSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Introduit dans : v23.4.0
Trie les éléments d’une map par ordre croissant.
Si la fonction func est spécifiée, l’ordre de tri est déterminé par le résultat de la fonction func appliquée aux clés et aux valeurs de la map.
Syntaxe
Arguments
Valeur renvoyée
Renvoie une map triée par ordre croissant. Map(K, V)
Exemples
Exemple d’utilisation
SELECT mapSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
Introduit dans : v20.7.0
Rassemble toutes les clés et soustrait les valeurs correspondantes.
Syntaxe
mapSubtract(arg1[, arg2, ...])
Arguments
arg1[, arg2, ...] — Des Map ou des tuples de deux tableaux, dans lesquels les éléments du premier tableau représentent des clés et le second tableau contient les valeurs associées à chaque clé. Map(K, V) ou Tuple(Array(T), Array(T))
Valeur renvoyée
Renvoie une Map ou un tuple, dans lesquels le premier tableau contient les clés triées et le second tableau contient les valeurs. Map(K, V) ou Tuple(Array(T), Array(T))
Exemples
Avec le type Map
SELECT mapSubtract(map(1, 1), map(1, 1))
Avec une map de tuples
SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1]))
Introduit dans : v22.3.0
Pour deux maps, renvoie la première map avec les valeurs mises à jour à partir des valeurs des clés correspondantes dans la seconde map.
Syntaxe
Arguments
map1 — La map à mettre à jour. Map(K, V)
map2 — La map à utiliser pour la mise à jour. Map(K, V)
Valeur renvoyée
Renvoie map1 avec les valeurs mises à jour à partir des valeurs des clés correspondantes dans map2. Map(K, V)
Exemples
Utilisation de base
SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10))
{'key3':0,'key1':10,'key2':10}
Introduit dans : v21.2.0
Renvoie les valeurs de la map donnée.
Cette fonction peut être optimisée en activant le paramètre optimize_functions_to_subcolumns.
Lorsque ce paramètre est activé, la fonction lit uniquement la sous-colonne values au lieu de lire la map entière.
La requête SELECT mapValues(m) FROM table est transformée en SELECT m.values FROM table.
Syntaxe
Arguments
map — Map à partir de laquelle extraire les valeurs. Map(K, V)
Valeur renvoyée
Renvoie un tableau contenant toutes les valeurs de la Map. Array(T)
Exemples
Exemple d’utilisation
SELECT mapValues(map('k1', 'v1', 'k2', 'v2'))
Dernière modification le 25 juin 2026