我有一个简单的小观察"观察"类:
from google.appengine.ext import ndb
class Observation(ndb.Model):
remote_id = ndb.StringProperty()
dimension_id = ndb.IntegerProperty()
metric = ndb.StringProperty()
timestamp_observed = ndb.StringProperty()
timestamp_received = ndb.DateTimeProperty(auto_now_add=True)
@classmethod
def query_book(cls):
return cls.query()
我可以对数据存储区运行投影查询,只返回某些列。 E.g:
observations = Observation.query().fetch(projection=[Observation.dimension_id])
这很好用,但我只想要独特的结果。 documentation让这听起来很简单:
# Functionally equivalent
Article.query(projection=[Article.author], group_by=[Article.author])
Article.query(projection=[Article.author], distinct=True)
但是当我这样做时:
observations = Observation.query().fetch(projection=[Observation.dimension_id], group_by=[Observation.dimension_id])
observations = Observation.query().fetch(projection=[Observation.dimension_id], distinct=True)
我的两个变种都有错误。
TypeError: Unknown configuration option ('group_by')
TypeError: Unknown configuration option ('distinct')
这也发生在localhost和prod环境中。我错过了什么?
答案 0 :(得分:4)
愚蠢的我 - 所有这些参数都需要在query()函数中,而不是在fetch()中。投影元素实际上在fetch()中工作,但是您需要将投影和不同的参数移动到query()中以使其工作。
来自Grouping:
投影查询可以使用
distinct
关键字来确保这一点 将在结果集中返回完全唯一的结果。这将 仅返回具有相同值的实体的第一个结果 对于正在投影的属性。Article.query(projection=[Article.author], group_by=[Article.author]) Article.query(projection=[Article.author], distinct=True)
两个查询都是等效的,只会生成每个作者的姓名 一次。
希望这可以帮助其他有类似问题的人:)