Dynamodb 最大值

aru*_*van 10 python amazon-dynamodb boto3

我正在使用 Dynamodb。我有一个简单的 Employee 表,其中包含 id、name、salary、doj 等字段。 dynamodb 中的等效查询是select max(salary) from employee什么?

ket*_*iya 7

您可以对架构进行建模,例如:

  • employee_id, 作为分区键
  • salary, 作为表的排序键或本地二级索引。

然后,Query您的表为 given employee_idScanIndexForward为 false,并选择第一个返回的条目。由于所有行 oneemployee_id都以排序方式存储,因此 desc 顺序中的第一个条目将是最高的salary

您也可以保留Limit为 1,在这种情况下,DynamoDB 将仅返回一条记录。

相关文档在这里

  • 似乎这只会返回*每位员工*的最高工资。原始 SQL 查询是针对“全局最大值”的。 (4认同)
  • 我可以确认 @tedder42 所说的。如果您想使用此方法获得全局最大值,则必须添加一个对于表中的所有条目具有相同值的字段(或者如果您已经有一个对于所有条目都相同的字段,请使用该字段),然后引入一个全局二级索引,使用新引入的常量字段作为HASH键,薪水作为RANGE键。从那里可以按照本解决方案中概述的步骤进行操作。查询时一定要使用创建的全局二级索引! (3认同)

not*_*est 2

在 Dynamodb 中没有廉价的方法可以实现这一点。没有内置函数可以确定属性的最大值,而无需检索所有项目并以编程方式进行计算。