Abfrage OLAP Mondrian (MDX, XMLA) mit einer Python-Schnittstelle?

8

Tatsächlich verwende ich R + Python mit RPY2, um Daten zu manipulieren, und ggplot, um schöne Grafiken zu erstellen .. Ich habe einige Daten in einer PostgreSQL-Datenbank, und ich verwende psycopg2, um Daten abzufragen.

Ich beginne eine Abschlussarbeit, und in Zukunft brauche ich einen OLAP-Würfel , um meine (sehr große) zu speichern. Simulationsdaten: Mehrfachdimension, Aggregationsabfrage, etc.

Gibt es die beste oder gebräuchlichste Methode für die Schnittstelle zwischen Python (und ich möchte Python + R, kein jpivot oder ein anderes Dashboard in Java) und eine OLAP-Engine wie Mondrian ? Ich suchte bei Google nach einer Lösung und fand nichts.

Ich habe SQLAlchemy und Django-ORM kurz bewertet, aber sie haben kein MDX oder XML / A-Schnittstelle zum Abfragen eines OLAP-Servers (Mondrian oder andere) ...

Ist es möglich, eine Abfrage in MDX zu schreiben und mit psycopg + ODBC meinen OLAP-Server abzufragen, und der OLAP-Server gibt mir eine Antwort aus meinen Simulationsdaten (keine Zuordnung auf Python-Objekt, aber für mich ist das in Ordnung)?

Update 1:

Warum muss ich nach OLAP + Mondrian-Technologie suchen?

Weil Universität von Laval (GeoSoa Departements + Thierry Badard) eine räumliche Erweiterung zu OLAP: SOLAP geschrieben hat , und implementiert dies in Mondrian als GeoMondrian GeoMondrian . Das interessiert mich, weil ich an der räumlichen multiagentenbasierten Simulation (~ = Geosimulation) arbeite.

Die GeoSoa-Abteilung hat eine Ajax-basierte Komponente zur Kommunikation und Visualisierung räumlicher Daten mit GeoMondrian: SOLAPLAYERS erstellt, die einen Mondrian-Server mit seinem Xlma-Servlet abfragen können.

Problem: wahrscheinlich langsam in Big Data Manipulation, brauche Internet oder Apache 2. Kurz gesagt, es ist nur zur Visualisierung von Daten oder Karten ... In meinem Fall brauche ich Rohdaten, um meine eigenen Daten Manipulation + Grafiken mit R: Raum Analyse, Regressionsanalyse, Rank-Tail, usw. Hier hilft mir SOLAP, Daten für diese spätere komplexe R-Analyse vorzubereiten.

Warum Python?

1 - Webzugriff auf räumliche Daten -

Ich versuche ein "cooles" Python-Framework zu verwenden, wie GeoDjango oder MapFish : große Community in GIS, Open Source, nutze GeoAlchemy Manipulieren von räumlichen Abfragen / Daten, einschließlich Visualisierung mit JavaScript-Erweiterungen und OpenLayers , usw.

2 - Lokaler Zugriff auf Geodaten im GIS -

Ich möchte ein Plugin in QGIS (Open Source GIS) erstellen, um auf Daten zuzugreifen und diese zu visualisieren, und QGIS plugin und API = Python.

3 - Automatische Analyse der Daten -

Ein Benutzer oder Wissenschaftler führt eine Simulation mit Grid Computing durch und wählt eine automatische Analyse (R + ggplot2 + MDX-Abfrage), die mit diesen Daten ausgeführt werden soll. Mein Ziel ist es, einen synthetischen Bericht der Simulation (Grafik, Tabellendaten, etc.) Zu erstellen.

Nach der Simulation gehen die Daten also in den OLAP / SOLAP-Cube und viele Python-Skripte (vom Benutzer erstellt) erhalten Daten mit MDX, manipulieren Daten mit R + RPY2 und schreiben und produzieren coole Ausgaben für den Wissenschaftler auf doku- Wiki oder eine andere Community-Plattform.

Problem?

1 - Olap4j, der API-Kern von Mondrian zur Kommunikation mit einer externen Komponente, ist Java-made: /

2 - SOLAPLAYERS benutzt Ajax um auf Daten zuzugreifen, zu langsam für mich.

3 - SQLAlchemy und GeoAlchemy haben keine Treiberverbindung zu einer mehrdimensionalen Datenbank (OLAP).

* Lösung? *

1 - Py4j für den Zugriff auf Java-Objekt oder Java-Sammlung in Olap4j mit Python? Schreibe meine eigene Funktion um auf die Java Mapped Collection zuzugreifen? = & gt; gefährlich und nicht sehr einfach? ...

2 - XLMA mit Ajax Mondrian Server? Es ist zu langsam.

3 - Schreibe meinen eigenen py-Connector nach OLAP Mondrian? = & gt; Autsch. Es ist ein schwerer Weg, denke ich.

Was soll ich tun?

    
reyman64 25.09.2010, 09:25
quelle

4 Antworten

4

Wie Sie wissen, ist Mondrian eine komplette OLAP-Engine, die in Java auf einer Datenbank wie MySQL geschrieben ist. Wenn ich also Ihre Frage verstehe, wollen Sie Mondrian verwenden und sich fragen, wie Sie es mit Python verbinden können.

Ich verwende Mondrian in einer .jar-Datei, um MDX-Abfragen in der Befehlszeile zu verarbeiten und einen JSON zurückzusenden. Python ruft es direkt in der Befehlszeile auf.

%Vor%

Und für die Server-Verwendung packe ich es in ein Servlet und sende MDX mit ajax. Die Ajax-Aufrufe sind kein großer Overhead und deshalb sehe ich keine Notwendigkeit, Python und Java zu koppeln, anstatt nur mit dem Mondrian-Server zu kommunizieren.

    
Biovisualize 09.12.2010, 21:22
quelle
6

Ich weiß Python nicht, aber ich bin Autor von mondrian / olap4j.

Wenn Sie mit py4j auf olap4j zugreifen können, großartig. Wenn nicht, bedenke definitiv XMLA. Es ist möglicherweise nicht so langsam wie Sie denken (es sei denn Pythons XML-Analyse ist langsam). Das größte Problem ist die Komplexität der Erstellung von SOAP-Anfragen und das Verständnis der Antworten.

Julian

    
Julian Hyde 30.09.2010 20:01
quelle
2

Für sehr große Daten-Cubes Speicher und Retrieval funktioniert der HDF5-Speicher sehr gut (h5py oder PyTables für eine Python-Schnittstelle). Ihre Anwendung kann dann entweder auf einer Maschine mit einer lokalen Kopie der HDF5-Datenbank ausgeführt werden oder eine Ad-hoc-Serverlösung (immer noch in Python) erstellen.

Ich habe bei Bedarf hybride SQL / HDF5-Speicher-Strategien entworfen, und sie funktionieren ziemlich gut.

Wenn die MDX-Abfragesprache wirklich benötigt wird:

  • als ORM (frühere Antworten zu stackoverflow)

  • cubulus (obwohl nur eine Teilmenge von MDX implementiert ist)

  • führen Sie den OLAP Ihrer Wahl als separaten Server aus und kommunizieren Sie mit ihm über eine Ad-hoc-Schnittstelle (möglicherweise sogar XML über http).

lgautier 27.09.2010 08:02
quelle
1

Um ein wenig abzuschließen, habe ich gerade dieses Python-Paket entdeckt, um auf den XMLA-Server zuzugreifen: www . Es sagt, es funktioniert mit Mondrian, icCube, MSAS.

    
Marc Polizzi 23.11.2012 08:57
quelle

Tags und Links