2010-09-23 11 views
6

Desidero implementare un'applicazione che fornisce supporto per le query MDX. A questo scopo vorrei utilizzare una delle librerie da pentaho mondrian (un server OLTP open source con l'interfaccia MDX) che trasforma le query MDX in SQL del database di sottolineatura (basato su una descrizione xml), sfortunatamente non riesco a trovare alcuna informazione su quali librerie Devo includere - e come usarli - nel mio progetto per far funzionare MDX to SQL mapping.Quale libreria pentaho mondrian includere in un'applicazione Java per mappare MDX su SQL

Qualcuno ha esperienza nel riutilizzare componenti mondrian nella sua applicazione?

+0

Ciao, sei riuscito a farlo? Sono bloccato con lo stesso problema pure. – amrk7

risposta

1

Consiglio di scaricare l'ultima versione 3.2.0 di Mondrian, è distribuita con tutte le sue dipendenze. Nella distribuzione è incluso anche un file di edera che descrive le sue dipendenze.

Ultima versione: http://forums.pentaho.com/showthread.php?77035-Mondrian-3.2-GA-Schema-Workbench-and-Agg-Designer-stable-available-on-SourceForge&p=239443#poststop

documentazione sono disponibili sul sito web di Pentaho pure. In bocca al lupo!

+0

Potresti scrivermi quali librerie dovrei includere nel mio progetto per utilizzare il meccanismo di trasformazione? – Skarab

1

Olap4j è ora parte di pentaho mondrian. Forse puoi trovare informazioni su API di olap4j? http://www.olap4j.org/

In questa pagina vedo:

org.olap4j.mdx.parser: Parser per il linguaggio di query MDX.

olap4j è un'API Java aperta per OLAP.

Pensate come JDBC, ma per accedere a dati multidimensionali.

olap4j è stato progettato per essere un'API comune per qualsiasi server OLAP, in modo da poter scrivere un'applicazione su un server OLAP e facilmente passare a un altro. E costruito su tale API, ci sarà una crescente collezione di strumenti e componenti.

+0

-1, vorrei includere funzionalità di "mapping" nella mia applicazione. È chiaramente indicato nella mia domanda. – Skarab

0

Sembra che mondrian.rolap.agg.AggregationManager abbia del codice correlato ad esso ma non è diretto.

parseTree = this.olap4jConnection.getMondrianConnection().parseStatement(mdx); 
DrillThrough plan1 = (DrillThrough)parseTree; 
Query query = plan1.getQuery(); 
query.setResultStyle(ResultStyle.LIST); 
this.setQuery(query); 
CellSet cellSet = this.executeOlapQueryInternal(
    query, 
    (MondrianOlap4jCellSetMetaData) null 
); 
List coords = Collections.nCopies(cellSet.getAxes().size(), Integer.valueOf(0)); 
MondrianOlap4jCell cell = (MondrianOlap4jCell) cellSet.getCell(coords); 
ResultSet resultSet = cell.drillThroughInternal(
    plan1.getMaxRowCount(), 
    plan1.getFirstRowOrdinal(), 
    plan1.getReturnList(), 
    true, 
    (Logger)null, 
    rowCountSlot 
); 

Se si segue l'ultima riga,

cell.drillThroughInternal (...)

si finirà qui

String sql = questo. getDrillThroughSQL (fields, extendedContext);

Ma non sono così sicuro se mondrian genera solo un SQL per un mdx. Penso che attraverso XMLA (che la maggior parte degli strumenti usa come interfaccia), è possibile richiedere un drill through su un singolo asse, in cui la query completa non viene riscritta.

Spero che questa risposta.

0

Sto usando Mondrian supportato da hsqldb in modo che gli sviluppatori lavorino contro i dbs in-memory, ma poi passano all'implementazione OLAP non Mondrian quando vengono distribuiti nell'ambiente reale. Significa che possiamo fare uno sviluppo più agile, essenzialmente usando solo Mondrian per convertire MDX in sql.

Ho creato un caso di test SpringBoot/mvn e ho utilizzato la pagina this per iniziare - la copia dello schema di mapping di ROLAP ddl e di Mondrian. Ho usato il modello MondrianDaoSupport da uno dei commenti here. La stessa pagina ha anche qualche aiuto sulle dipendenze di mvn richieste (nb: ho dovuto usare jflex 1.4.1 con mondrian 3.2.0 per superare un problema di NPE). Utilizzando SpringBoot con hsqldb, creo lo schema ROLAP con i dati all'avvio del test. Quindi iniettare il file dello schema come risorsa del percorso di classe e Datasource è quindi l'origine dati hsqldb autowired. Funziona bene finora, impiegando solo un secondo per eseguire il test Junit che avvia un nuovo db con dati ed esegue una query MDX. Mi aspetto alcuni problemi quando cerco di utilizzare query MDX più complesse, ma vediamo.