Domanda

In realtà sto usando R + Python con RPY2 per manipolare i dati e ggplot per creare bella grafica .. ho alcuni dati in un database PostgreSQL, e sto usando psycopg2 ai dati della query.

sto iniziando una tesi, e in futuro mi bisogno di un cubo OLAP per negozio la mia (molto grande) dati di simulazione:. dimensione multipla, interrogazione di aggregazione, ecc

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

Sono brevemente Evaluated SQLAlchemy , e Django-ORM, ma non sono MDX o / un'interfaccia alla domanda un server OLAP XML (Mondrian o altro) ...

E 'possibile scrivere una query in MDX e, con psycopg + ODBC, interrogare il mio OLAP Server, e il server OLAP dandomi una risposta da parte dei miei dati di simulazione (senza mappatura su un oggetto Python, ma va bene per me)?

Aggiornamento 1:

Perché ho bisogno di cercare in giro tecnologia OLAP + Mondrian?

Università di Laval (GeoSoa dipartimenti + Thierry Badard) ha scritto un spaziale estensione OLAP: SOLAP e implementato questo in Mondrian come GeoMondrian . Che mi interessano perché sto lavorando sulla simulazione basato spaziale a più agenti (~ = geosimulation).

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

Problema: probabilmente lento nel grande manipolazione dei dati, necessità 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 di manipolazione dei dati + grafica con R: spaziale l'analisi, l'analisi di regressione, rango-coda, ecc Qui, SOLAP mi aiutano a preparare i dati per questo più tardi complessa analisi R.

Perché Python?

1 - l'accesso Web ai dati spaziali -

Sto cercando di utilizzare un "cool" quadro Python, come GeoDjango o MapFish : grande comunità in GIS, open-source, utilizzare GeoAlchemy manipolare interroga / dati spaziali, includono visualizzazione con estensioni JavaScript e OpenLayers , ecc.

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

Voglio creare un plugin in QGIS (GIS open source) per accedere e visualizzare i dati, e QGIS plug-in e API = Python.

3 - l'analisi automatica dei dati -

Un utente o uno scienziato esegue una simulazione con grid computing e scegliere l'analisi automatica (R + ggplot2 + MDX query) si desidera eseguire su questi dati. Il mio obiettivo è quello di creare un rapporto di sintesi della simulazione (grafica, i dati tabulari, ecc.).

Quindi, dopo la simulazione, i dati andare a OLAP / SOLAP cubo, e molti script Python (creati dall'utente) ottenere dati con MDX, manipolare i dati con R + RPY2, e scrivere e produrre uscita di raffreddamento per lo scienziato su doku- wiki o di un'altra comunità-piattaforma.

Problema?

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

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

3 - SQLAlchemy e GeoAlchemy hanno alcuna connessione conducente di un database multidimensionale (OLAP)

.

* Soluzione? *

1 - Py4j per l'accesso agli oggetti Java o Java raccolta in olap4j con Python? Scrivere il mio funzione per accedere al Java mappata collezione? => Pericolosa e non molto facile? ...

2 - XLMA con il server Ajax Mondrian? E 'troppo lento.

3 - scrivere il mio py-connettore per OLAP Mondrian? => Ouch. E 'un modo più difficile, credo.

Che cosa devo fare?

È stato utile?

Soluzione

Come sapete, Mondrian è un motore completo OLAP scritto in Java in cima ad un database come MySQL. Quindi, se ho capito la tua domanda, si desidera utilizzare Mondrian e mi chiedo come interfacciarsi con Python.

Io uso Mondrian confezionato in un .jar alle domande processo MDX sulla riga di comando e un rimando JSON. Python chiama direttamente nella riga di comando.

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

E per l'utilizzo del server, Che tipo di imballaggio in un servlet e mando MDX con l'Ajax. Le chiamate Ajax non sono una grande testa e questo è il motivo per cui non vedo la necessità di accoppiare Python e Java piuttosto che la comunicazione con il server di Mondrian.

Altri suggerimenti

Non so python, ma sono autore di Mondrian / olap4j.

Se è possibile utilizzare py4j per l'accesso olap4j, grande. In caso contrario, sicuramente in considerazione XMLA. Esso non può essere così lento come si pensa (a meno che parsing XML di Python è lento). Il problema più grande è la complessità della costruzione di richieste SOAP e comprendere le risposte.

Julian

Per molto grande cubi di dati deposito e prelievo, stoccaggio HDF5 funziona abbastanza bene (h5py o PyTables per un'interfaccia Python). L'applicazione può quindi sia eseguito su un computer con una copia locale del database HDF5 o fare un soluzione server ad-hoc (ancora in Python).

ho progettato / strategie di storage HDF5 SQL ibridi quando necessario, e si sta eseguendo piuttosto bene.

Se davvero bisogno il linguaggio di query MDX:

  • come un ORM ( risposte precedenti su StackOverflow)

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

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

Per completare un po ', ho appena scoperto questo pacchetto python al server di accesso XMLA: www . Si dice che sta lavorando con Mondrian, icCube, MSAS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top