• 热门专题

mondrian与java工程的集成

作者:  发布日期:2015-03-04 20:44:19
Tag标签:工程  
  • Mondrian 是一个独立的引擎,一般都是通过嵌入到应用的方式来使用它,只需要在类路径加个类库就可以。实际上有多套 BI 解决方案都是通过集成 Mondrian 的方式来实现多维分析。
    本文介绍编程方式连接 Mondrian,执行 MDX 查询的方法。使用 mondrian 需要有一个数据库的连接和多维数据的描述文件(Schema 文件)。这个可以通过我之前的文章来了解。

    http://blog.csdn.net/qzp1991/article/details/44016959

    http://blog.csdn.net/qzp1991/article/details/44017161

    一、先决条件:

    1.jdk环境配置的完成;

    2.在tomcat下完成mondrian服务器和多维数据库的部署;

    实例的搭建,在我之前的文章中有涉及

    http://blog.csdn.net/qzp1991/article/details/44016959

    二、java工程的建立

    1.导入mondrian的必备包

    它们位于mondrianWEB-INFlib之中

    2.导入连接mysql的驱动

    3.编写相关核心代码

     

    package mondrian.java.api;
    
    import java.io.PrintWriter;
    import mondrian.olap.Connection;
    import mondrian.olap.DriverManager;
    import mondrian.olap.Query;
    import mondrian.olap.Result;
    
    public class Main {
    		
      @SuppressWarnings("deprecation")
    	public static void main(String[] args) {
      	Connection connection = DriverManager.getConnection(
      	"Provider=mondrian;Jdbc=jdbc:mysql://localhost/nts_eway_ee?user=root&password=root;
            Catalog=E:/apache-tomcat-7.0.40/webapps/mondrian/WEB-INF/queries/ntsdw.xml;",null);
      	Query query =connection.parseQuery("select {[Measures].[nts_sample]} ON COLUMNS,
                  {[region.default].[AllRegion],[region.default].[江苏], [region.default].[湖南]} ON ROWS 
                  from [ntsdw] where [time.default].[2015].[1].[1]");
      	Result result = connection.execute(query);
            PrintWriter pw = new PrintWriter(System.out);
            result.print(pw);
            pw.flush();
    	}	
    }
    相关解释

     

    Mondrian 本身执行 mdx 查询的接口位于 mondrian.olap 包。

     

    Jdbc=jdbc:mysql://localhost/nts_eway_ee?user=root&password=root
    表示连接数据库的名称和相关用户名及密码

     

     

    Catalog=E:/apache-tomcat-7.0.40/webapps/mondrian/WEB-INF/queries/ntsdw.xml;
    表示模式文件所在的位置

     

     

    Query query =connection.parseQuery("select {[Measures].[nts_sample]} ON COLUMNS,
                  {[region.default].[AllRegion],[region.default].[江苏], [region.default].[湖南]} ON ROWS 
                  from [ntsdw] where [time.default].[2015].[1].[1]");
    表示具体的MDX执行语句

     

    result是一个MDX执行语句的返回值

    其中,pw.flush();语句是必须的,否则不会输出

    点击运行,执行结果如下:

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规