DynamoDB - Agrégation

DynamoDB ne fournit pas de fonctions d'agrégation. Vous devez utiliser de manière créative les requêtes, les analyses, les index et divers outils pour effectuer ces tâches. Dans tout cela, la dépense de débit des requêtes / analyses dans ces opérations peut être lourde.

Vous avez également la possibilité d'utiliser des bibliothèques et d'autres outils pour votre langage de codage DynamoDB préféré. Assurez-vous de leur compatibilité avec DynamoDB avant de l'utiliser.

Calculer le maximum ou le minimum

Utilisez l'ordre de stockage croissant / décroissant des résultats, le paramètre Limit et tous les paramètres qui définissent l'ordre pour trouver les valeurs les plus élevées et les plus basses.

Par exemple -

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

Calculer le nombre

Utilisation DescribeTablepour obtenir un décompte des éléments du tableau, cependant, notez qu'il fournit des données obsolètes. Utilisez également JavagetScannedCount method.

Utiliser LastEvaluatedKey pour s'assurer qu'il donne tous les résultats.

Par exemple -

ScanRequest scanRequest = new ScanRequest().withTableName(yourtblName); 
ScanResult yourresult = client.scan(scanRequest); 
System.out.println("#items:" + yourresult.getScannedCount());

Calcul de la moyenne et de la somme

Utilisez des index et une requête / analyse pour récupérer et filtrer les valeurs avant le traitement. Ensuite, opérez simplement sur ces valeurs via un objet.