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

計算平均值和總和

利用索引和查詢/掃描在處理之前檢索和過濾值。然後只需透過物件對這些值進行操作。

廣告