我有一个表,我在一组网页上存储了多个随时间变化的社交媒体帖子。表列是page_id、post_id和obs_date[加上我感兴趣的数据]。我想查询这个表的最新观察每个 post_id的给定 page_id。在SQL中,这是类似于
SELECT * FROM my_table
JOIN
(SELECT max(obs_date) AS obs_date, post_id FROM my_table
WHERE page_id='12345' GROUP BY post_id) AS t
ON t.obs_date=my_table.obs_date AND t.post_id=my_table.post_id
我已经看到了在这样的问题中获取哈希键的最新项的食谱,但在这里我想知道是否有可能进一步采取这一步并获得给定哈希键的最新项,然后为另一个属性中的每个"GROUP BY"。我将如何设置我的表和键来做到这一点?我可以使用本地或全局二级索引吗?
这可以通过Local secondary Index
实现首先你的主表看起来像
page_id - hash
post_id - range
other attributes
则可以创建具有
的LSI page_id - hash
date_time - Range
other attributes you need
现在,当您根据给定的page_id查询LSI时,您将根据日期升序/降序获得所有数据(scanIndexForward -false将降序给出)。
文档中也有类似的例子:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
希望这对你有帮助
谢谢