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());
Расчет среднего и суммы
Используйте индексы и запрос / сканирование для извлечения и фильтрации значений перед обработкой. Затем просто оперируйте этими значениями через объект.