Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

JSON データをクエリする

フォーカスモード
JSON データをクエリする - Amazon Athena

Amazon Athena では、JSON でエンコードされたデータのクエリ、ネストされた JSON からのデータの抽出、値の検索、および JSON 配列の長さとサイズの確認を行うことができます。Athena で JSON データをクエリする際の基本については、次のサンプル planet データを検討してください。

{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}

各レコード (基本的に、テーブル内の各行) がそれぞれの行にどのように配置されているかに注目してください。この JSON データをクエリするには、次のような CREATE TABLE ステートメントを使用します。

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/'

データをクエリするには、次のようなシンプルな SELECT ステートメントを使用します。

SELECT * FROM planets_json

クエリの結果は以下のようになります。

# name distancefromsun orbitalperiod daylength
1 Mercury 0.39 0.24 58.65
2 Venus 0.72 0.62 243.02
3 Earth 1.0 1.0 1.0
4 Mars 1.52 1.88 1.03

CREATE TABLE ステートメントが OpenX JSON SerDe をどのように使用しているかに注目してください。これにより、各 JSON レコードを別の行に配置する必要があります。JSON がプリティプリント形式の場合、またはすべてのレコードが 1 行にある場合、データは正しく読み取られません。

プリティプリント形式の JSON データをクエリするには、OpenX JSON SerDe の代わりに Amazon Ion Hive SerDe を使用できます。プリティプリント形式で保存された以前のデータについて考えてみましょう。

{ 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 }

このデータをクエリするには、次のような CREATE TABLE ステートメントを使用します。OpenX JSON SerDe を指定する代わりに、このステートメントが 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/'

クエリ SELECT * FROM planets_ion は以前と同じ結果を生成します。Amazon Ion Hive SerDe を使用してこの方法でテーブルを作成する方法の詳細については、「Amazon Ion テーブルを作成する」を参照してください。

前述の JSON データの例には、ネストされた配列や構造体などの複雑なデータ型は含まれていません。ネストされた JSON データのクエリについては、「例: ネスト JSON の逆シリアル化」を参照してください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.