DynamoDB 聚合
DynamoDB 不提供聚合功能。您必须创造性地使用查询、扫描、索引和各种工具来执行这些任务。总之,这些操作中查询/扫描的吞吐量开销可能很大。
您还可以选择将库和其他工具用于您首选的 DynamoDB 编码语言。在使用之前确保它们与 DynamoDB 的兼容性。
计算最大值或最小值
利用结果的升/降存储顺序、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);
计算计数
使用
DescribeTable 获取表格项目的计数,但请注意,它提供的是陈旧数据。另外,使用 Java
getScannedCount 方法。
利用
LastEvaluatedKey 确保它提供所有结果。
例如-
ScanRequest scanRequest = new ScanRequest().withTableName(yourtblName);
ScanResult yourresult = client.scan(scanRequest);
System.out.println("#items:" + yourresult.getScannedCount());
计算平均值和总和
在处理之前利用索引和查询/扫描来检索和过滤值。然后通过一个对象简单地对这些值进行操作。