J'essaie d'utiliser AppEngine-MapReduce. Je comprends comment effectuer une opération sur toutes les entités d'un entity_kind, mais quel est le moyen le plus simple de ne fonctionner que sur des entités sur une plage de données lorsque l'entité a un attribut date? Existe-t-il un moyen simple de transmettre des paramètres au mappeur?En utilisant AppEngine-MapReduce sur Google App Engine, quel est le moyen le plus simple d'analyser des entités pour une période donnée?
Par exemple, si je ne voulais supprimer les entités sur lesquelles:
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)
Et si je créais un modèle simple appelé DateRange où chaque entité avait DateRange.start et DateRange.stop? Puis-je effectuer une réduction de la carte sur toutes les entités DateRange et récupérer mes autres modèles de entity.start à entity.stop. Par exemple: processus def (entité): someEntities = SomeModel.all(). Filter ('date> =', entity.start) .filter ('date <', entity.stop) Il semble que ce soit le moyen le plus simple regarder des plages de dates spécifiques en utilisant l'implémentation actuelle. Merci d'avance Nick. – Chris
Bien sûr, mais vous répliquez ensuite la majeure partie de la logique de fragmentation de mapreduce pour générer vos plages de dates. Si vous souhaitez simplement supprimer des enregistrements correspondant à certains critères, vous pouvez envisager d'utiliser des curseurs en conjonction avec les requêtes key_only et la file d'attente de tâches. –
Je suis d'accord. La suppression d'enregistrements n'était qu'un simple exemple pour voir si je pouvais effectuer des opérations sur des plages de dates spécifiques plutôt que sur toutes les entités. – Chris