zoukankan      html  css  js  c++  java
  • 用java和olap4j从SSAS中获取数据

          如果用Java去获取一个SSAS的cube,这在微软技术(C#)编写的客户端,这是非常容易的事情,因为有大量的文档和例子。而用java从SSAS中获取数据却很少有文档,但这是可以做到的,因为SSAS用到了XMLA。

          第一件事是你需要建立一个HTTP访问。这一步通常有好几个选项供你选择,一是可以开发一个web服务客户端去调用SSAS web服务。另一个是用类似JDBC的驱动:olap4j和jdbc4Olap。

        cube是SQL Server 2008 的。服务器是WAS(Webshpere Application Server 7.0),这意味着需要JDK1.6。jdbc选择了olap4j

         综上所述,java程序使用web服务客户端或者类似jdbc的驱动通过XMLA与IIS进行连接。IIS用处理HTTP请求再用msmdpump.dll把请求传输到SSAS中。
    第一步——安装jar包

    复制.jar文件到你的class path,import到java文件中。

    import org.olap4j.*  

    第二步——建立连接 
     
    Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");   
    OlapConnection con = (OlapConnection)DriverManager.getConnection("jdbc:xmla:Server=http://myserver/olap/msmdpump.dll;Catalog=MyCatalog");   
    OlapWrapper wrapper = (OlapWrapper) con;   
    OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);   
    OlapStatement stmt = olapConnection.createStatement(); 

    第三步——执行OLAP查询

    在这里写MDX语句,让SSAS查询:


    CellSet cellSet = stmt.executeOlapQuery("SELECT {[Measures].[Qty], [Measures].[Cost Base]} ON Columns, {[Product].[Category].[Category]} ON Rows FROM [Invoices]"); 

    第四步——结果处理

    下面的代码通过两重循环填充dataset。关键是你可以访问MDX返回的结果的行和列了。

     
    DataSet ds = new DataSet();   
    for (Position rowPos : cellSet.getAxes().get(1)) {    
      ds.addRow();    
      for (Position colPos : cellSet.getAxes().get(0)) {   
        test += Integer.toString(rowPos.getOrdinal()) + " : " + Integer.toString(colPos.getOrdinal());    
        Cell cell = cellSet.getCell(colPos, rowPos);   
        test += "Value: " + cell.getFormattedValue() + "<br />";  
        ds.addValue("column" + Integer.toString(colPos.getOrdinal()), cell.getFormattedValue());    
      }   

    BI培训 商业智能 商务智能 天善智能 上海天善

  • 相关阅读:
    Android Service 启动和停止服务
    Android 子线程中进行UI操作遇到的小问题
    JZ66 机器人的运动范围
    JZ65 矩阵中的路径
    JZ64 滑动窗口的最大值
    JZ63 数据流中的中位数
    Z62 二叉搜索树的第k个结点
    JZ61 序列化二叉树
    JZ60 把二叉树打印成多行
    JZ59 按之字形顺序打印二叉树
  • 原文地址:https://www.cnblogs.com/tianshansoft/p/2429769.html
Copyright © 2011-2022 走看看