2012-02-08 62 views
2

有什么方法可以在App Engine中使用GROUP BY,通过GQLQuery方法吗?如何在App Engine中使用GROUP BY

我做了一些研究,我读过,有GQL没有GROUP BY,看起来像没有也Query类。

如果有任何资源或任何方法与Python,请让我知道。


编辑

我读过也是它可能使GROUP BYMap Reduce。如果任何人有这方面的经验,一个帮助将被接受。

谢谢。

回答

3

不,数据存储不支持任何类型的数据库端处理或聚合。解决方案是在内存中进行所有后期处理。有两种方法可以在每个请求中或使用map reduce。任何解决方案将始终返回查询中的所有行,但您获取行的方式会有所不同。

2

您不能使用appengine库执行GROUP BY查询。这是数据库体系结构的失败,在gereral中(其中Google的BigTable是其中一个实现)。

根据您使用GROUP BY所做的工作,另一种方法可能适合您的需求。对于每个“类型”的模型,您正在查询您的GROUP BY,建立一个db.Model类来表示每个类。然后直接查询这些类。

或者,如果您已预先知道返回的组的值,则可以为每个值设置Query#filter(),并将这些查询作为您的GROUP BY ed集处理。

1

我想这个解决方案最终取决于你计划如何处理分组数据。如果分组要求是为了简化HTML代码中的输出,那么您可以通过regrouping模板中的数据来解决该问题。

对于计算或其他类型的聚合,您需要在内存中执行此操作。