设为首页 加入收藏

TOP

mondrian使用测试(一)
2015-11-21 01:52:35 来源: 作者: 【 】 浏览:0
Tags:mondrian 使用 测试
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.(RolapSchema.java:213)
at mondrian.rolap.RolapSchema.(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.(RolapConnection.java:148)
at mondrian.rolap.RolapConnection.(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.(MondrianDef.java:134)
at mondrian.rolap.RolapSchema.load(RolapSchema.java:289)
... 11 more

这一步是解析模式定义的xml文件出现了错误,根据提示,查看了一下infobright是什么发现它也是一种数据仓库的解决方案,可能当前版本的mondrian不支持它,所以将出现他的xml标签都注释掉算了,反正我们这里只使用mysql(要确保mysql的连接驱动的jar包已经加入到工程的classpath下),不关心其他的。 接着再次运行出现如下错误:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇AWR元数据的迁移或导入到其他数据.. 下一篇eclipse快捷键

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: