

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.

# Abfragen von Daten in DynamoDB
<a name="EMRforDynamoDB.Querying"></a>

Die folgenden Beispiele zeigen einige Möglichkeiten zur Verwendung von HiveQL zum Abfragen von Daten in DynamoDB.

Diese Beispiele beziehen sich auf die Tabelle *ddb\_features* im Tutorial ([Schritt 5: Kopieren von Daten nach DynamoDB](EMRforDynamoDB.Tutorial.CopyDataToDDB.md) ).

**Topics**
+ [Verwenden von Aggregatfunktionen](#EMRforDynamoDB.Querying.AggregateFunctions)
+ [Verwenden der GROUP BY- und HAVING-Klauseln](#EMRforDynamoDB.Querying.GroupByAndHaving)
+ [Verknüpfen von zwei DynamoDB-Tabellen](#EMRforDynamoDB.Querying.JoiningTwoTables)
+ [Verknüpfen von Tabellen aus anderen Quellen](#EMRforDynamoDB.Querying.JoiningTablesFromDifferentSources)

## Verwenden von Aggregatfunktionen
<a name="EMRforDynamoDB.Querying.AggregateFunctions"></a>

HiveQL bietet integrierte Funktionen für die Zusammenfassung von Datenwerten. Sie können z. B. die Funktion `MAX` verwenden, um den größten Wert für eine ausgewählte Spalte zu finden. Das folgende Beispiel gibt die Erhöhung des höchsten Merkmals im Bundesstaat Colorado zurück.

```
SELECT MAX(elev_in_ft)
FROM ddb_features
WHERE state_alpha = 'CO';
```

## Verwenden der GROUP BY- und HAVING-Klauseln
<a name="EMRforDynamoDB.Querying.GroupByAndHaving"></a>

Sie können die `GROUP BY`-Klausel zum Sammeln von Daten über mehrere Datensätze hinweg verwenden. Diese Klausel wird häufig in Verbindung mit einer aggregierten Funktion wie `SUM`, `COUNT`, `MIN` oder `MAX` eingesetzt. Sie können mithilfe der `HAVING`-Klausel auch Ergebnisse verwerfen, die bestimmte Kriterien nicht erfüllen.

Das folgende Beispiel gibt eine Liste der höchsten Erhebungen aus Bundesstaaten mit mehr als fünf Merkmalen in der Tabelle *ddb\_features* zurück.

```
SELECT state_alpha, max(elev_in_ft)
FROM ddb_features
GROUP BY state_alpha
HAVING count(*) >= 5;
```

## Verknüpfen von zwei DynamoDB-Tabellen
<a name="EMRforDynamoDB.Querying.JoiningTwoTables"></a>

Das folgende Beispiel zeigt, wie eine Hive-Tabelle (*east\_coast\_state*s) einer Tabelle in DynamoDB zugeordnet wird. Die `SELECT`-Anweisung ist ein Join dieser beiden Tabellen. Der Join wird auf dem Cluster verarbeitet und zurückgegeben. Der Join wird nicht in DynamoDB ausgeführt. 

Stellen Sie sich eine DynamoDB-Tabelle mit dem Namen vor EastCoastStates , die die folgenden Daten enthält:

```
StateName       StateAbbrev

Maine           ME
New Hampshire   NH
Massachusetts   MA
Rhode Island    RI
Connecticut     CT
New York        NY
New Jersey      NJ
Delaware        DE
Maryland        MD
Virginia        VA
North Carolina  NC
South Carolina  SC
Georgia         GA
Florida         FL
```

Nehmen wir an, die Tabelle ist als externe Hive-Tabelle mit dem Namen "east\_coast\_states" verfügbar:

```
1. CREATE EXTERNAL TABLE ddb_east_coast_states (state_name STRING, state_alpha STRING)
2. STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
3. TBLPROPERTIES ("dynamodb.table.name" = "EastCoastStates",
4. "dynamodb.column.mapping" = "state_name:StateName,state_alpha:StateAbbrev");
```

Der folgende Join gibt die Bundesstaaten an der Ostküste der Vereinigten Staaten zurück, die mindestens drei Merkmale aufweisen:

```
SELECT ecs.state_name, f.feature_class, COUNT(*)
FROM ddb_east_coast_states ecs
JOIN ddb_features f on ecs.state_alpha = f.state_alpha
GROUP BY ecs.state_name, f.feature_class
HAVING COUNT(*) >= 3;
```

## Verknüpfen von Tabellen aus anderen Quellen
<a name="EMRforDynamoDB.Querying.JoiningTablesFromDifferentSources"></a>

Im folgenden Beispiel ist "s3\_east\_coast\_states" eine Hive-Tabelle, die einer in Amazon S3 gespeicherten CSV-Datei zugeordnet ist. Die Tabelle *ddb\_features* ist mit Daten in DynamoDB verknüpft. Das folgende Beispiel verknüpft die beiden Tabellen und liefert die geografischen Merkmale der Bundesstaaten, deren Namen mit "New" beginnen.

```
1. create external table s3_east_coast_states (state_name STRING, state_alpha STRING)
2. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
3. LOCATION 's3://{{bucketname}}/{{path}}/{{subpath}}/';
```

```
SELECT ecs.state_name, f.feature_name, f.feature_class
FROM s3_east_coast_states ecs
JOIN ddb_features f
ON ecs.state_alpha = f.state_alpha
WHERE ecs.state_name LIKE 'New%';
```