Abfrage OLAP Mondrian (MDX, XMLA) mit einer Python-Schnittstelle?
Frage
Eigentlich verwende ich R + Python mit RPY2 Daten zu manipulieren und ggplot schöner Grafiken zu erstellen .. ich habe einige Daten in einer PostgreSQL-Datenbank, und ich bin mit psycopg2 zu Abfrage von Daten.
Ich beginne eine These, und in der Zukunft brauche ich eine OLAP-Cube zu speichern mein (sehr groß) Simulationsdaten:. mehrdimensionale, Aggregationsanfrag, etc.
Gibt es eine beste oder gängige Praxis für die Anbindung zwischen Python (und ich mag Python + R, kein JPivot oder ein anderes Armaturenbrett in Java) und eine OLAP-Engine wie Mondrian ? Ich suchte auf Google für jede Lösung, und ich habe nichts gefunden.
habe ich kurz Evaluierte SQLAlchemy und Django-ORM, aber sie haben keine MDX oder XML / A-Schnittstelle zur Abfrage eines OLAP-Server (Mondrian oder andere) ...
Ist es möglich, eine Abfrage in MDX und mit psycopg + ODBC, Abfrage mein OLAP-Server und der OLAP-Server geben Sie mir eine Antwort von meiner Simulationsdaten zu schreiben (keine Zuordnung auf Python-Objekt, aber es ist in Ordnung für mich)?
Update 1:
Warum benötige ich um OLAP + Mondrian Technologie suchen?
Da Universität Laval (GeoSoa Départements + Thierry Badard) schrieb einen räumlichen Erweiterung auf OLAP: SOLAP und implementiert diese in Mondrian als GeoMondrian . Das interessiert mich, weil ich auf räumliche Multi-Agenten-basierte Simulation (~ = geosimulation) arbeite.
Die GeoSoa Departement erstellt eine Ajax basierte Komponente zu kommunizieren und räumliche Daten mit GeoMondrian zu visualisieren. SOLAPLAYERS, die einen Mondrian Server dessen Xlma Servlet abfragen
Problem: wahrscheinlich langsam in großen Datenmanipulation, müssen Internet oder Apache 2. Kurz gesagt, es ist nur Daten zu visualisieren oder eine Karte ... In meinem Fall muss ich Rohdaten meine eigene Datenmanipulation + Grafiken mit R machen: räumlichen Analyse, Regressionsanalyse, Rang-tail usw. Hier SOLAP Hilfe mich für diese späteren komplexe R Analysedaten vorzubereiten.
Warum Python?
1 - Web-Zugriff auf Geodaten -
Ich versuche, einen "cool" Python-Framework zu verwenden, wie GeoDjango oder MapFish : große Gemeinschaft in GIS, Open-Source-Anwendung GeoAlchemy räumliche Abfrage / Daten zu manipulieren, ist Visualisierung mit JavaScript-Erweiterungen und
Lösung Wie Sie wissen, ist Mondrian eine komplette OLAP-Engine in Java auf eine Datenbank wie MySQL geschrieben. Also, wenn ich verstehe Ihre Frage, wollen Sie Mondrian und Wunder verwenden, wie es mit Python-Schnittstelle. Ich verwende Mondrian in einem .jar zu verarbeiten MDX-Abfragen auf der Kommandozeile verpackt und ein JSON zurückzuschicken. Python ruft sie direkt in der Kommandozeile. Und für die Server-Einsatz, ich habe es in einem Servlet-Paket und ich MDX senden mit Ajax. Die Ajax-Aufrufe sind kein großer Aufwand und deshalb habe ich die Notwendigkeit der Kopplung Python und Java nicht sehen und nicht nur mit dem Mondrian-Server kommuniziert. 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]')
Andere Tipps
Ich weiß nicht, Python, aber ich bin der Autor Mondrian / olap4j.
Wenn Sie py4j den Zugriff olap4j, große nutzen können. Wenn nicht, sollten Sie auf jeden Fall XMLA. Es kann nicht so langsam sein, wie Sie denken (es sei denn, Python XML-Parsing langsam ist). Das größte Problem ist die Komplexität von SOAP-Anforderungen der Konstruktion und die Antworten zu verstehen.
Julian
Für sehr großen Datenwürfel Speicherung und den Abruf wird HDF5 Speicher arbeitet recht gut (h5py oder PyTables für eine Python-Schnittstelle). Ihre Anwendung kann dann entweder läuft auf einer Maschine mit einer lokalen Kopie der HDF5 Datenbank oder macht eine Ad-hoc-Server-Lösung (noch in Python).
Ich habe Hybrid-SQL / HDF5 entwirft Strategien Lagerung bei Bedarf, und sie durchführen recht gut.
Wenn wirklich die MDX-Abfrage-Sprache benötigen:
ein bisschen zu vervollständigen, habe ich gerade entdeckt, diese Python-Paket für den Zugriff XMLA-Server: www . Er sagt, es funktioniert mit Mondrian, icCube, MSAS.