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 ».

Requête de données JSON

Mode de mise au point
Requête de données JSON - 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.

Amazon Athena vous permet d'interroger des données codées en JSON, d'extraire des données du JSON imbriqué, de rechercher des valeurs et de déterminer la longueur et la taille des tableaux JSON. Pour apprendre les bases de l'interrogation de données JSON dans Athena, considérez les exemples de données planétaires suivants :

{name:"Mercury",distanceFromSun:0.39,orbitalPeriod:0.24,dayLength:58.65} {name:"Venus",distanceFromSun:0.72,orbitalPeriod:0.62,dayLength:243.02} {name:"Earth",distanceFromSun:1.00,orbitalPeriod:1.00,dayLength:1.00} {name:"Mars",distanceFromSun:1.52,orbitalPeriod:1.88,dayLength:1.03}

Notez que chaque enregistrement (essentiellement chaque ligne du tableau) se trouve sur une ligne distincte. Pour interroger ces données JSON, vous pouvez utiliser une CREATE TABLE instruction comme celle-ci :

CREATE EXTERNAL TABLE `planets_json`( `name` string, `distancefromsun` double, `orbitalperiod` double, `daylength` double) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/json/'

Pour interroger les données, utilisez une SELECT instruction simple comme dans l'exemple suivant.

SELECT * FROM planets_json

Les résultats de la requête se présentent comme suit.

# name distance du soleil période orbitale durée du jour
1 Mercure 0,39 0,24 58,65
2 Vénus 0,72 0,62 243,02
3 Terre 1.0 1.0 1.0
4 Mars 1,52 1,88 1,03

Remarquez comment l'CREATE TABLEinstruction utilise leOpenX JSON SerDe, ce qui nécessite que chaque enregistrement JSON figure sur une ligne séparée. Si le JSON est dans un joli format d'impression, ou si tous les enregistrements se trouvent sur une seule ligne, les données ne seront pas lues correctement.

Pour interroger des données JSON dans un joli format d'impression, vous pouvez utiliser le JSON Amazon Ion Hive SerDe au lieu d'OpenX. SerDe Considérez les données précédentes stockées dans un joli format d'impression :

{ name:"Mercury", distanceFromSun:0.39, orbitalPeriod:0.24, dayLength:58.65 } { name:"Venus", distanceFromSun:0.72, orbitalPeriod:0.62, dayLength:243.02 } { name:"Earth", distanceFromSun:1.00, orbitalPeriod:1.00, dayLength:1.00 } { name:"Mars", distanceFromSun:1.52, orbitalPeriod:1.88, dayLength:1.03 }

Pour interroger ces données sans les reformater, vous pouvez utiliser une CREATE TABLE instruction comme celle-ci. Notez qu'au lieu de spécifier le code JSON OpenX SerDe, l'instruction spécifie. STORED AS ION

CREATE EXTERNAL TABLE `planets_ion`( `name` string, `distancefromsun` DECIMAL(10, 2), `orbitalperiod` DECIMAL(10, 2), `daylength` DECIMAL(10, 2)) STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/json-ion/'

La requête SELECT * FROM planets_ion produit les mêmes résultats que précédemment. Pour plus d'informations sur la création de tables de cette manière à l'aide d'Amazon Ion Hive SerDe, consultezCréation de tables Amazon Ion.

L'exemple de données JSON précédent ne contient pas de types de données complexes tels que des tableaux imbriqués ou des structures. Pour plus d'informations sur l'interrogation de données JSON imbriquées, consultez. Exemple : désérialisation des données JSON imbriquées

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