Pregunta

En realidad, yo estoy usando R + Python con RPY2 para manipular los datos y ggplot para crear unos gráficos .. tengo algunos datos en una base de datos PostgreSQL, y estoy usando psycopg2 de datos de consulta.

estoy empezando una tesis, y en el futuro voy a necesitar un cubo OLAP a la tienda mi (muy grandes): datos de simulación. dimensión múltiple, consulta la agregación, etc.

¿Hay alguna mejor o la norma de buenas prácticas para la interfaz entre Python (y quiero Python + R, sin jpivot o algún otro tablero en Java) y un motor OLAP como Mondrian ? He buscado en Google para cualquier solución, y no he encontrado nada.

He evaluado brevemente SQLAlchemy , y Django-ORM, pero sin MDX o / un interfaz de consulta a un servidor OLAP XML (Mondrian o de otro tipo) ...

¿Es posible escribir una consulta de MDX y, con psycopg + ODBC, consulta mi OLAP servidor, y el servidor OLAP darme una respuesta de mis datos de simulación (sin asignación de objeto de Python, pero está bien para mí)?

Actualización 1:

¿Por qué necesito para buscar alrededor de la tecnología OLAP Mondrian +?

Universidad de Laval (GeoSoa departamentos + Thierry Badard) escribió un espacial extensión a OLAP: SOLAP, e implementado en esta Mondrian como GeoMondrian . Que me interesan porque estoy trabajando en la simulación basada en agentes múltiples espacial (~ = geosimulation).

El departamento GeoSoa creó un componente basado en Ajax para comunicar y visualizar datos espaciales con GeoMondrian:. SOLAPLAYERS, que puede consultar un servidor Mondrian por su servlet Xlma

Problema: probablemente lento en la manipulación de datos grande, necesidad de Internet o Apache 2. En pocas palabras, es sólo para visualizar datos o mapa ... En mi caso, necesito datos en bruto para hacer mi propia manipulación de datos + gráficos con R: espacial análisis, análisis de regresión, el rango-cola, etc. Aquí, ayuda SOLAP me para preparar los datos para este análisis R tarde compleja.

¿Por qué Python?

1 - acceso a la Web a datos espaciales -

Estoy tratando de utilizar un marco de "enfriar" Python, como GeoDjango o MapFish : gran comunidad en SIG, de código abierto, el uso GeoAlchemy para manipular la consulta / datos espaciales, incluyen la visualización con extensiones de JavaScript y OpenLayers , etc.

2 - Acceso local a los datos espaciales en SIG -

Quiero crear un plugin en QGIS (abierta SIG de código) para acceder a datos y visualizar, y QGIS plugin y API = Python.

3 - análisis automático de los datos -

Un usuario o científico ejecuta una simulación con la red informática y elija análisis automático (R + ggplot2 + MDX consulta) que quieren correr en estos datos. Mi objetivo aquí es crear un informe de síntesis de la simulación (gráfico, datos tabulares, etc.).

Así que, después de la simulación, los datos van a cubo OLAP / SOLAP, y muchos scripts de Python (creados por el usuario) obtener datos con MDX, manipular datos con R + RPY2 y escribir y producir salida de frío para el científico en doku- wiki u otra comunidad de la plataforma.

Problema?

1 - Olap4j, el núcleo API de Mondrian para comunicarse con un componente externo, es Java hizo-: /

2 - SOLAPLAYERS utilizans Ajax para acceder a los datos, demasiado lento para mí.

3 - SQLAlchemy y GeoAlchemy no tienen conexión conductor a una base de datos multidimensional (OLAP)

.

* Solución? *

1 - Py4j de acceso a objetos de Java o una colección de Java en olap4j con Python? Escribir mi propia función para acceder al Java asigna colección? => Peligroso y no es muy fácil? ...

2 - XLMA con el servidor Ajax Mondrian? Es demasiado lento.

3 - Escribir mi propia py-conector para OLAP Mondrian? => Ouch. Es un camino difícil, creo.

¿Qué debo hacer?

¿Fue útil?

Solución

Como saben, Mondrian es un motor OLAP completa escrito en Java en la parte superior de una base de datos como MySQL. Así que si entiendo su pregunta, desea utilizar Mondrian y pregunta cómo interactuar con Python.

Yo uso Mondrian empaquetado en un archivo .jar a las consultas MDX proceso en la línea de comandos y enviar de vuelta un JSON. Python lo invoca directamente en la línea de comandos.

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

Y para el uso del servidor, Empaqueto en un servlet y envío MDX con el Ajax. Las llamadas ajax no son un gran sobrecarga y es por eso que no veo la necesidad de acoplar Python y Java en lugar de comunicarse con el servidor Mondrian.

Otros consejos

No sé pitón, pero yo soy autor de Mondrian / olap4j.

Si usted puede utilizar para el acceso py4j olap4j, muy bien. Si no es así, considerar definitivamente XMLA. Puede que no sea tan lento como usted piensa (a no ser que el análisis de XML de pitón es lento). El mayor problema es la complejidad de la construcción de las peticiones SOAP y la comprensión de las respuestas.

Julian

Para muy grande de almacenamiento y recuperación de cubos de datos, almacenamiento HDF5 trabaja bastante bien (h5py o PyTables para una interfaz de Python). Su aplicación puede entonces o bien ejecutar en una máquina con una copia local de la base de datos HDF5 o hacer una solución de servidor ad-hoc (aún en Python).

He estado diseñando estrategias híbridas SQL / HDF5 de almacenamiento cuando sea necesario, y que están realizando bastante bien.

Si realmente necesita el lenguaje de consulta MDX:

  • como un ORM ( respuestas anteriores sobre stackoverflow)

  • cubulus (aunque sólo un subconjunto de MDX se implementa)

  • ejecutar el OLAP de su elección como un servidor independiente y comunicarse con él a través de una interfaz de ad-hoc (XML incluso podría ser a través de HTTP).

Para completar un poco, acabo de descubrir este paquete python servidor de acceso a XMLA: www . Se dice que está trabajando con Mondrian, icCube, MSAS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top