JSON_EXTRACT |
Extraire JSON |
| BigQuery |
Syntaxe
|
JSON_EXTRACT(json_string_expr, json_path_string_literal)
|
Paramètres
| Nom |
Description |
| json_string_expr |
Ce paramètre permet de spécifier l'expression de chaîne de caractères contenant les données au format JSON à partir desquelles vous souhaitez extraire des informations. |
| json_path_string_literal |
Ce paramètre permet de définir le chemin JSON (en utilisant la syntaxe du chemin JSON) pointant vers l'élément spécifique à extraire de la chaîne JSON. Ce chemin doit être une chaîne de caractères littérale (c'est-à-dire une constante). |
Description
Cette fonction permet d'extraire une chaîne de caractères de format JSON et de retourner une chaîne de caractères.
Remarques
- Extraction ciblée dans des structures JSON : La fonction JSON_EXTRACT est particulièrement utile pour manipuler des colonnes contenant des données encodées au
format JSON. Elle permet de cibler précisément un champ ou un sous-champ à l'aide d'un chemin JSON, facilitant ainsi l'extraction de valeurs spécifiques sans avoir à
parcourir manuellement toute la structure.
- Chemin d'accès en syntaxe JSONPath : Le deuxième paramètre doit être une chaîne littérale représentant un chemin JSON valide (par exemple,
"$['utilisateur']['nom']"). Ce format suit la syntaxe du JSONPath, et toute erreur dans le chemin entraînera un résultat NULL. Il est donc crucial de bien comprendre la
structure JSON avant d'utiliser cette fonction.
- Résultat sous forme de chaîne JSON : JSON_EXTRACT retourne toujours une chaîne JSON encodée, même si l'élément pointé est un nombre, un booléen
ou une chaîne. Cela signifie que pour obtenir une valeur utilisable sous un autre type (par exemple un FLOAT64), il faut effectuer une conversion supplémentaire via
JSON_EXTRACT_SCALAR ou une fonction CAST.
- Traitement non récursif ni dynamique : Le chemin JSON doit être une valeur constante dans la requête. Cela signifie qu'on ne peut pas passer une variable
dynamique ou une colonne comme chemin JSON. Cette limitation peut restreindre la flexibilité dans certaines situations où les chemins à explorer varient selon les
lignes.
- Utile pour des schémas semi-structurés : JSON_EXTRACT est souvent utilisé dans l'ensemble de données n'ayant pas de schéma rigide, comme ceux
issus de journaux de bords, de fichiers NoSQL ou d'APIs. Grâce à cette fonction, on peut interroger facilement des données
entreposées dans un seul champ textuel, sans devoir les normaliser au préalable.
- Ne retourne pas directement des types natifs : Contrairement à JSON_EXTRACT_SCALAR, cette fonction retourne une valeur encodée dans une chaîne JSON,
incluant les guillemets pour les chaînes et les crochets pour les tableaux. Par conséquent, elle est plus adaptée pour des traitements ultérieurs ou des affichages
bruts que pour des calculs directs.
- Gestion des champs imbriqués et des tableaux : La fonction permet de naviguer dans des structures complexes, y compris des objets imbriqués et des
tableaux. Par exemple, il est possible d'accéder à un élément particulier d'un tableau avec un index ("$[0]") ou d'un objet imbriqué avec une notation en points
("$.adresse.ville"), à condition de bien maîtriser la syntaxe.
- Sécurité et robustesse dans les requêtes : Si le chemin fourni ne correspond à aucun élément du JSON, la fonction retourne NULL plutôt qu'une
erreur. Cela renforce la robustesse des requêtes, mais nécessite aussi une gestion explicite des cas nuls via IFNULL, COALESCE, ou des filtres conditionnels pour
éviter des surprises dans les résultats.
Dernière mise à jour : Jeudi, le 18 Juin 2020