Dynamodb 简明教程

DynamoDB - Aggregation

DynamoDB 不提供聚合函数。你必须创新地使用查询、扫描、索引和各种工具来执行这些任务。在所有这一切中,这些操作中查询/扫描的吞吐量开销可能会很大。

你还可以选择使用适合偏好 DynamoDB 编码语言的库和其它工具。在使用之前确保其与 DynamoDB 的兼容性。

Calculate Maximum or Minimum

使用结果的升序/降序存储顺序、Limit 参数以及任何设置顺序的参数来查找最高和最低的值。

例如 -

Map<String, AttributeValue> eaval = new HashMap<>();
eaval.put(":v1", new AttributeValue().withS("hashval"));
queryExpression = new DynamoDBQueryExpression<Table>()
   .withIndexName("yourindexname")
   .withKeyConditionExpression("HK = :v1")
   .withExpressionAttributeValues(values)
   .withScanIndexForward(false);                //descending order

queryExpression.setLimit(1);
QueryResultPage<Lookup> res =
   dynamoDBMapper.queryPage(Table.class, queryExpression);

Calculate Count

使用 DescribeTable 获取表项计数,但请注意它提供的是旧数据。此外,利用 Java getScannedCount method

使用 LastEvaluatedKey 确保它提供所有结果。

例如 -

ScanRequest scanRequest = new ScanRequest().withTableName(yourtblName);
ScanResult yourresult = client.scan(scanRequest);
System.out.println("#items:" + yourresult.getScannedCount());

Calculating Average and Sum

利用索引和查询/扫描在处理前检索和过滤值。然后通过对象简单地处理这些值。