Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Extraire des données JSON à partir de chaînes

Mode de mise au point
Extraire des données JSON à partir de chaînes - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Vous pouvez disposer de données source contenant des chaînes codées en JSON que vous ne souhaitez pas forcément désérialiser dans une table dans Athena. Dans ce cas, vous pouvez toujours exécuter des opérations SQL sur ces données à l'aide des fonctions JSON disponibles dans Presto.

Envisagez cette chaîne JSON comme exemple d'ensemble de données.

{"name": "Susan Smith", "org": "engineering", "projects": [ {"name":"project1", "completed":false}, {"name":"project2", "completed":true} ] }

Exemples : propriétés d'extraction

Pour extraire les propriétés name et projects de la chaîne JSON, utilisez la fonction json_extract comme dans l'exemple suivant. La fonction json_extract utilise la colonne contenant la chaîne JSON et effectue une recherche dans celle-ci à l'aide d'une expression de type JSONPath avec la notation de points ..

Note

JSONPath effectue un parcours simple de l'arborescence. Cette expression utilise le signe $ pour indiquer la racine du document JSON, suivi d'un point et d'un élément imbriqué directement sous la racine, par exemple $.name.

WITH dataset AS ( SELECT '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false}, {"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract(myblob, '$.name') AS name, json_extract(myblob, '$.projects') AS projects FROM dataset

La valeur renvoyée est une chaîne codée en JSON et non un type de données Athena natif.

+-----------------------------------------------------------------------------------------------+ | name | projects | +-----------------------------------------------------------------------------------------------+ | "Susan Smith" | [{"name":"project1","completed":false},{"name":"project2","completed":true}] | +-----------------------------------------------------------------------------------------------+

Pour extraire la valeur scalaire de la chaîne JSON, utilisez la fonction json_extract_scalar(json, json_path). Il est similaire àjson_extract, mais renvoie une valeur de varchar chaîne au lieu d'une chaîne codée en JSON. La valeur du json_path paramètre doit être un scalaire (booléen, numérique ou chaîne).

Note

N'utilisez pas la fonction json_extract_scalar sur des tableaux, des mappages ou des structures.

WITH dataset AS ( SELECT '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract_scalar(myblob, '$.name') AS name, json_extract_scalar(myblob, '$.projects') AS projects FROM dataset

Cette requête renvoie :

+---------------------------+ | name | projects | +---------------------------+ | Susan Smith | | +---------------------------+

Pour obtenir le premier élément de la propriété projects dans l'exemple de tableau, utilisez la fonction json_array_get et spécifiez la position d'index.

WITH dataset AS ( SELECT '{"name": "Bob Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_array_get(json_extract(myblob, '$.projects'), 0) AS item FROM dataset

Cette fonction renvoie la valeur à la position d'index spécifiée dans le tableau codé en JSON.

+---------------------------------------+ | item | +---------------------------------------+ | {"name":"project1","completed":false} | +---------------------------------------+

Pour renvoyer un type de chaîne Athena, utilisez l'opérateur [] à l'intérieur d'une expression JSONPath, puis utilisez la fonction json_extract_scalar. Pour plus d’informations sur [], consultez Accédez aux éléments du tableau.

WITH dataset AS ( SELECT '{"name": "Bob Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract_scalar(myblob, '$.projects[0].name') AS project_name FROM dataset

Elle renvoie le résultat suivant :

+--------------+ | project_name | +--------------+ | project1 | +--------------+

Sur cette page

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.