2010-09-23 11 views
6

Deseo implementar una aplicación que brinde soporte para consultas MDX. Para este propósito, me gustaría usar una de las bibliotecas del pentaho mondrian (un servidor OLTP de código abierto con la interfaz MDX) que transforma las consultas MDX en SQL de la base de datos subyacente (basada en una descripción xml). Desafortunadamente no encuentro ninguna información qué bibliotecas Necesito incluir, y cómo usarlos, en mi proyecto para que funcione la asignación de MDX a SQL.Qué biblioteca de pentaho mondrian incluir en una aplicación Java para mapear MDX a SQL

¿Alguien tiene alguna experiencia en la reutilización de componentes mondrian en su aplicación?

+0

Hola, ¿Pudiste hacer esto? Estoy atrapado con el mismo problema también. – amrk7

Respuesta

1

Recomiendo descargar la última versión 3.2.0 de Mondrian, se distribuye con todas sus dependencias. También se incluye en la distribución un archivo ivy que describe sus dependencias.

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

documentación se puede encontrar en el sitio web de Pentaho también. ¡Buena suerte!

+0

¿Podría escribirme qué bibliotecas debería incluir en mi proyecto para usar el mecanismo de transformación? – Skarab

1

Olap4j es parte de pentaho mondrian ahora. ¿Quizás pueda encontrar información en la API de olap4j? http://www.olap4j.org/

En esta página veo:

org.olap4j.mdx.parser: Analizador para el lenguaje de consulta MDX.

olap4j es una API abierta de Java para OLAP.

Piense en ello como JDBC, pero para accediendo a datos multidimensionales.

olap4j está diseñado para ser una API común para cualquier servidor OLAP, para que pueda escribir una aplicación en un servidor OLAP y cambiar fácilmente a otro. Y creado en esa API, habrá una creciente colección de herramientas y componentes .

+0

-1, me gustaría incluir la funcionalidad de "mapeo" en mi aplicación. Está claramente establecido en mi pregunta. – Skarab

0

Parece que mondrian.rolap.agg.AggregationManager tiene algún código relacionado pero no es sencillo.

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 
); 

Si sigue la última línea,

cell.drillThroughInternal (...)

que va a terminar aquí

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

Pero no estoy tan seguro de si mondrian genera solo un SQL para un mdx. Creo que a través de XMLA (que la mayoría de las herramientas utilizan como interfaz), puede solicitar una exploración en un solo eje, en el que la consulta completa no se reescribe.

Espero que estas respuestas.

0

Estoy usando Mondrian respaldado por hsqldb para que los desarrolladores trabajen contra dbs en memoria, pero luego cambie a implementación OLAP no Mondrian cuando implementamos en un entorno real. Significa que podemos hacer un desarrollo más ágil, básicamente usando Mondrian para convertir MDX a sql.

He creado un estuche de prueba SpringBoot/mvn y utilicé la página this para comenzar - copiando el esquema de asignación de ddr y ddr de ROLAP. Utilicé la plantilla MondrianDaoSupport de uno de los comentarios here. La misma página también tiene alguna ayuda sobre las dependencias de mvn requeridas (nb: tuve que usar jflex 1.4.1 con mondrian 3.2.0 para poder superar un problema de NPE). Usando SpringBoot con hsqldb, creo el esquema ROLAP con datos sobre el inicio de la prueba. A continuación, inserto el archivo de esquema como un recurso de ruta de clases y, a continuación, el origen de datos es el origen de datos hsqldb autocableado. Está funcionando bien hasta el momento, con tan solo ~ segundo para ejecutar la prueba de Junit que inicia una nueva base de datos con datos y ejecuta una consulta MDX. Espero algunos problemas cuando trato de usar consultas MDX más complejas, pero veamos.

Cuestiones relacionadas