我的数据存储区中有一些重复的元素(不是整行,而是其中的大部分字段)。
找到他们的最佳方式是什么?
我有重复的整数和字符串字段(以防比较一个比另一个更快)。
Thanks!
一种愚蠢但快速的方法是获取您关心的字段,将它们连接为长字符串并将它们存储为DB_Unique
引用原始实体的实体。每次你这样做DB_Unique.get_or_insert()
您应该验证引用是否指向正确的原始实体,否则,您将获得重复的实体。这可能应该在地图缩小 http://code.google.com/p/appengine-mapreduce/.
就像是:
class DB_Unique(db.Model):
r = db.ReferenceProperty()
class DB_Obj(db.Model):
a = db.IntegerProperty()
b = db.StringProperty()
c = db.StringProperty()
# executed for each DB_Obj...
def mapreduce(entity):
key = '%s_%s_%s' % (entity.a,entity.b,entity.c)
res = DB_Unique.get_or_insert(key, r=entity)
if DB_Unique.r.get_value_for_datastore(res) != entity.key():
# we have a possible collision, verify and delete?
# out two entities are res and entity
有一些边缘情况可能会出现,例如,如果您有两个实体,b 和 c 分别等于 ('a_b', '') 和 ('a','b_'),那么串联是 ' a_b_' 两者都适用。因此,请使用您知道字符串中不存在的字符来代替“_”,或者使用DB_Unique.r
成为参考文献列表并比较所有参考文献。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)