DynamoDB: agregación

DynamoDB no proporciona funciones de agregación. Debe hacer un uso creativo de consultas, análisis, índices y una variedad de herramientas para realizar estas tareas. En todo esto, el gasto de rendimiento de las consultas / escaneos en estas operaciones puede ser elevado.

También tiene la opción de utilizar bibliotecas y otras herramientas para su lenguaje de codificación DynamoDB preferido. Asegúrese de su compatibilidad con DynamoDB antes de usarlo.

Calcular máximo o mínimo

Utilice el orden de almacenamiento ascendente / descendente de los resultados, el parámetro Límite y cualquier parámetro que establezca el orden para encontrar los valores más altos y más bajos.

Por ejemplo

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

Calcular recuento

Utilizar DescribeTableSin embargo, para obtener un recuento de los elementos de la tabla, tenga en cuenta que proporciona datos obsoletos. Además, utilice JavagetScannedCount method.

Utilizar LastEvaluatedKey para garantizar que ofrece todos los resultados.

Por ejemplo

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

Calcular el promedio y la suma

Utilice índices y una consulta / escaneo para recuperar y filtrar valores antes de procesarlos. Luego, simplemente opere sobre esos valores a través de un objeto.