代码之家  ›  专栏  ›  技术社区  ›  Skarab

哪个pentahomondrian库要包含在Java应用程序中,以实现MDX到SQL的映射

  •  6
  • Skarab  · 技术社区  · 14 年前

    我想实现一个为MDX查询提供支持的应用程序。为此,我想使用 pentaho mondrian (一个具有MDX接口的开源OLTP服务器)将MDX查询转换为底层数据库的SQL(基于xml描述),不幸的是,在我的项目中,我找不到需要包括哪些库以及如何使用它们的任何信息,以使MDX到SQL的映射正常工作。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Will Gorman    14 年前

    我建议下载Mondrian的最新3.2.0版本,它与所有依赖项一起分发。发行版中还包括一个描述其依赖关系的ivy文件。

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

        2
  •  1
  •   reyman64    14 年前

    也许您可以在olap4japi中找到信息? http://www.olap4j.org/

    org.olap4j网站.mdx.parser MDX查询语言的分析器。

    olap4j是一个面向OLAP的开放式javaapi。

    把它想象成JDBC,但是

    对于任何OLAP服务器,所以您可以编写 一个OLAP服务器上的应用程序 在这个API上,将有一个 工具和组件的集合。

        3
  •  0
  •   zinking    8 年前

    看起来像蒙德里安.rolap.agg.AggregationManager有一些与之相关的代码,但并不直接。

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

    如果你按照最后一条线走,

    细胞钻孔(...)

    你会在这里结束的

    字符串sql=this.getDrillThroughSQL(字段,扩展上下文);

    希望这个答案。

        4
  •  0
  •   Patrick B    7 年前

    Im使用由hsqldb支持的Mondrian,以便开发人员针对内存中的dbs工作,但是当我们部署到实际环境中时,会切换到非Mondrian OLAP实现。这意味着我们可以做一些更灵活的开发,本质上只需使用Mondrian将MDX转换为sql。

    this 页面开始复制ROLAP ddl和Mondrian映射模式。我使用了其中一条评论中的mondriandosupport模板 here . 同一页面还提供了一些关于所需的mvn依赖性的帮助(注意:为了克服NPE问题,我不得不将jflex 1.4.1与mondrian3.2.0结合使用)。使用SpringBoot和hsqldb,我在测试启动时创建包含数据的ROLAP模式。然后将autoqli文件作为数据源注入hsqli。到目前为止,它运行得很好,只需~秒就可以运行Junit测试,该测试用数据引导一个新的数据库并执行MDX查询。我希望在尝试使用更复杂的MDX查询时会出现一些问题,但是让我们看看。