Consultar dados no DynamoDB - Amazon DynamoDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Consultar dados no DynamoDB

Os exemplos a seguir mostram algumas formas como você pode usar HiveQL para consultar dados armazenados no DynamoDB.

Esses exemplos referenciam a tabela ddb_features no tutorial (Etapa 5: copiar dados para o DynamoDB ).

Usar funções agregadas

O HiveQL fornece funções internas para resumir valores de dados. Por exemplo, você pode usar a função MAX para localizar o maior valor para uma coluna selecionada. O exemplo a seguir retorna a elevação do recurso mais elevado no estado do Colorado.

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

Usar cláusulas GROUP BY e HAVING

Você pode usar a cláusula GROUP BY para coletar dados em vários registros. Ela é usada frequentemente com uma função agregada, como SUM, COUNT, MIN ou MAX. Você também pode usar a cláusula HAVING para descartar os resultados que não atenderem a determinados critérios.

O exemplo a seguir retorna uma lista das elevações mais altas entre os estados que têm mais de cinco recursos na tabela ddb_features.

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

União de duas tabelas do DynamoDB

O exemplo a seguir mapeia outra tabela do Hive (east_coast_states) em uma tabela no DynamoDB. A instrução SELECT é uma junção entre essas duas tabelas. A junção é calculada no cluster e retornada. A junção não ocorre no DynamoDB.

Considere uma tabela do DynamoDB chamada EastCoastStates que contém os seguintes dados:

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

Vamos supor que a tabela esteja disponível como uma tabela externa do Hive chamada 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");

A junção a seguir retorna os estados na Costa Leste dos Estados Unidos que têm pelo menos três recursos:

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;

União de tabelas de origens diferentes

No exemplo a seguir, s3_east_coast_states é uma tabela do Hive associada a um arquivo CSV armazenado no Amazon S3. A tabela ddb_features é associada aos dados no DynamoDB. O exemplo a seguir junta essas duas tabelas, retornando os recursos geográficas de estados cujos nomes começam com "Nova".

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