比方说,在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我想在一个查询中获得每个唯一Box的第一行。可能会有数百个框需要立即输入第一个条目,这使得单独的请求效率低下。
我似乎在API中找不到任何允许我这样做的东西。有可能吗?我该怎么做呢?
发布于 2014-09-03 12:33:14
您可能需要考虑在Boxname (散列键)和date上创建一个全局辅助索引(GSI)作为范围键。这将使您可以在二级索引上使用查询接口,在二级索引上可以查询“查找Boxname =$box的所有ID”。
请参阅documentation for GSI。
希望这能帮上忙,斯瓦米
发布于 2019-03-06 16:20:30
如果不像上面建议的那样为每个框创建索引,就无法仅查询每个框的第一次出现。但是,如果您不介意读取整个表,然后选择正确的行,那么将整个表读入一个数组,然后通过一些简单的代码使其具有唯一性。例如,假设您已将表读入一个数组(请注意,您可能需要多次调用以进行扫描或查询,直到获得所有这些调用),该数组如下所示:
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”中给出列表:
out = []
seen = []
for line in l:
if line["BoxName"] not in seen:
seen.append(line["BoxName"])
out.append(line)https://stackoverflow.com/questions/25613984
复制相似问题