2016-09-02 3 views
0

J'ai des données dans la table dynamoDB et j'essaie de le filtrer en fonction des attributs de données. Voici un exemple des données JSON. Un exemple de requête de filtre serait: payload.stat> 200.Paramètre Filtre pour dynamoDB Tableau

Cependant, les tentatives d'utilisation de cette requête dans le volet de navigation DynamoDB ne fonctionnent pas et j'obtiens une erreur: "Un élément est constitué d'un ou de plusieurs attributs. Lorsque vous lisez ou écrivez un élément, les seuls attributs requis sont ceux qui constituent la clé primaire "

Comment puis-je filtrer les données à l'aide d'attributs dans la charge utile?

{ 
    "payload": { 
    "lock": "L1", 
    "maxtmptr": 50, 
    "serial": "SX001", 
    "stat": 255, 
    "timeover": 0.17, 
    "tmptr": 30 
    }, 
    "serial": "SX001", 
    "timestamp": "1472784542467" 
} 

Capture d'écran de DynamoDB Tableau:

Click here for snapshot of DynamoDB Table

+0

Quel est le type de données de charge utile? Est-ce défini comme une carte? – notionquest

+0

Pouvez-vous partager votre code qui jette cette erreur? – Dasharath

+0

@notionquest, la charge utile est une donnée json. pas besoin de définir la charge utile. –

Répondre

2

Vous pouvez interroger ou scannez le résultat en utilisant FilterExpressions. Lorsque vous interrogez le dynamodb, la clé de partition est obligatoire. Lorsque vous analysez le dynamodb, la clé de partition est facultative. Mais Scan est plus lent que Query.

Essayez avec cette

var params = { 
     "TableName": tableName, 
     "FilterExpression": "payload.lock = :val1 and timestamp = :val2", 
     "ExpressionAttributeValues": { 
      ":val1": "lockInput", 
      ":val1": "timestamp" 
     }, 
     "ReturnConsumedCapacity": "TOTAL" 
    }; 

si vous avez besoin de plus d'options de filtrage, vous pouvez personnaliser votre FilterExpression.