gpt4 book ai didi

python - 任何 Python OLAP/MDX ORM 引擎?

转载 作者:太空狗 更新时间:2023-10-29 21:41:20 29 4
gpt4 key购买 nike

我是 MDX/OLAP 的新手,我想知道是否有类似 Django ORM for Python 的支持 OLAP 的 ORM。

我是一名 Python/Django 开发人员,如果有什么东西可以与 Django 进行某种程度的集成,我将非常有兴趣了解更多相关信息。

最佳答案

Django 有一些即将发布的 OLAP 功能。

阅读http://www.eflorenzano.com/blog/post/secrets-django-orm/

http://doughellmann.com/2007/12/30/using-raw-sql-in-django.html , 还有

如果您首先进行了适当的星型模式设计,那么一维结果可以具有以下形式。

from myapp.models import SomeFact
from collections import defaultdict

facts = SomeFact.objects.filter( dimension1__attribute=this, dimension2__attribute=that )
myAggregates = defaultdict( int )
for row in facts:
myAggregates[row.dimension3__attribute] += row.someMeasure

如果你想创建一个二维摘要,你必须做类似下面的事情。

facts = SomeFact.objects.filter( dimension1__attribute=this, dimension2__attribute=that )
myAggregates = defaultdict( int )
for row in facts:
key = ( row.dimension3__attribute, row.dimension4__attribute )
myAggregates[key] += row.someMeasure

要计算多个 SUM 和 COUNT 等等,您必须这样做。

class MyAgg( object ):
def __init__( self ):
self.count = 0
self.thisSum= 0
self.thatSum= 0

myAggregates= defaultdict( MyAgg )
for row in facts:
myAggregates[row.dimension3__attr].count += 1
myAggregates[row.dimension3__attr].thisSum += row.this
myAggregates[row.dimension3__attr].thatSum += row.that

乍一看,这似乎效率低下。您正在浏览事实表并返回大量行,然后将这些行汇总到您的应用程序中。

在某些情况下,这可能比 RDBMS 的本地 sum/group_by 更快。为什么?您使用的是一个简单的映射,而不是 RDBMS 通常必须为此使用的更复杂的基于排序的分组操作。是的,你得到了很多行;但您在获得它们方面做得更少。

它的缺点是它不像我们想要的那样具有声明性。它的优点是它是纯 Django ORM。

关于python - 任何 Python OLAP/MDX ORM 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469200/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com