如何在Gql中按工作日聚合结果

时间:2013-10-16 22:49:00

标签: google-app-engine gql

我在Google App Engine的应用程序中有一个数据存储,每行都有一个数字和datetimeproperty信息。

在应用程序中,我要做的是告诉工作日的数字的平均值,

e.g。数据存储中的示例数据

num          date
100          2013-10-16 21:04:17.809070
467          2013-10-13 21:19:19.014730
200          2013-10-09 22:19:20.015630

由于2013-10-16和2013-10-09是星期三,我想要一个类似

的结果
150          

如何在Gql中执行此操作?

1 个答案:

答案 0 :(得分:3)

由于数据存储区不支持聚合函数(SUM,AVG等),因此无法直接在GQL中执行此操作。您最好的选择是手动执行此操作 - 发出您想要的日期查询(使用此处的数字投影可能是一个好主意),然后自己平均。但是要小心 - 如果你有大量的数据,这将是缓慢的,并且最终每个请求将花费太长时间。

您也可以分别跟踪这些统计数据。添加实体时,您还必须更新统计信息。有关分片计数器,请参阅this page

如果您正在进行批处理,则另一个选项是在后端或地图缩减中运行此选项。您获得的数据的最新状态取决于您运行工作的频率,但它会扩展。 Here是地图缩减文档的链接。