DynamoDB - Aggregazione

DynamoDB non fornisce funzioni di aggregazione. È necessario fare un uso creativo di query, scansioni, indici e strumenti assortiti per eseguire queste attività. In tutto ciò, la spesa per il throughput di query / scansioni in queste operazioni può essere pesante.

Hai anche la possibilità di utilizzare librerie e altri strumenti per il tuo linguaggio di codifica DynamoDB preferito. Assicurati che siano compatibili con DynamoDB prima di utilizzarlo.

Calcola massimo o minimo

Utilizzare l'ordine di memorizzazione ascendente / discendente dei risultati, il parametro Limite e tutti i parametri che impostano l'ordine per trovare i valori più alti e più bassi.

Ad esempio:

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

Calcola il conteggio

Uso DescribeTableper ottenere un conteggio degli elementi della tabella, tuttavia, tenere presente che fornisce dati non aggiornati. Inoltre, utilizza JavagetScannedCount method.

Utilizzare LastEvaluatedKey per garantire che fornisca tutti i risultati.

Ad esempio:

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

Calcolo della media e della somma

Utilizza gli indici e una query / scansione per recuperare e filtrare i valori prima dell'elaborazione. Quindi agite semplicemente su quei valori attraverso un oggetto.