具体的实现润乾连接ssas并显示取到的数据,这里简单做了一个以自定义数据集的形式定义数据集并展现 具体代码如下。
import java.sql.DriverManager;
import org.olap4j.Cell;
import org.olap4j.CellSet;
import org.olap4j.OlapConnection;
import org.olap4j.OlapStatement;
import org.olap4j.OlapWrapper;
import org.olap4j.Position;
import com.runqian.report4.dataset.DataSet;
importcom.runqian.report4.dataset.IDataSetFactory;
import com.runqian.report4.dataset.Row;
import com.runqian.report4.usermodel.Context;
importcom.runqian.report4.usermodel.DataSetConfig;
public class SSas5 implementsIDataSetFactory {
publicDataSet createDataSet(Context ctx,DataSetConfig dsc, boolean isinput) {
CellSetcellSet = null;
DataSetds = new DataSet("ds1");
ds.addCol("地区");//定义显示列
ds.addCol("产品");
ds.addCol("日期");
ds.addCol("Amount");
//以下变量通过参数传入
String[]sts = {"北京第一销售部","北京第一销售部","北京第一销售部","北京第一销售部", "北京第二销售部", "北京第二销售部", "北京第二销售部", "北京第二销售部"};
String[]Products = {"饼干", "奶茶","番茄酱","苹果","饼干", "奶茶","番茄酱","苹果"};
String[]dates = {"2010", "2011"};
try{
//连接到SSAS
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
OlapConnectioncon = (OlapConnection) DriverManager
.getConnection("jdbc:xmla:Server=http://localhost/olap/msmdpump.dll;Catalog=Testssas2");
OlapWrapperwrapper = (OlapWrapper) con;
OlapConnectionolapConnection = wrapper.unwrap(OlapConnection.class);
OlapStatementstmt = olapConnection.createStatement();
cellSet= stmt.executeOlapQuery("SELECT {[Weibiao3].[地区].&[北京第一销售部],[Weibiao3].[地区].&[北京第二销售部]}*{[Weibiao2].[产品].&[饼干],[Weibiao2].[产品].&[番茄酱],[Weibiao2].[产品].&[奶茶],[Weibiao2].[产品].&[苹果]} ONCOLUMNS,{[Weibiao1].[Date].&[2010],[Weibiao1].[Date].&[2011]} on ROWSFROM [Runqian As] where[Measures].[Amount]");
//填充结果集
introwIndex = 0;
for(Position rowPos : cellSet.getAxes().get(1)) {
String日期 = dates[rowIndex];
intcolIndex = 0;
for(Position colPos : cellSet.getAxes().get(0)) {
String产品 = Products[colIndex];
String地区 = sts[colIndex];
//拿到数据值
Cellcell = cellSet.getCell(colPos, rowPos);
Stringvalue = cell.getFormattedValue();
Rowrow = ds.addRow();
row.setData(1,地区);
row.setData(2,产品);
row.setData(3,日期);
row.setData(4,value);
colIndex++;
}
rowIndex++;
}
}catch (Exception e) {
e.printStackTrace();
}
returnds;
}
/**
* 生成查询语句
*
* @param cubeName 立方体名称
* @param colDimName 列维度名称
* @param colDatas 列维度数据
* @param rowDimName 行维度名称
* @param rowDatas 行维度数据
* @param measureName 测度名称
* @return
*/
publicstatic void main(String[] args) {
SSas5s = new SSas5();
DataSetds = s.createDataSet(null, null, false);
}
}
最后按照润乾的自定义数据集的步骤把相关文件放到润乾目录下