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 절을 사용하여 여러 레코드에서 데이터를 수집할 수 있습니다. 이 절은 종종 SUM, COUNT, MIN, MAX와 같은 집계 함수와 함께 사용됩니다. 또한 HAVING 절을 사용하여 특정 기준을 충족하지 않는 결과를 모두 폐기할 수도 있습니다.

다음 예제는 ddb_features 테이블에서 5개 이상의 지형이 있는 주에서 최고 고도의 목록을 반환합니다.

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

다음 조인은 지형이 3개 이상 있는 미국 동부 연안 주를 반환합니다.

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%';