Dynamodb-aggregation

提供:Dev Guides
移動先:案内検索

DynamoDB-集約

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

平均と合計の計算

インデックスとクエリ/スキャンを使用して、処理する前に値を取得およびフィルタリングします。 次に、オブジェクトを通じてこれらの値を操作します。