2017-10-02 3 views
0

Je dois exécuter le même scan sur 4 tables différentes dans DynamoDB.Paramètre AWS DynamoDB DocumentClient paramètres d'analyse? Combiner les résultats de plusieurs analyses?

J'ai actuellement ce code pour exécuter l'analyse à partir AWS lambda (et il fonctionne pour une seule table):

var params = { 
    TableName: "some-table-1", 

    ProjectionExpression: "#state, #type", 
    FilterExpression: "#state = :state and #type = :type", 
    ExpressionAttributeNames: { 
     "#state": "state", 
     "#type": "type" 
    }, 
    ExpressionAttributeValues: { 
     ":state": 'Running', 
     ":sessionType": 'SomeType' 
    } 
}; 
docClient.scan(params, onScan); //onScan function defined somewhere else that writes a metric for # of items meeting this critera 

Améliorations générales seraient également appréciées! (Remarque: state et sessionType ne sont PAS la clé primaire ou la clé de tri)

Je veux juste lancer l'analyse et envoyer toute une liste de tables pour obtenir des résultats, puis traiter les résultats de toutes les tables à une fois que. Ainsi, par exemple, je veux obtenir tous les éléments avec state = Running et sessionType = SomeType sur les 4 tables et renvoyer le total sur les 4 tables.

Répondre

0

L'exécution de l'analyse pour obtenir le nombre n'est pas recommandée avec les bases de données NoSQL. Vous pouvez gérer un compteur atomique distinct qui conserve la valeur totale.

Si vous voulez continuer à analyser et obtenir les totaux,

Nous utilisons ODM, https://github.com/clarkie/dynogels

qui peut analyser répétitivement et obtenir l'ensemble des dossiers.

Ex.,

Account 
    .scan() 
    .loadAll() 
    .exec(callback); 

Hope it helps.