Types de fonctions JSON
simpleJSON*(visitParam*) qui sont conçues pour analyser très rapidement un sous-ensemble limité de JSON.JSONExtract*qui sont conçues pour analyser du JSON standard.
Fonctions simpleJSON (visitParam)
- Le nom du champ (argument de la fonction) doit être une constante.
- Le nom du champ est encodé sous une forme canonique dans le JSON. Par exemple :
simpleJSONHas('{"abc":"def"}', 'abc') = 1, maissimpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 - Les champs sont recherchés à n’importe quel niveau d’imbrication, sans distinction. S’il existe plusieurs champs correspondants, la première occurrence est utilisée.
- Le JSON ne contient pas d’espaces en dehors des littéraux de chaîne.
Fonctions JSONExtract
Fonctions JSONExtract insensibles à la casse
Ces fonctions peuvent être moins performantes que leurs équivalents sensibles à la casse. Utilisez donc les fonctions JSONExtract standard si possible.
JSONAllPaths
json— colonne JSON.JSON
Array(String)
Exemples
Exemple d’utilisation
Query
Response
JSONAllPathsWithTypes
json— colonne JSON.JSON
Map(String, String)
Exemples
Exemple d’utilisation
Query
Response
JSONAllValues
json— colonne JSON.JSON
Array(String)
Exemples
Exemple d’utilisation
Query
Response
JSONArrayLength
NULL si la chaîne JSON d’entrée n’est pas valide.
Syntaxe
JSON_ARRAY_LENGTH
Arguments
json— Chaîne contenant un JSON valide.String
json est une chaîne JSON représentant un tableau valide ; sinon, renvoie NULL. Nullable(UInt64)
Exemples
Exemple d’utilisation
Query
Response
JSONDynamicPaths
json— colonne JSON.JSON
Array(String)
Exemples
Exemple d’utilisation
Query
Response
JSONDynamicPathsWithTypes
json— colonne JSON.JSON
Map(String, String)
Exemples
Exemple d’utilisation
Query
Response
JSONExtract
json— Chaîne JSON à analyser.Stringindices_or_keys— Une liste de zéro, un ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*return_type— Type de données ClickHouse à renvoyer.String
Query
Response
JSONExtractArrayRaw
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*
Array(String)
Exemples
Exemple d’utilisation
Query
Response
JSONExtractArrayRawCaseInsensitive
JSONExtractArrayRaw.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés pour accéder au tableau. Les clés ne tiennent pas compte de la casseStringou(U)Int*
Array(String)
Exemples
simple
Query
Response
JSONExtractBool
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être une chaîne ou un entier.Stringou(U)Int*
0. Bool
Exemples
Exemple d’utilisation
Query
Response
JSONExtractBoolCaseInsensitive
JSONExtractBool.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder au champ. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
UInt8
Exemples
basique
Query
Response
JSONExtractCaseInsensitive
JSONExtract.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés pour accéder au champ. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*return_type— Type de données ClickHouse à extraireString
Any
Exemples
int_type
Query
Response
Query
Response
JSONExtractFloat
json— Chaîne JSON à analyser.Stringindices_or_keys— Une liste de zéro ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*
0. Float64
Exemples
Exemple d’utilisation
Query
Response
JSONExtractFloatCaseInsensitive
JSONExtractFloat.
Syntaxe
json— chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder au champ. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
Float64
Exemples
de base
Query
Response
JSONExtractInt
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être une chaîne ou un entier.Stringou(U)Int*
0. Int64
Exemples
Exemple d’utilisation
Query
Response
JSONExtractIntCaseInsensitive
JSONExtractInt.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder au champ. Les clés ne tiennent pas compte de la casseStringou(U)Int*
Int64
Exemples
simple
Query
Response
Query
Response
JSONExtractKeys
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être une chaîne ou un entier.Stringou(U)Int*
Array(String)
Exemples
Exemple d’utilisation
Query
Response
JSONExtractKeysAndValues
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être une chaîne ou un entier.Stringou(U)Int*value_type— Type de données ClickHouse des valeurs.String
Array(Tuple(String, value_type))
Exemples
Exemple d’utilisation
Query
Response
JSONExtractKeysAndValuesCaseInsensitive
JSONExtractKeysAndValues.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés pour accéder à l’objet. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*value_type— Le type de données ClickHouse des valeursString
Array(Tuple(String, T))
Exemples
simple
Query
Response
JSONExtractKeysAndValuesRaw
json— Chaîne JSON à analyser.Stringindices_or_keys— Une liste de zéro, un ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*
Array(Tuple(String, String))
Exemples
Exemple d’utilisation
Query
Response
JSONExtractKeysAndValuesRawCaseInsensitive
JSONExtractKeysAndValuesRaw.
Syntaxe
json— chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés pour naviguer jusqu’à l’objet. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
Array(Tuple(String, String))
Exemples
de base
Query
Response
JSONExtractKeysCaseInsensitive
JSONExtractKeys.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder à l’objet. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
Array(String)
Exemples
de base
Query
Response
Query
Response
JSONExtractRaw
json— Chaîne JSON à analyser.Stringindices_or_keys— Une liste d’arguments, éventuellement vide, dont chacun peut être soit une chaîne, soit un entier.Stringou(U)Int*
String
Exemples
Exemple d’utilisation
Query
Response
JSONExtractRawCaseInsensitive
JSONExtractRaw.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder au champ. Les clés sont mises en correspondance sans tenir compte de la casseStringou(U)Int*
String
Exemples
objet
Query
Response
JSONExtractString
json— chaîne JSON à analyser.Stringindices_or_keys— Une liste de zéro, un ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*
String
Exemples
Exemple d’utilisation
Query
Response
JSONExtractStringCaseInsensitive
JSONExtractString.
Syntaxe
json— Chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés permettant d’accéder au champ. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
String
Exemples
de base
Query
Response
Query
Response
JSONExtractUInt
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste de zéro, un ou plusieurs arguments, chacun pouvant être soit une chaîne, soit un entier.Stringou(U)Int*
0. UInt64
Exemples
Exemple d’utilisation
Query
Response
JSONExtractUIntCaseInsensitive
JSONExtractUInt.
Syntaxe
json— chaîne JSON à analyserStringindices_or_keys— Facultatif. Indices ou clés pour accéder au champ. Les clés utilisent une correspondance insensible à la casseStringou(U)Int*
UInt64
Exemples
de base
Query
Response
JSONHas
json— Chaîne JSON à analyserString[ ,indices_or_keys, ...]— Une liste de zéro ou plusieurs arguments.Stringou(U)Int*
1 si la valeur existe dans json, sinon 0 UInt8
Exemples
Exemple d’utilisation
Query
Response
JSONKey
json— Chaîne JSON à analyser.Stringindices_or_keys— Liste facultative d’indices ou de clés spécifiant un chemin d’accès vers un élément imbriqué. Chaque argument peut être soit une chaîne (accès par clé), soit un entier (accès par indice à partir de 1).StringouInt*
String
Exemples
Exemple d’utilisation
Query
Response
JSONLength
0 est renvoyé.
Syntaxe
json— Chaîne JSON à analyserString[, indices_or_keys, ...]— Facultatif. Liste de zéro argument ou plus.Stringou(U)Int8/16/32/64
0 si la valeur n’existe pas ou si elle est du mauvais type. UInt64
Exemples
Exemple d’utilisation
Query
Response
JSONMergePatch
jsonMergePatch
Arguments
json1[, json2, ...]— Une ou plusieurs chaînes contenant du JSON valide.String
String
Exemples
Exemple d’utilisation
Query
Response
json— colonne JSON.JSON
Array(String)
Exemples
Exemple d’utilisation
Query
Response
json— colonne JSON.JSON
Map(String, String)
Exemples
Exemple d’utilisation
Query
Response
JSONType
Null=0 est renvoyé.
Syntaxe
json— chaîne JSON à analyserStringjson[, indices_or_keys, ...]— Liste de zéro argument ou plus, chacun pouvant être une chaîne ou un entier.Stringou(U)Int8/16/32/64
Null=0 Enum
Exemples
Exemple d’utilisation
Query
Response
JSON_EXISTS
1 est renvoyé.
Si la valeur n’existe pas, 0 est renvoyé.
Syntaxe
1 si la valeur existe dans le document JSON, sinon 0. UInt8
Exemples
Exemple d’utilisation
Query
Response
JSON_QUERY
String
Exemples
Exemple d’utilisation
Query
Response
JSON_VALUE
- avec SET
function_json_value_return_type_allow_nullable=true,NULLest renvoyé. Si la valeur est d’un type complexe (comme : struct, array, map), une chaîne vide est renvoyée par défaut. - avec SET
function_json_value_return_type_allow_complex=true, la valeur complexe est renvoyée.
String
Exemples
Exemple d’utilisation
Query
Response
dynamicElement
Dynamic.
Cette fonction permet d’extraire des valeurs d’un type spécifique depuis une colonne Dynamic. Si une ligne contient une valeur
du type demandé, elle renvoie cette valeur. Si la ligne contient une valeur d’un autre type ou NULL, elle renvoie NULL
pour les types scalaires ou un tableau vide pour les types Array.
Syntaxe
dynamic— Colonne Dynamic à partir de laquelle effectuer l’extraction.Dynamictype_name— Nom du type de variante à extraire (par ex., ‘String’, ‘Int64’, ‘Array(Int64)’).
Any
Exemples
Extraction de différents types à partir d’une colonne Dynamic
Query
Response
dynamicType
Dynamic.
Pour les lignes contenant NULL, la fonction renvoie ‘None’. Pour toutes les autres lignes, elle renvoie le type de données réel
stocké dans la ligne correspondante de la colonne Dynamic (par ex., ‘Int64’, ‘String’, ‘Array(Int64)’).
Syntaxe
dynamic— colonne Dynamic à examiner.Dynamic
String
Exemples
Vérification des types dans une colonne Dynamic
Query
Response
max_types, les valeurs qui dépassent cette limite sont stockées dans un format binaire partagé
au lieu d’être séparées dans des sous-colonnes typées individuelles. Cette fonction permet d’identifier les lignes stockées dans ce format partagé.
Syntaxe
dynamic— colonne Dynamic à inspecter.Dynamic
Bool
Exemples
Vérification du format de stockage d’une colonne Dynamic avec la limite max_types
Query
Response
isValidJSON
json— chaîne JSON à validerString
1 si la chaîne est un JSON valide, sinon 0. UInt8
Exemples
Exemple d’utilisation
Query
Response
Query
Response
prettyPrintJSON
json— Une chaîne JSON valide à mettre en forme.Stringindent— Nombre d’espaces par niveau d’indentation. Par défaut : 4. Max : 32UInt*
String
Exemples
Objet simple
Query
Response
Query
Response
simpleJSONExtractBool
field_name.
Le résultat est UInt8.
Syntaxe
visitParamExtractBool
Arguments
json— Le JSON dans lequel rechercher le champ.Stringfield_name— Le nom du champ à rechercher.const String
1 si la valeur du champ est true, 0 sinon. Cela signifie que cette fonction renvoie 0, notamment (et pas uniquement) dans les cas suivants :
- Si le champ n’existe pas.
- Si le champ contient
truesous forme de chaîne, par exemple :{"field":"true"}. - Si le champ contient
1comme valeur numérique.UInt8
Query
Response
simpleJSONExtractFloat
Float64 de la valeur du champ nommé field_name.
Si field_name est un champ de type chaîne, la fonction essaie d’analyser un nombre à partir du début de la chaîne.
Si le champ n’existe pas, ou s’il existe mais ne contient pas de nombre, la fonction renvoie 0.
Syntaxe
visitParamExtractFloat
Arguments
json— Le JSON dans lequel le champ est recherché.Stringfield_name— Le nom du champ à rechercher.const String
0. Float64
Exemples
Exemple d’utilisation
Query
Response
simpleJSONExtractInt
Int64 à partir de la valeur du champ nommé field_name.
Si field_name est un champ de type chaîne, la fonction tente d’analyser un nombre au début de la chaîne.
Si le champ n’existe pas, ou s’il existe mais ne contient pas de nombre, la fonction renvoie 0.
Syntaxe
visitParamExtractInt
Arguments
json— Le JSON dans lequel le champ est recherché.Stringfield_name— Le nom du champ à rechercher.const String
0 sinon Int64
Exemples
Exemple d’utilisation
Query
Response
simpleJSONExtractRaw
field_name sous forme de String, y compris les séparateurs.
Syntaxe
visitParamExtractRaw
Arguments
json— Le JSON dans lequel le champ est recherché.Stringfield_name— Le nom du champ à rechercher.const String
String
Exemples
Exemple d’utilisation
Query
Response
simpleJSONExtractString
String entre guillemets doubles à partir de la valeur du champ nommé field_name.
Détails d’implémentation
Actuellement, les points de code au format \uXXXX\uYYYY qui ne relèvent pas du plan multilingue de base ne sont pas pris en charge (ils sont convertis en CESU-8 au lieu d’UTF-8).
Syntaxe
visitParamExtractString
Arguments
json— Le JSON dans lequel rechercher le champ.Stringfield_name— Le nom du champ à rechercher.const String
String
Exemples
Exemple d’utilisation
Query
Response
simpleJSONExtractUInt
UInt64 de la valeur du champ nommé field_name.
Si field_name est un champ de type chaîne de caractères, la fonction essaie d’analyser un nombre au début de la chaîne.
Si le champ n’existe pas, ou s’il existe mais ne contient pas de nombre, elle renvoie 0.
Syntaxe
visitParamExtractUInt
Arguments
json— Le JSON dans lequel le champ est recherché.Stringfield_name— Le nom du champ à rechercher.const String
0 sinon UInt64
Exemples
Exemple d’utilisation
Query
Response
simpleJSONHas
field_name.
Syntaxe
visitParamHas
Arguments
json— Le JSON dans lequel rechercher le champ.Stringfield_name— Le nom du champ à rechercher.const String
1 si le champ existe, 0 sinon UInt8
Exemples
Exemple d’utilisation
Query
Response
toJSONString
UInt64 ou Int128) sont placés entre guillemets par défaut. output_format_json_quote_64bit_integers contrôle ce comportement.
Les valeurs spéciales NaN et inf sont remplacées par null. Activez le paramètre output_format_json_quote_denormals pour les afficher.
Lors de la sérialisation d’une valeur Enum, la fonction renvoie son nom.
Voir aussi :
Syntaxe
value— Valeur à sérialiser. La valeur peut être de n’importe quel type de données.Any
String
Exemples
Sérialisation d’une Map
Query
Response
Query
Response