2010-09-25 10 views
8

Attualmente sto usando R + Python con RPY2 per manipolare dati e ggplot per creare una grafica bellissima .. Ho alcuni dati in un database PostgreSQL e sto usando psycopg2 per interrogare i dati.Query OLAP Mondrian (MDX, XMLA) con un'interfaccia Python?

sto iniziando una tesi, e in futuro mi bisogno di un OLAP cube per memorizzare la mia (molto grande) dei dati di simulazione: dimensioni multiple, interrogare aggregazione, ecc

C'è qualche buona pratica o standard per l'interfacciamento tra Python (e voglio Python + R, nessun jpivot o qualche altra dashboard in Java) e un motore OLAP come Mondrian? Ho cercato su Google qualsiasi soluzione e non ho trovato nulla.

ho brevemente valutato SQLAlchemy, e Django-ORM, ma non hanno MDX o XML/Un'interfaccia per interrogare un server OLAP (Mondrian o altro) ...

E 'possibile scrivere una query in MDX e, con psycopg + ODBC, interrogare il mio server OLAP e il server OLAP fornendomi una risposta dai miei dati di simulazione (nessuna mappatura su oggetti Python, ma per me è OK)?

Update 1:

Perché devo cercare in giro tecnologia OLAP + Mondrian?

Perché University of Laval (GeoSoa dipartimenti + Thierry Badard) ha scritto un'estensione spaziale per OLAP: SOLAP, e attuate in questo Mondrian come GeoMondrian. Questo mi interessa perché sto lavorando su una simulazione spaziale basata su agenti multipli (~ = geosimulazione).

Il dipartimento di GeoSoa ha creato un componente basato su Ajax per comunicare e visualizzare i dati spaziali con GeoMondrian: SOLAPLAYERS, che può interrogare un server Mondrian tramite il suo servlet Xlma.

Problema: probabilmente lento nel grande manipolazione dei dati, hanno bisogno di internet o Apache 2. In breve, è solo di visualizzare i dati o mappa ... Nel mio caso, ho bisogno di dati grezzi di fare il mio manipolazione dei dati + grafica con R: analisi spaziale, analisi di regressione, rank-tail, ecc. Qui, SOLAP mi aiuta a preparare i dati per questa analisi R più complessa.

Perché Python?

1 - l'accesso Web ai dati spaziali -

Sto cercando di utilizzare un framework Python "cool", come GeoDjango o MapFish: grande comunità in GIS, open-source, utilizzare GeoAlchemy per manipolare spaziale Query/dati, includere la visualizzazione con le estensioni JavaScript e OpenLayers, ecc

2 - L'accesso locale ai dati spaziali in GIS -

voglio creare un plugin in QGIS (GIS open source) per accedere e visualizzare d ata, e plugin QGIS e API = Python.

3 - l'analisi automatica dei dati -

un utente o uno scienziato corre una simulazione con il grid computing e scegliere l'analisi automatica (R + ggplot2 + MDX query) si desidera eseguire su questi dati.Il mio obiettivo qui è creare un report sintetico della simulazione (grafico, dati tabellari, ecc.).

Quindi, dopo la simulazione, i dati passano al cubo OLAP/SOLAP e molti script Python (creati dall'utente) acquisiscono dati con MDX, manipolano i dati con R + RPY2 e scrivono e producono un output interessante per lo scienziato su doku -wiki o un'altra piattaforma di comunità.

Problema?

1 - Olap4j, il nucleo API di Mondrian per comunicare con un componente esterno, è Java-fatta:/

2 - SOLAPLAYERS utilizza Ajax per accedere ai dati, troppo lento per me.

3 - SQLAlchemy e GeoAlchemy non dispongono di connessione a un database multidimensionale (OLAP).

* Soluzione? *

1 - Py4j accede all'oggetto Java o alla raccolta Java in olap4j con Python? Scrivi la mia funzione per accedere alla collezione mappata Java? => pericoloso e non molto facile? ...

2 - XLMA con server Ajax Mondrian? È troppo lento

3 - Scrivi il mio py-connector a OLAP Mondrian? => Ahi. È un modo difficile, penso.

Cosa devo fare?

+0

Sto cercando una soluzione, sembra che posso provare a associare olap4j (java) e software di chiamata pythonToJava come JPype o Py4j ... Un'altra persona ha un'altra risposta o commento qui? – reyman64

+0

Basta farti sapere, c'è una [pura tabella pivot javascript] (http://webpivottable.com) in grado di ruotare i cubi OLAP XMLA con interfaccia utente intuitiva e grandi prestazioni. [demo] (http://webpivottable.com/demo) e [documenti] (http://webpivottable.com/documents) –

risposta

4

Come sapete, Mondrian è un motore completo OLAP scritto in Java in cima ad un database come MySQL. Quindi se capisco la tua domanda, vuoi usare Mondrian e ti chiedi come interfacciarlo con Python.

Io uso Mondrian impacchettato in un file .jar per elaborare query MDX sulla riga di comando e inviare un JSON. Python lo chiama direttamente nella riga di comando.

E per l'utilizzo del server, lo impacco in un servlet e invio MDX con ajax. Le chiamate ajax non sono un grande sovraccarico ed è per questo che non vedo la necessità di abbinare Python e Java piuttosto che comunicare con il server Mondrian.

+0

grazie per questa risposta :) – reyman64

2

Per la memorizzazione e il recupero di cubi di dati molto grandi, lo storage HDF5 funziona piuttosto bene (h5py o PyTables per un'interfaccia Python). L'applicazione può quindi essere eseguita su una macchina con una copia locale del database HDF5 o creare una soluzione server ad hoc (sempre in Python).

Ho progettato strategie di archiviazione ibrida SQL/HDF5 quando necessario e stanno ottenendo risultati soddisfacenti.

Se davvero bisogno il linguaggio di query MDX:

  • as an ORM (risposte precedenti su StackOverflow)

  • cubulus (anche se solo un sottoinsieme di MDX è implementato)

  • eseguire l'OLAP a tua scelta come server separato e comunicare con esso attraverso un'interfaccia ad hoc (potrebbe anche essere XML tramite http).

+0

Forse HDF5 è una soluzione migliore per l'archiviazione, ma ho bisogno assolutamente di un database come PG + OLAP, con una semplice query langage come MDX o SQL per manipolare/aggregare/visualizzare facilmente le dimensioni. È per gli utenti degli scienziati principianti ... – reyman64

6

non so python, ma io sono autore di Mondrian/olap4j.

Se è possibile utilizzare py4j per accedere a olap4j, ottimo. In caso contrario, considerare sicuramente XMLA. Potrebbe non essere lento come si pensa (a meno che l'analisi XML di Python non sia lenta). Il problema più grande è la complessità della costruzione di richieste SOAP e la comprensione delle risposte.

Julian

1

Per completare un po ', ho appena scoperto questo pacchetto Python per accedere al server XMLA: www. Dice che sta funzionando con Mondrian, icCube, MSAS.