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

计算平均值和总和

利用索引和查询/扫描在处理之前检索和过滤值。然后只需通过对象对这些值进行操作。

广告