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.