查詢 DynamoDB 中的資料 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢 DynamoDB 中的資料

以下範例顯示使用 HiveQL 査詢存放在 DynamoDB 中的資料的一些方法。

這些範例參考教學課程 (步驟 5:將資料複製到 DynamoDB) 中的 ddb_features 資料表。

使用彙總函數

HiveQL 提供用於摘要資料值的內建函數。例如,您可以使用 MAX 函數尋找所選資料欄的最大值。下列範例會傳回科羅拉多州最高山峰的海拔。

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

使用 GROUP BY 和 HAVING 子句

您可以使用 GROUP BY 子句跨多筆記錄收集資料。這常會與 SUMCOUNTMINMAX 等彙總函數搭配著使用。您也可以使用 HAVING 子句捨棄任何不符合特定條件的結果。

以下範例返回 ddb_features 資料表中具有五個以上特徵的州的最高海拔清單。

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

加入兩個 DynamoDB 資料表

以下範例示範將另一個 Hive 資料表 (east_coast_states) 映射到 DynamoDB 中的資料表。此 SELECT 陳述式是這兩個資料表之間的聯結。聯結會在叢集上運算並傳回。聯結不會在 DynamoDB 中發生。

假設名為包含下列資料 EastCoastStates 的 DynamoDB 資料表:

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

假設該資料表可用作名為 east_coast_states 的 Hive 外部資料表:

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");

下列聯結會傳回美國東海岸至少具有三個特徵的州:

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;

聯結來自不同來源的資料表

在以下範例中,s3_east_coast_states 是與 Amazon S3 中存放的 CSV 檔案相關聯的 Hive 資料表。此 ddb_features 資料表與 DynamoDB 中的資料相關聯。下列範例會聯結這兩個資料表,傳回名稱以「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%';