Можно ли получить количество записей для результата сканирования DynamodB без нумерации страниц? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть набор записей в моей таблице DynamodB.Я хотел бы получить количество записей на основе определенных критериев без нумерации страниц .Вот мой код для извлечения данных:

$db = $this->getDi()->get('dynamodb');
$dynamodb = $db->createDynamoDb();
$FilterExpression='tenant_id = :tid';
$ExpressionAttributeValuesArr=array(':tid'=>array('S'=>'16008d5bXYZ'), ':mod'=>array('S'=>"leads"));
scan_request=array(
                    'TableName' => 'xxxx',
                    'Count'     => true,
                    'FilterExpression' => $FilterExpression.' AND #module = :mod',
                    'ExpressionAttributeNames' => array('#module' => 'module'),
                    'ExpressionAttributeValues' => $ExpressionAttributeValuesArr,
                );
$scan_response = $dynamodb->scan($scan_request);

Этот код возвращает список записей и счет, но не весь набор или весь счет, поскольку я вижу поле LastEvaluatedKey, возвращаемое в ответе,Мне нужно иметь счет для всего набора записей, возвращаемых для этого сканирования.Как я могу это сделать ?Это возможно даже без нумерации страниц?

1 Ответ

0 голосов
/ 23 ноября 2018

Боюсь, что нет, COUNT - это поздний запрос, то есть динамо-машина читает взимает за вас) каждую запись в таблице перед применениемфильтр и затем уменьшить его до количества.

Вот почему вы должны разбить на страницы, потому что оператор счета будет "видеть" только до длины страницы.

Если вам не нужночтобы сделать это программно / точно, я бы указал на «расчетное количество», которое AWS показывает в консоли DynamoDB.

...