在 Google App Engine 的 Python 版本中,如何查找具有特定属性索引的模型的四分位数值?

发布于 2024-12-04 10:12:40 字数 253 浏览 3 评论 0原文

在 Google App Engine 中,我有一个包含 10K 实体的模型,并在属性 foo 上有索引。查找第一个四分位数、第二个四分位数(中位数)和第三个四分位数实体的最有效方法是什么?我可以获取排序后的键列表并以编程方式找到三个四分位数键,但下载所有键将无法扩展。更优雅的方法是什么?

sortedValues = MyModel.all(keys_only=True).order('foo').fetch(limit=10000)

In Google App Engine I have a model with 10K entities with an index on the property foo. What is the most efficient way to find the 1st quartile, 2nd quartile (the median), and the 3rd quartile entities? I can fetch the sorted list of keys and find the three quartile keys programmatically, but downloading all the keys won't scale. What is the more elegant approach?

sortedValues = MyModel.all(keys_only=True).order('foo').fetch(limit=10000)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟─花易冷 2024-12-11 10:12:40

您是否尝试过 .fetch(2500,limit=1).fetch(5000,limit=1).fetch(7500,limit=1) ?第一个参数对应于偏移量。

但是,文档内容如下,因此这种方法无法为您提供 O(1) 性能。

Note: The query has performance characteristics that correspond linearly with the offset amount plus the limit amount.

来自此处

Have you tried .fetch(2500,limit=1), .fetch(5000,limit=1), and .fetch(7500,limit=1)? The first argument corresponds to the offset.

The documentation reads the following, however, so this approach won't afford you O(1) performance.

Note: The query has performance characteristics that correspond linearly with the offset amount plus the limit amount.

From here.

来日方长 2024-12-11 10:12:40

由于四分位数是根据实体排序定义的,不幸的是,除了迭代它们之外,没有其他方法可以确定它们。正如 Chekeyen 指出的那样,您可以通过不使用偏移参数获取中间结果来加快速度。

Since quartiles are defined in terms of entity ordering, there's unfortunately no way to determine them other than iterating over them. As cheeken points out, you can speed things up a little by not fetching the intermediate results by using an offset argument.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文