首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AWS Dynamo中获取列的唯一值?

如何在AWS Dynamo中获取列的唯一值?
EN

Stack Overflow用户
提问于 2014-09-02 07:33:30
回答 2查看 11.8K关注 0票数 12

比方说,在AWS Dynamo中,我有一个这样的表:

代码语言:javascript
复制
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

我想在一个查询中获得每个唯一Box的第一行。可能会有数百个框需要立即输入第一个条目,这使得单独的请求效率低下。

我似乎在API中找不到任何允许我这样做的东西。有可能吗?我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2014-09-03 12:33:14

您可能需要考虑在Boxname (散列键)和date上创建一个全局辅助索引(GSI)作为范围键。这将使您可以在二级索引上使用查询接口,在二级索引上可以查询“查找Boxname =$box的所有ID”。

请参阅documentation for GSI

希望这能帮上忙,斯瓦米

票数 3
EN

Stack Overflow用户

发布于 2019-03-06 16:20:30

如果不像上面建议的那样为每个框创建索引,就无法仅查询每个框的第一次出现。但是,如果您不介意读取整个表,然后选择正确的行,那么将整个表读入一个数组,然后通过一些简单的代码使其具有唯一性。例如,假设您已将表读入一个数组(请注意,您可能需要多次调用以进行扫描或查询,直到获得所有这些调用),该数组如下所示:

代码语言:javascript
复制
l = [
    {"ID": "0", "Date": "1/1/2014", "BoxName": "Box-1"},
    {"ID": "1", "Date": "2/1/2014", "BoxName": "Box-1"},
    {"ID": "2", "Date": "3/1/2014", "BoxName": "Box-2"},
    {"ID": "3", "Date": "4/1/2014", "BoxName": "Box-3"},
    {"ID": "4", "Date": "5/1/2014", "BoxName": "Box-3"},
    {"ID": "5", "Date": "5/1/2014", "BoxName": "Box-1"}
]

然后,python中类似这样的简单代码将在变量“out”中给出列表:

代码语言:javascript
复制
    out = []
    seen = []
    for line in l:
        if line["BoxName"] not in seen:
            seen.append(line["BoxName"])
            out.append(line)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25613984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档