2014-09-01 5 views
5

Say, dans AWS Dynamo, j'ai une table comme ceci:Comment obtenir des valeurs uniques d'une colonne dans AWS Dynamo?

ID (HKey) Date (RKey) BoxName 
0   1/1/2014  Box-1 
1   2/1/2014  Box-1 
2   3/1/2014  Box-2 
3   4/1/2014  Box-3 
4   5/1/2014  Box-3 
5   5/1/2014  Box-1 

Je veux, en une seule requête, obtenir la première ligne pour chaque boîte unique. Il pourrait y avoir des centaines de boîtes dont j'ai besoin pour la première fois, rendant les demandes individuelles inefficaces.

Je n'arrive pas à trouver quelque chose dans l'API qui me permettrait de le faire. C'est possible? Comment ferais-je cela?

Répondre

2

Vous pouvez envisager de créer un index secondaire global (GSI) sur Boxname (clé de hachage) et la date en tant que clé de plage. Cela vous permettra d'utiliser l'API de requête sur l'index secondaire où vous pouvez interroger "Trouver tous les ID avec Boxname = $ box". Voir le documentation for GSI.

Hope this helps, Swami

+1

Pas tout à fait ce que je suis après. J'ai édité la question pour refléter que je veux le premier de chaque boîte dans une requête. – AlbeyAmakiir

+0

GSI est ce que vous voulez. Comme mentionné dans la réponse ci-dessus, vous pouvez faire une "requête" sur le GSI avec le nom de la boîte comme clé de hachage. Puisque GSI trierait la boîte du même nom avec Date, vous pouvez définir la limite de votre requête à 1 pour obtenir la plus ancienne boîte. La seule chose est que vous pourriez vouloir créer une table distincte qui contient tous les noms de boîte. –

+2

J'ai une demande similaire et je ne crois pas que vous répondiez à la question. Le problème est de savoir comment obtenir la liste des noms de boîte uniques? En utilisant un GSI avec un nom de boîte comme hashkey, vous pouvez seulement interroger si vous connaissez le nom de la boîte. Cette personne veut trouver tous les noms de boîte quand ils ne les connaissent pas. –

Questions connexes