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.
Interrogation de données dans DynamoDB
Les exemples suivants présentent différentes façons d'utiliser HiveQL pour interroger des données stockées dans DynamoDB.
Ces exemples font référence à la table ddb_features dans le didacticiel (Étape 5 : copier des données dans DynamoDB).
Rubriques
Utilisation de fonctions d'agrégation
HiveQL fournit des fonctions intégrées pour la synthèse des valeurs de données. Vous pouvez par exemple utiliser la fonction MAX
pour rechercher la plus grande valeur dans une colonne sélectionnée. L'exemple suivant renvoie l'altitude de la particularité la plus élevée dans l'État du Colorado.
SELECT MAX(elev_in_ft) FROM ddb_features WHERE state_alpha = 'CO';
Utilisation des clauses GROUP BY et HAVING
Vous pouvez utiliser la clause GROUP BY
pour collecter les données de plusieurs enregistrements. Elle est souvent utilisé avec une fonction d'agrégation telle que SUM
, COUNT
, MIN
ou MAX
. Vous pouvez également utiliser la clause HAVING
pour écarter tous les résultats ne répondant pas à certains critères.
L'exemple suivant renvoie la liste des altitudes les plus élevées des États qui comptent plus de cinq particularités dans la table ddb_features.
SELECT state_alpha, max(elev_in_ft) FROM ddb_features GROUP BY state_alpha HAVING count(*) >= 5;
Jointure de deux tables DynamoDB
L'exemple suivant mappe une autre table Hive (east_coast_states) à une table dans DynamoDB. L'instruction SELECT
opère une jointure entre ces deux tables. La jointure est calculée sur le cluster, puis renvoyée. La jointure n'a pas lieu dans DynamoDB.
Prenons l'exemple d'une table DynamoDB EastCoastStates nommée contenant les données suivantes :
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
Supposons que la table est disponible en tant que table externe Hive nommée east_coast_states :
CREATE EXTERNAL TABLE ddb_east_coast_states (state_name STRING, state_alpha STRING) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "EastCoastStates", "dynamodb.column.mapping" = "state_name:StateName,state_alpha:StateAbbrev");
La jointure suivante renvoie les États de la côte Est des États-Unis qui possèdent au moins trois particularités :
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;
Jointure de tables de sources différentes
Dans l'exemple suivant, s3_east_coast_states est une table Hive associée à un fichier CSV stocké dans Amazon S3. La table ddb_features est associée à des données dans DynamoDB. L'exemple suivant joint ces deux tables pour renvoyer les particularités géographiques des États dont le nom commence par « New ».
create external table s3_east_coast_states (state_name STRING, state_alpha STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 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%';