无法执行不同的投影查询('t) [英] Can't execute a distinct projection query

查看:48
本文介绍了无法执行不同的投影查询('t)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的小"观察"类:

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()
我可以对数据存储运行投影查询,以仅返回某些列。例如:

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')

在本地主机和Prod环境中也会发生这种情况。我错过了什么?

推荐答案

愚蠢的我-所有这些参数都需要位于query()函数内,而不是位于FETCH()内。Projection元素实际上在FETCH()中工作,但是您需要将Projection和DISTINCT参数都移动到query()中才能使其工作。

发件人Grouping

投影查询可以使用distinct关键字来确保仅 结果集中将返回完全唯一的结果。这将是 仅返回具有相同值的实体的第一个结果 用于正在投影的属性。

Article.query(projection=[Article.author], group_by=[Article.author])
Article.query(projection=[Article.author], distinct=True)
这两个查询都是等效的,并且只会生成每个作者的姓名 一次。

希望这对其他有类似问题的人有帮助:)

这篇关于无法执行不同的投影查询('t)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆