Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在Google App Engine上使用AppEngine MapReduce,分析特定日期范围的实体的最简单方法是什么?_Google App Engine_Mapreduce - Fatal编程技术网

Google app engine 在Google App Engine上使用AppEngine MapReduce,分析特定日期范围的实体的最简单方法是什么?

Google app engine 在Google App Engine上使用AppEngine MapReduce,分析特定日期范围的实体的最简单方法是什么?,google-app-engine,mapreduce,Google App Engine,Mapreduce,我正在尝试使用AppEngine MapReduce。我了解如何对某些实体类型的所有实体执行操作,但当实体具有日期属性时,仅对数据范围内的实体执行操作的最简单方法是什么?有没有简单的方法将参数传递给映射器 例如,如果我只想删除以下实体: entity.created >= start and entity.created < stop class Entity(db.Model): created = db.DateTimeProperty() from mapreduce

我正在尝试使用AppEngine MapReduce。我了解如何对某些实体类型的所有实体执行操作,但当实体具有日期属性时,仅对数据范围内的实体执行操作的最简单方法是什么?有没有简单的方法将参数传递给映射器

例如,如果我只想删除以下实体:

entity.created >= start and entity.created < stop

class Entity(db.Model):
  created = db.DateTimeProperty()

from mapreduce import operation as op
def process(entity):
  yield op.db.Delete(entity)
entity.created>=开始和entity.created
目前无法在mapreduce中迭代查询-您必须迭代给定类型的每个实体。相反,您应该在映射函数中应用过滤器,并且只删除匹配的实体。

,因为可以使用有限的查询过滤器作为输入


如果这不能让你做你想做的事情,那么你可能想尝试一种方法。

如果我创建了一个名为DateRange的简单模型,其中每个实体都有DateRange.start和DateRange.stop,会怎么样?然后,我可以跨所有DateRange实体执行map reduce,并从entity.start到entity.stop获取我的其他模型。例如:def process(entity):someEntities=SomeModel.all().filter('date>=',entity.start.).filter('date<',entity.stop)这似乎是使用当前实现查看特定日期范围的最简单方法。谢谢你,尼克。当然可以,不过你要复制mapreduce的大部分切分逻辑来生成你的日期范围。但是,如果您只想删除符合特定条件的记录,您可能需要考虑将游标与仅键查询和任务队列结合使用。我同意。删除记录只是一个简单的例子,看看我是否可以在特定的日期范围而不是所有实体上执行操作。这个答案不再准确,因为App Engine 1.9.0 SDK。请参阅:(Java)和(Python)。