Поддерживает ли DynamoDB совокупные функции, такие как AVG, MAX, MIN?

Я пробовал документы DynamoDB и работал с примером, используя QueryResult, я не мог найти никакого источника, как использовать min, max и avg в DynamoDB (я использую Java API).

Ответ 1

Это не предусмотрено. Вы реализуете их путем выполнения запроса или сканирования с помощью фильтра и вычисления значений самостоятельно. Чтобы немного упростить, вы можете использовать параметр Count, чтобы возвращать только количество элементов, которые будут возвращены этим запросом/сканированием вместо фактических предметов. (Обратите внимание, что count возвращает только частичный счет - вам может понадобиться суммировать подсчеты на нескольких страницах запросов/сканирований).

В качестве альтернативы вы можете сохранить отдельную таблицу, которая сохраняет эти значения для вас по мере обновления основных таблиц (обратите внимание, что это может быть сложно синхронизировать, вам придется использовать некоторую форму управления транзакциями и учитывать динамо возможная модель согласованности).

Ответ 2

У меня была такая же проблема, как и вы, а затем у меня было 2 идеи для решения этой проблемы. Первый - это запрос всех данных с помощью запроса/сканирования, а затем агрегирование ваших данных в Java-коде. Второй - использовать Hive SQL, вы можете использовать Hive и DyanmoDB вместе и агрегировать свои данные в Hivql.

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Tutorial.html