Cette rubrique présente la syntaxe de base des fonctions JSON, illustrée par des exemples.
SLS prend en charge les fonctions JSON suivantes.
Dans les instructions de requête Log Service, entourez les chaînes de guillemets simples (''). Log Service interprète les caractères non entourés de guillemets ou placés entre guillemets doubles ("") comme un nom de champ ou de colonne. Par exemple,
'status'représente la chaîne status, tandis questatusou"status"représente le champ de journal nommé status.Pour développer la valeur d'un champ de journal au format JSON en plusieurs lignes, utilisez la clause UNNEST. Pour plus d'informations, consultez la rubrique Clause UNNEST.
Si une chaîne ne peut pas être analysée en tant que JSON, la fonction renvoie null.
Si un journal JSON est tronqué lors de la collecte, son analyse via une fonction JSON génère une erreur et interrompt la requête. Pour gérer cette erreur, encapsulez l'appel de fonction dans une expression TRY afin de capturer l'exception et de permettre la poursuite de la requête. Par exemple :
* | select message, try(json_parse(message)). Pour plus d'informations, consultez la rubrique Expression TRY.
|
Nom de la fonction |
Syntaxe |
Description |
Prise en charge SQL |
Prise en charge SPL |
|
json_array_contains(x, value) |
Vérifie si un tableau JSON contient une valeur spécifique. |
√ |
√ |
|
|
json_array_get(x, index) |
Renvoie l'élément situé à un index spécifié dans un tableau JSON. |
√ |
× |
|
|
json_array_length(x) |
Renvoie le nombre d'éléments dans un tableau JSON. |
√ |
√ |
|
|
json_extract(x, json_path) |
Extrait un objet ou un tableau JSON à partir d'un objet ou d'un tableau JSON. |
√ |
√ |
|
|
json_extract_scalar(x, json_path) |
Extrait une valeur scalaire, telle qu'une chaîne, un entier ou une valeur booléenne, à partir d'un objet ou d'un tableau JSON. |
√ |
√ |
|
|
json_extract_bool(x, json_path) |
Extrait une valeur booléenne à partir d'un objet ou d'un tableau JSON. |
√ |
× |
|
|
json_extract_long(x, json_path) |
Extrait une valeur bigint à partir d'un objet ou d'un tableau JSON. |
√ |
× |
|
|
json_extract_double(x, json_path) |
Extrait une valeur double à partir d'un objet ou d'un tableau JSON. |
√ |
× |
|
|
json_format(x) |
Formate une valeur JSON en chaîne. |
√ |
√ |
|
|
json_parse(x) |
Analyse une chaîne pour la convertir en valeur JSON. |
√ |
√ |
|
|
json_size(x, json_path) |
Renvoie le nombre d'éléments dans un tableau JSON ou le nombre de paires clé-valeur dans un objet JSON. |
√ |
√ |
|
|
json_object_flatten(x) |
Aplatit un objet JSON en une structure clé-valeur à un seul niveau. |
√ |
× |
Fonction json_array_contains
La fonction json_array_contains vérifie si un tableau JSON contient une valeur spécifique.
Syntaxe
json_array_contains(x, value)
Paramètres
|
Paramètre |
Description |
|
x |
Un tableau JSON. |
|
value |
La valeur à rechercher dans le tableau JSON. |
Type de valeur renvoyée
boolean
Exemple
Vérifiez si le tableau JSON [1, 2, 3] contient la valeur 2.
-
Instruction de requête (Test)
* | SELECT json_array_contains('[1, 2, 3]', 2) La requête renvoie true car le tableau JSON [1, 2, 3] contient 2.
Fonction json_array_get
Renvoie l'élément situé à un index spécifié dans un tableau JSON.
Syntaxe
json_array_get(x, index)
Paramètres
|
Paramètre |
Description |
|
x |
Un tableau JSON. |
|
index |
L'index de l'élément (commençant à zéro). |
Type de retour
varchar
Exemple
Renvoie l'élément à l'index 1 du tableau JSON ["a", [3, 9], "c"].
-
Instruction de requête (Test)
* | SELECT json_array_get('["a", [3, 9], "c"]', 1) Le résultat de la requête est [3,9].
Fonction json_array_length
Compte les éléments d'un tableau JSON.
Syntaxe
json_array_length(x)
Paramètres
|
Paramètre |
Description |
|
x |
Le tableau JSON source. |
Type de valeur renvoyée
bigint
Exemples
-
Exemple 1 : Compte les éléments du tableau JSON dans le champ Results.
-
Champ d'exemple
Results:[{"EndTime":1626314920},{"FireResult":2}] -
Instruction de requête et d'analyse
* | SELECT json_array_length(Results) Le résultat est 2.
-
-
Exemple 2 : Compte les éléments du tableau JSON dans le champ time.
-
Champ d'exemple
time:["time_local","request_time","upstream_response_time"] -
Instruction de requête et d'analyse
* | SELECT json_array_length(time) Le résultat est 3.
-
Fonction json_extract
La fonction json_extract extrait une valeur JSON, telle qu'un objet ou un tableau JSON, à partir d'un objet ou d'un tableau JSON.
La fonction json_extract renvoie une erreur pour les types JSON invalides. Utilisez plutôt la fonction json_extract_scalar.
Syntaxe
json_extract(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Un objet ou un tableau JSON. |
|
json_path |
Un chemin JSON, par exemple |
Type de valeur renvoyée
Une chaîne au format JSON.
Exemples
SQL
Extrayez la valeur du champ EndTime à partir du champ Results.
-
Données d'exemple
Results:[{"EndTime":1626314920},{"FireResult":2}] -
Instruction de requête
* | SELECT json_extract(Results, '$.0.EndTime') La requête renvoie 1626314920.
SPL
Extrayez la valeur du champ EndTime à partir du champ Results.
Données d'exemple
Results:[{"EndTime":1626314920},{"FireResult":2}]
Instruction SPL
* | extend a = json_extract(Results, '$.0.EndTime')
Résultat SPL
Le résultat inclut le champ a défini sur 1626314920.
Fonction json_extract_scalar
La fonction json_extract_scalar extrait une valeur scalaire (chaîne, entier ou booléen) à partir d'un objet ou d'un tableau JSON.
Syntaxe
json_extract_scalar(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Un objet ou un tableau JSON. |
|
json_path |
Le chemin JSON, par exemple $.store.book[0].title. Pour plus d'informations, consultez la rubrique Définir le json_path. |
Type de retour
varchar
Exemples
SQL
Extrayez la valeur du champ RawResultCount à partir du champ Results, convertissez la valeur en bigint, puis calculez la somme.
-
Données d'exemple
Results:[{"EndTime":1626314920},{"RawResultCount":1}] -
Instruction de requête
* | SELECT sum(cast(json_extract_scalar(Results,'$.1.RawResultCount') AS bigint) ) Le résultat de la requête est 288.
SPL
Extrayez la valeur du champ RawResultCount à partir du champ Results.
Données d'exemple
Results:[{"EndTime":1626314920},{"RawResultCount":1}]
Instruction SPL
* | extend a = json_extract_scalar(Results, '$.1.RawResultCount')
La valeur du champ a est 1.
Fonction json_extract_bool
Extrait une valeur booléenne à partir d'un objet ou d'un tableau JSON. Renvoie null si l'extraction échoue.
Syntaxe
json_extract_bool(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Un objet ou un tableau JSON. |
|
json_path |
Le chemin JSON, par exemple $.store.book[0].title. Pour plus d'informations, consultez la rubrique Définir le json_path. |
Type de valeur renvoyée
boolean
Exemple
Extrayez une valeur booléenne du tableau JSON Results.
-
Champ d'exemple
Results:[{"ret":true},{"status":FALSE}] -
Instruction de requête
* | SELECT json_extract_bool(Results, '$.0.ret') -
Résultat de la requête
La requête renvoie true.
Fonction json_extract_long
Extrait une valeur bigint à partir d'un objet ou d'un tableau JSON. Renvoie null si l'extraction échoue.
Syntaxe
json_extract_long(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Une valeur JSON. |
|
json_path |
Le chemin JSON, par exemple $.store.book[0].title. Pour plus d'informations, consultez la rubrique Définir le json_path. |
Valeur de retour
bigint
Exemple
Cet exemple extrait une valeur bigint du tableau JSON Results.
-
Champ d'exemple
Results:[{"EndTime":1626314920},{"FireResult":2}] -
Instruction de requête
* | SELECT json_extract_long(Results, '$.0.EndTime') -
Résultat de la requête
Renvoie 1626314920.
Fonction json_extract_double
Extrait une valeur double à partir d'un objet ou d'un tableau JSON. Renvoie null si l'extraction échoue.
Syntaxe
json_extract_double(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Un objet ou un tableau JSON. |
|
json_path |
Le chemin JSON, par exemple $.store.book[0].title. Pour plus de détails, consultez la rubrique Comment définir json_path. |
Type de retour
double
Exemple
Extrayez une valeur double du tableau JSON Results.
-
Champ d'exemple
Results:[{"EndTime":1626314920},{"FireResult":2}] -
Instruction de requête et d'analyse
* | SELECT json_extract_double(Results, '$.0.EndTime') -
Résultat de la requête et de l'analyse
La requête renvoie 1626314920.0.
Fonction json_format
La fonction json_format formate une valeur JSON sous forme de chaîne.
Syntaxe
json_format(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une valeur JSON. |
Type de retour
Varchar.
Exemple
Convertit le tableau JSON [1,2,3] en la chaîne '[1, 2, 3]'.
-
Instruction de requête (Test)
* | SELECT json_format(json_parse('[1, 2, 3]')) Le résultat de la requête est '[1, 2, 3]'.
Fonction json_parse
La fonction json_parse convertit une chaîne au type JSON en validant son format. Toutefois, l'utilité de cette fonction est limitée. Pour extraire des valeurs d'une chaîne JSON, utilisez la fonction json_extract_scalar.
Syntaxe
json_parse(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une expression de chaîne. |
Type de valeur renvoyée
Type JSON.
Exemples
SQL
-
Exemple 1
Convertit la chaîne '[1, 2, 3]' en tableau JSON [1, 2, 3].
-
Instruction de requête (Test)
* | SELECT json_parse('[1, 2, 3]') Le résultat de la requête est [1, 2, 3].
-
-
Exemple 2
Extrait les clés du champ
logging.Cet exemple traite le champ
logging, qui est un objet JSON contenant des paires clé-valeur telles que message, processName, thread, threadName, module, funcName, levelname et process.-
Instruction de requête (Test)
*| SELECT map_keys(try_cast(json_parse(logging) AS map(varchar, json))) Le résultat de la requête est ["funcName","levelname","message","module","process","processName","thread","threadName"].
SPL
Convertit la chaîne '[1, 2, 3]' en tableau JSON [1, 2, 3].
Instruction SPL
* | extend a = json_parse('[1, 2, 3]')
Résultat SPL
La valeur du champ a est [1, 2, 3].
Fonction json_size
La fonction json_size renvoie le nombre d'éléments dans un objet ou un tableau JSON.
Syntaxe
json_size(x, json_path)
Paramètres
|
Paramètre |
Description |
|
x |
Un objet ou un tableau JSON. |
|
json_path |
Le chemin JSON, par exemple $.store.book[0].title. Pour plus d'informations, consultez la rubrique Définir le json_path. |
Type de valeur renvoyée
bigint
Exemple
Cet exemple calcule le nombre d'éléments dans le champ RawResults.
-
Champ d'exemple
Results:[{"EndTime":1626314920,"FireResult":2,"RawResults":[{"_col0":"1094"}]}] -
Instruction de requête
* | SELECT json_size(Results, '$.0.RawResults') Le résultat de la requête est 1.
Fonction json_object_flatten
Aplatit un objet JSON en une structure clé-valeur à un seul niveau.
Syntaxe
json_object_flatten(x)
Paramètres
|
Paramètre |
Description |
|
x |
Spécifie la valeur JSON à aplatir. La fonction renvoie null si l'entrée n'est pas un objet JSON. |
Type de valeur renvoyée
map(varchar, varchar)
Exemple
Aplatit l'objet JSON du champ 'content' en une structure clé-valeur à un seul niveau.
-
Champ d'exemple
content: '{"Time":1626314920,"Info":[{"count":"1"}],"Body":"this is test"}' -
Instruction de requête
select json_object_flatten(content) as data from (values '{"Time":1626314920,"Info":[{"count":"1"}],"Body":"this is test"}') t (content) limit 1; -
Sortie
La valeur du champ data est {"Time":"1626314920","Info":"[{\"count\":\"1\"}]","Body":"this is test"}. Cela montre que l'objet JSON original a été aplati en une structure clé-valeur à un seul niveau.