

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# JSON-Daten abfragen
<a name="querying-JSON"></a>

Mit Amazon Athena können Sie JSON-kodierte Werte abfragen, Daten aus verschachtelten JSON-Daten extrahieren, nach Werten suchen und die Länge und Größe von JSON-Arrays ermitteln. Betrachten Sie die folgenden Beispielplanetendaten, um die Grundlagen der Abfrage von JSON-Daten in Athena zu erlernen:

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

Beachten Sie, dass jeder Datensatz (im Grunde jede Zeile in der Tabelle) in einer separaten Zeile steht. Um diese JSON-Daten abzufragen, können Sie eine `CREATE TABLE`-Anweisung wie die folgende verwenden:

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

Verwenden Sie eine einfache `SELECT`-Anweisung wie das folgende Beispiel, um die Daten abzufragen.

```
SELECT * FROM planets_json
```

Die Abfrageergebnisse sehen wie folgt aus.


****  

| \# | Name | distancefromsun | orbitalperiod | daylength | 
| --- | --- | --- | --- | --- | 
| 1 | Merkur | 0,39 | 0,24 | 58,65 | 
| 2 | Venus | 0,72 | 0,62 | 243,02 | 
| 3 | Erde | 1,0 | 1,0 | 1,0 | 
| 4 | Mars | 1,52 | 1,88 | 1,03 | 

Beachten Sie, wie die `CREATE TABLE`-Anweisung [OpenX JSON SerDe](openx-json-serde.md) verwendet, wodurch jeder JSON-Datensatz in einer separaten Zeile stehen muss. Wenn das JSON in einem hübschen Druckformat vorliegt oder wenn alle Datensätze in einer einzigen Zeile stehen, werden die Daten nicht korrekt gelesen.

Um JSON-Daten abzufragen, die in einem hübschen Druckformat vorliegen, können Sie [Amazon Ion Hive SerDe](ion-serde.md) anstelle von OpenX JSON SerDe das verwenden. Betrachten Sie die vorherigen Daten, die im hübschen Druckformat gespeichert wurden:

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

Um diese Daten ohne Neuformatierung abzufragen, können Sie eine `CREATE TABLE`-Anweisung wie die folgende verwenden. Beachten Sie, dass die Anweisung nicht das OpenX-JSON spezifiziert SerDe, sondern spezifiziert`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/'
```

Die Abfrage `SELECT * FROM planets_ion` liefert dieselben Ergebnisse wie zuvor. Weitere Informationen zum Erstellen von Tabellen auf diese Weise mithilfe von Amazon Ion Hive finden Sie SerDe unter[Amazon-Ion-Tabellen erstellen](ion-serde-using-create-table.md).

Das vorherige Beispiel für JSON-Daten enthält keine komplexen Datentypen wie verschachtelte Arrays oder Strukturen. Weitere Informationen zur Verwendung der Abfrage von verschachtelten JSON-Daten finden Sie unter [Beispiel: Deserialisierung von verschachteltem JSON](openx-json-serde.md#nested-json-serde-example).

**Topics**
+ [Bewährte Methoden zum Lesen von JSON-Daten](parsing-json-data.md)
+ [Extrahieren Sie JSON-Daten aus Zeichenfolgen](extracting-data-from-JSON.md)
+ [Suchen nach Werten in JSON-Arrays](searching-for-values.md)
+ [Abrufen der Länge und Größe von JSON-Arrays](length-and-size.md)
+ [Fehlerbehebung für JSON-Abfragen](json-troubleshooting.md)