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());
计算平均值和总和
在处理之前利用索引和查询/扫描来检索和过滤值。 然后只需通过对象对这些值进行操作即可。