olap 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() + "
";

ds.addValue("column" + Integer.toString(colPos.getOrdinal()), cell.getFormattedValue());

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值