Учебники

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

Расчет среднего и суммы

Используйте индексы и запрос / сканирование для извлечения и фильтрации значений перед обработкой. Затем просто оперируйте этими значениями через объект.