当前位置: 首页 > 知识库问答 >
问题:

aws DynamoDB boto3查询分组依据和订单依据

刘翔宇
2023-03-14

我希望请求一个dynamodb表,但我不知道如何使用Python2.7SDK boto3执行GROUPBY和ORDERBY。

我读了一遍又一遍的aws留档和大多数堆栈主题,但我没有找到明确的答案,因为我的请求相当复杂。

我将从我的表中获取所有项目,这些项目通过“源”具有“permaname”组,并且我将通过在DESC上创建_获得结果顺序。

这就是我如何做我的请求我现在的简单请求:

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

我希望有人知道答案

共有2个答案

王俊哲
2023-03-14

DynamoDB没有像RDBMS中的groupby那样的聚合函数。只能对“排序键”属性执行排序。对于所有其他属性,您可能需要在客户端执行此操作。

另一种方法是使用SORT Key创建全球二级索引(GSI)。然而,GSI将产生读写容量单元的额外成本。

查询结果始终按排序键值排序。如果排序键的数据类型为Number,则按数字顺序返回结果;否则,按UTF-8字节顺序返回结果。默认情况下,排序顺序是升序。若要反转顺序,请将ScanIndexForward参数设置为false。

马高谊
2023-03-14

只能对SORT KEY属性执行ORDER BY操作。如果SORT KEY设置为created_on,则可以使用ScanIndexForward执行ORDER BY操作。

response = self.table.query(KeyConditionExpression = key('permaname').eq(self.permaname), ScanIndexForward=False)
 类似资料:
  • 我正在使用SQLServer2008,我想知道我是否可以在一个select语句中完成查询,而不需要子查询。 如果记录中的某个字段在最近10个创建的记录中为true,我想将变量设置为true,如果该字段在最近10个记录中为true,则变量为true,如果为false,则变量为false,如果记录总数小于10,则变量也为false。 我的问题是,要获取最新创建的10条记录,我需要通过降序对用户进行排序

  • 问题内容: 我在为MySQL编写SQL查询时遇到一些问题。我有一个具有以下结构的表: 我想创建一个查询,该查询从表中提取以下信息: 查询结果应如下所示: 当然,每个唯一的“ id”具有更多行。 我已经尝试过一些查询,例如 这将返回正确的结果,但是我必须使用“ pass”的其他可能值(最多7个)来扩展它 我尝试在AVG中使用嵌套的SELECT,但这没有用,因为我没有弄清楚如何正确地将其限制为当前的’

  • 问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚

  • 我知道你以前回答过类似的问题,但我有一个具体的问题,希望你能帮忙。我有一个组织(客户)表。我需要找到每个客户最近的工作。 问题是,客户机表并没有直接连接到作业。它是这样的工作-工作标题-组织。 因此,我有一个所有组织的查询(),然后我有一个JOIN到一个查询,该查询使用客户端ORg作为连接条件查找最近的作业。 例如: 当我运行它时,它给出了一个错误,即Order By子句在视图、内联函数中无效。

  • 问题内容: 我希望能够从电子邮件表中选择一堆行并按发件人分组。我的查询如下所示: 该查询几乎可以按我希望的方式工作-它选择按电子邮件分组的记录。问题在于主题和时间戳记与特定电子邮件地址的最新记录不符。 例如,它可能返回: 当数据库中的记录是: 如果“编程问题”主题是最新的,那么在对电子邮件进行分组时如何使MySQL选择该记录? 问题答案: 一个简单的解决方案是将查询包裹与ORDER语句子选择 第一

  • 问题内容: 我正在尝试创建一个更新查询,并且在获取正确的语法方面进展甚微。以下查询正在运行: 它创建一个三元组的列表Index1,Index2,EventCounts。仅在t.SpecialEventCount为NULL的情况下才这样做。我尝试编写的更新查询应将此SpecialEventCount设置为该计数,即上述查询中的COUNT(m.EventType)。此数字可以是0或任何正数(因此为左联