mondrian使用测试

本文通过一个实例展示了如何使用mondrian OLAP引擎进行数据仓库查询。首先,介绍了mondrian的基本概念,包括立方体、维度和度量。然后,演示了在Java代码中连接MySQL数据仓库、加载XML模型以及执行MDX查询的过程。在实践中遇到了XML解析错误、数据库连接问题以及MDX查询错误,通过逐步排查解决了这些问题。文章最后提到了mondrian与olap4j接口的使用,并对比了mondrian与其他OLAP引擎,如Kylin的差异。
摘要由CSDN通过智能技术生成
     mondrian是一个OLAP引擎,和OLTP不同的是,OLAP是建立在物理表以上的一个逻辑模型,称为一个立方体,这个立方体的建立是通过指定可选的维度和度量,每一个维度有一个维度表,维度有层次信息。OLAP的查找是通过一种MDX表中实现的,类似于OLTP的sql语法,MDX有自己的语法,不过它只规范了查询语句,因为OLAP中不会对数据进行修改,因此OLAP执行的过程中有两个方面,首先就是对模型的定义,在mondrian中,逻辑模型的定义是通过xml的方式交给mondrian解析的,对于这个模型的查询是通过MDX格式的语句完成的,下面通过一个实例调用mondrian接口看一下mondrian的使用。
package mondrianTest;

import java.io.PrintWriter;

import mondrian.olap.Connection;
import mondrian.olap.DriverManager;
import mondrian.olap.Query;
import mondrian.olap.Result;

public class TestMDX {
public void testQuery(){
       Connection connection = DriverManager.getConnection("Provider=mondrian;" + 
            "Jdbc=jdbc:mysql://10.241.20.157:3306/foodmart?user=root&password=root;" +
            "Catalog=C:\\Users\\Administrator\\Desktop\\nrtp\\FoodMart.xml;",
           null, false);
       Query query = connection.parseQuery("select {[Measures].[业务量]} on columns from MsgBusi");
       Result result = connection.execute(query);
       PrintWriter pw = new PrintWriter(System.out);
       result.print(pw);
       pw.flush();

   }

   public static void main(String[] args) {
       TestMDX a =  new TestMDX();
       System.out.println("调用mondrian api进行查询");
       a.testQuery();
   }
}

这段代码是自己从网上down下来的,要想运行它需要加一些执行过程中需要的jar包,至少需要以下几个包:


接着运行出现如下错误:
Exception in thread "main" mondrian.olap.MondrianException: Mondrian Error:Internal error: while parsing catalog C:\Users\Administrator\Desktop\nrtp\FoodMart.xml
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:755)
at mondrian.olap.Util.newInternal(Util.java:1083)
at mondrian.olap.Util.newError(Util.java:1099)
at mondrian.rolap.RolapSchema.load(RolapSchema.java:303)
at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:213)
at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:76)
at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:835)
at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:657)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:148)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:79)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:122)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:87)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:55)
at mondrianTest.TestMDX.testQuery(TestMDX.java:13)
at mondrianTest.TestMDX.main(TestMDX.java:41)
Caused by: org.eigenbase.xom.XOMException: In Schema: In Cube: In Measure: In MeasureExpression: In SQL: Value 'infobright' of attribute 'dialect' has illegal value 'infobright'.  Legal values: {generic, access, db2, derby, firebird, hsqldb, mssql, mysql, oracle, postgres, sybase, teradata, ingres, luciddb}
at mondrian.olap.MondrianDef$Schema.<init>(MondrianDef.java:134)
at mondrian.rolap.RolapSchema.load(RolapSchema.java:289)
... 11 more

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值