1

灵感来自如何从 DynamoDB 获取每个主分区键的最新数据?

我在 dynamodb 中有一张桌子。它存储帐户统计信息。帐户统计信息可能每天会更新数次。所以表记录可能如下所示:

+------------+--------------+--------+-------+
| account_id | 记录 ID | 意见 | 明星 |
+------------+--------------+--------+-------+
| 3 | 2019/03/16/1 | 29 | 3 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/2 | 130 | 21 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/3 | 12 | 2 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/1 | 57 | 12 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/2 | 8 | 2 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/1 | 3 | 0 |
+------------+--------------+--------+-------+
account_id是主分区钥匙。record_id 是主排序键

如何仅获取每个 account_ids 的最新记录?所以从上面的例子中我希望得到:

+------------+--------------+--------+-------+
| account_id | 记录 ID | 意见 | 明星 |
+------------+--------------+--------+-------+
| 3 | 2019/03/16/1 | 29 | 3 |
+------------+--------------+--------+-------+
| 2 | 2019/03/16/2 | 130 | 21 |
+------------+--------------+--------+-------+
| 1 | 2019/03/16/3 | 12 | 2 |
+------------+--------------+--------+-------+
这个数据方便用于报告目的。

4

1 回答 1

2

对每个 account_id 执行以下 PartiQL 查询:

SELECT * FROM <Table> WHERE account_id='3' AND record_id > '2021/11' ORDER BY record_id DESC

PartiQL 没有LIMIT关键字,因此将返回所有匹配的记录。record_id您可以通过尽可能限制日期来减少过度获取。例如,如果只关注当前日期,则排序键表达式将为record_id > 2021/12/01.

account_id与引用的示例一样,您必须为每个感兴趣的 对象执行一个查询。支持批处理操作

于 2021-12-01T20:00:39.050 回答