2014-10-10 3 views

ответ

6

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

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

+0

только счетчик поддерживается https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count – cjungel

+1

Не совсем - рассчитывать только возвращает частичные результаты этого запроса - вы все еще необходимо собрать общий счет самостоятельно. Я скопировал и вставил соответствующие примечания к документу из вашей ссылки здесь: «Если соответствующие элементы для выражения фильтра или условия запроса превышают 1 МБ, граф содержит частичный подсчет общего количества элементов, соответствующих запросу. получить полное количество элементов, которые соответствуют, взять значение LastEvaluatedKey из предыдущего запроса и использовать это значение как ExclusiveStartKey в следующем запросе. Повторите это, пока DynamoDB больше не вернет LastEvaluatedKey. * « – Krease

+0

Вы правы, вы можете должны суммировать все частичные счета, чтобы получить общее количество. Но все же это более эффективно, чем извлечение отдельных элементов и подсчет их в стороне приложения. Конечно, это будет работать только для подсчета, а не для какой-либо другой совокупной функции. – cjungel

2

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

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

Смежные вопросы