aws DynamoDB boto3查询GROUP BY和ORDER BY

问题描述:

我正在寻求请求一个dynamodb表,但我无法弄清楚如何做一个GROUP BY和ORDER BY与Python 2.7 sdk boto3。aws DynamoDB boto3查询GROUP BY和ORDER BY

我已经阅读并再次阅读aws文档和大部分堆栈主题,但是我没有找到明确的答案,因为我的请求相当复杂。

我会从我的表中有'permaname'GROUP BY'源'的所有项目,我会得到结果ORDER BY created_on DESC。

这是我做我的请求,我的那一刻简单的要求:

response = self.table.query(KeyConditionExpression = key('permaname').eq(self.permaname)) 

我希望有人能回答

DynamoDB没有聚合函数一样GROUP BY在RDBMS。排序只能在SORT KEY属性上执行。对于所有其他属性,您可能需要在客户端执行此操作。

另一种方法是使用SORT键创建全局二级索引(GSI)。但是,GSI会为读取和写入容量单位带来额外成本。

查询结果总是被排序关键字值排序。如果排序键的数据类型为 ,则结果以数字 顺序返回;否则,结果将按照UTF-8字节的顺序返回。默认情况下,排序顺序为 。要颠倒顺序,请将 ScanIndexForward参数设置为false。

+0

非常感谢你的回答@notionquest,我编辑了我的问题。跳你知道该怎么做 –

只能在排序键attribute.If您的排序键BY操作执行顺序设置为created_on,您可以使用ScanIndexForward通过操作执行的顺序。

response = self.table.query(KeyConditionExpression = key('permaname').eq(self.permaname), ScanIndexForward=False)