Esecuzioni di query sui dati in DynamoDB - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzioni di query sui dati in DynamoDB

Negli esempi seguenti vengono illustrati i diversi modi in cui puoi utilizzare HiveQL per eseguire query sui dati archiviati in DynamoDB.

Questi esempi si riferiscono alla tabella ddb_features del tutorial (Fase 5: copia dei dati in DynamoDB).

Uso delle funzioni di aggregazione

HiveQL fornisce funzioni integrate per il riepilogo dei valori dei dati. Ad esempio, è possibile utilizzare la funzione MAX per trovare il valore più grande per una colonna selezionata. Nell'esempio seguente viene restituita l'elevazione della caratteristica più alta nello stato del Colorado.

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

Uso delle clausole GROUP BY e HAVING

Puoi utilizzare la clausola GROUP BY per raccogliere dati all'interno di più record. Questa clausola viene spesso utilizzata con una funzione di aggregazione come SUM, COUNT, MIN o MAX. È possibile utilizzare la clausola HAVING anche per eliminare tutti i risultati che non soddisfano determinati criteri.

L'esempio seguente restituisce un elenco delle elevazioni più alte dagli stati che hanno più di cinque caratteristiche nella tabella ddb_features.

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

Unione di due tabelle DynamoDB

L'esempio seguente mappa un'altra tabella Hive (east_coast_states) a una tabella in DynamoDB. L'istruzione SELECT è un join tra queste due tabelle. Il join viene calcolato nel cluster e in seguito viene restituito. L'unione non si svolge in DynamoDB.

Consideriamo una tabella DynamoDB EastCoastStates denominata che contiene i seguenti dati:

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

Supponiamo che la tabella sia disponibile come tabella esterna Hive denominata 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");

Il join seguente restituisce gli stati sulla costa orientale degli Stati Uniti che hanno almeno tre caratteristiche:

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;

Unione di tabelle da origini diverse

In questo esempio, s3_east_coast_states è una tabella Hive associata a un file CSV archiviato in Amazon S3. La tabella ddb_features è associata ai dati in DynamoDB. Nell'esempio seguente vengono unite queste due tabelle, restituendo le caratteristiche geografiche dagli stati i cui nomi iniziano con "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%';