[英]Query OLAP Mondrian (MDX, XMLA) with a Python interface?
实际上我正在使用R + Python和RPY2来操作数据和ggplot来创建漂亮的图形..我在PostgreSQL数据库中有一些数据,而我正在使用psycopg2来查询数据。
我正在开始论文,将来我需要一个OLAP多维数据集来存储我的(非常大的)模拟数据:多维,聚合查询等。
是否有任何最佳或标准的实践来连接Python(我想要Python + R,没有jpivot或Java中的其他仪表板)和像Mondrian这样的OLAP引擎? 我在Google上搜索了任何解决方案,但我找不到任何东西。
我简要评估了SQLAlchemy和Django-ORM,但他们没有MDX或XML / A接口来查询OLAP服务器(Mondrian或其他)......
是否可以在MDX中编写查询,并使用psycopg + ODBC查询我的OLAP服务器,OLAP服务器从我的模拟数据中给出答案(没有Python对象的映射,但对我来说没问题)?
更新1:
为什么我需要搜索OLAP + Mondrian技术?
因为拉瓦尔大学 (GeoSoa部门+ Thierry Badard)为OLAP写了一个空间扩展:SOLAP,并在Mondrian中将其作为GeoMondrian实现 。 我感兴趣的是因为我正在研究基于空间多代理的模拟(〜=地理模拟)。
GeoSoa部门创建了一个基于Ajax的组件,用于与GeoMondrian:SOLAPLAYERS进行通信和可视化空间数据,SOLAPLAYERS可以通过其Xlma servlet查询Mondrian服务器。
问题:大数据操作可能比较慢,需要Internet或Apache 2.简单来说,它只是可视化数据或映射...在我的情况下,我需要原始数据来制作我自己的数据操作+图形与R:空间分析,回归分析,排序等等。在这里,SOLAP帮助我为后来的复杂R分析准备数据。
为何选择Python?
1 - 对空间数据的Web访问 -
我正在尝试使用“酷”的Python框架,如GeoDjango或MapFish :GIS中的大型社区,开源,使用GeoAlchemy来操纵空间查询/数据,包括使用JavaScript扩展和OpenLayers等进行可视化。
2 - GIS中对空间数据的本地访问 -
我想在QGIS(开源GIS)中创建一个插件来访问和可视化数据,以及QGIS插件和API = Python。
3 - 自动分析数据 -
用户或科学家使用网格计算运行模拟,并选择他们想要对此数据运行的自动分析(R + ggplot2 + MDX查询)。 我的目标是创建模拟的综合报告(图形,表格数据等)。
因此,在模拟之后,数据转到OLAP / SOLAP多维数据集,许多Python脚本(由用户创建)通过MDX获取数据,使用R + RPY2处理数据,并为doku-wiki或其他人的科学家编写并生成很酷的输出。社区平台。
问题?
1 - Olap4j是Mondrian与外部组件通信的API核心,是Java制造的:/
2 - SOLAPLAYERS使用Ajax访问数据,对我来说太慢了。
3 - SQLAlchemy和GeoAlchemy没有与多维数据库(OLAP)的驱动程序连接。
*解决方案? *
1 - Py4j用Python访问olap4j中的Java对象或Java集合? 编写我自己的函数来访问Java映射集合? =>危险而且不是很容易?...
2 - XLMA与Ajax Mondrian服务器? 太慢了。
3 - 将自己的py连接器写入OLAP Mondrian? =>哎哟。 我认为这是一个艰难的方式。
我该怎么办?
我不懂python,但我是mondrian / olap4j的作者。
如果你可以使用py4j访问olap4j,那很好。 如果没有,一定要考虑XMLA。 它可能没有你想象的那么慢(除非python的XML解析很慢)。 最大的问题是构造SOAP请求和理解响应的复杂性。
朱利安
如您所知,Mondrian是一个完整的OLAP引擎,用java编写,在MySQL之类的数据库上。 所以如果我理解你的问题,你想使用Mondrian并想知道如何将它与Python接口。
我使用包装在.jar中的Mondrian在命令行上处理MDX查询并发送回JSON。 Python直接在命令行中调用它。
import commands
result = commands.getoutput('java -jar Mondrian_cli.jar -q
select NON EMPTY Crossjoin({[Measures].[Store Sales]},
Crossjoin([Time].[1997].Children, [Store].[All Stores].Children)) ON COLUMNS,
[Product].[All Products].Children ON ROWS from [Sales]')
对于服务器使用,我将其打包在servlet中,然后使用ajax发送MDX。 ajax调用不是一个很大的开销,这就是为什么我不认为需要耦合Python和Java而不仅仅是与Mondrian服务器通信。
为了完成一点,我刚刚发现了这个python包来访问XMLA服务器: www 。 它说它与Mondrian,icCube,MSAS合作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.