JAVA与财务数据库Essbase连接并取数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA与财务数据库Essbase连接并取数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4052字,纯文字阅读大概需要6分钟。
内容图文
![JAVA与财务数据库Essbase连接并取数](/upload/InfoBanner/zyjiaocheng/865/f7d75d91cca7402fad861ca9b82b733c.jpg)
废话不多说直接开始
首先Essbase连接分几种,我所知的有2种一种是使用Excel的com插件根据对应的科目加载数据至Excel 表格,另外一种呢就是使用JAVA代码连接Essbase的JAPI接口。
1.配置相关
server.username=username
server.password=password
essbase.address=localhost
essbase.provider=http://localhost:19000/aps/JAPI
首先连接Essbase需要账号密码,其次需要知道JAPI的接口地址以及需要连接的实际数据库所在的机器
ps:以上address和provider一般在正式的环境下这2个不在一台机器上。
2. 代码部分
我们连接取数的时候,类似于使用Excel的模式先构建出一个带门店带科目的表头信息。
左边呢是门店,上面呢是科目相当于2021年的工资数据,可能工资里面有细分到A,B,C,D等等,中间部分呢就是待取的数据
好我们开始
首先是公共的抽数方法
/**
* 最终的抽数方法 传入科目信息 以及appname cubename
* @param columns 科目信息
* @param s_appName appName
* @param s_cubeName cubeName
* @return
* @throws Exception
*/
public Map<String, List<Double>> getEssbaseData(List<List<String>> columns, String s_appName, String s_cubeName) throws Exception {
properties = CommonUtils.getProperties("config.properties");
s_userName = properties.getProperty("server.username");
s_password = properties.getProperty("server.password");
s_provider = properties.getProperty("essbase.provider");
s_analyticSvrName = properties.getProperty("essbase.address");
IEssbase ess = IEssbase.Home.create(IEssbase.JAPI_VERSION);
IEssDomain dom = ess.signOn(s_userName, s_password, false, null, s_provider);
IEssCubeView cv = dom.openCubeView("Data Query Example", s_analyticSvrName, s_appName, s_cubeName);
cv.setRepeatMemberNames(true);
cv.setIncludeSelection(false);
cv.setSuppressMissing(true);
cv.setSuppressZero(true);
cv.setDrillLevel(IEssOpZoomIn.EEssZoomInPreference.BOTTOM_LEVEL);
cv.updatePropertyValues();
//这里获取你的门店集合 我这里就用new一个新的
List<String> stores = new ArrayList<>();
Map<String, List<Double>> essbaseDataMap = performCubeViewOperation(ess, cv, stores, columns);
return essbaseDataMap;
}
public Map<String, List<Double>> performCubeViewOperation(IEssbase ess, IEssCubeView cv, List<String> stores, List<List<String>> columns) throws EssException {
IEssGridView grid = cv.getGridView();
setEssvaseGridView(grid, stores, columns);
IEssOperation op = null;
op = cv.createIEssOpRetrieve();
cv.performOperation(op);
int cntRows = grid.getCountRows(), cntCols = grid.getCountColumns();
Map<String, List<Double>> essbaseResultMap = new HashMap<>();
for (int r = columns.get(0).size(); r < cntRows; r++) {
String store = grid.getStringValue(r, 0).trim();
List<Double> datas = new ArrayList<>();
for (int j = 1; j < cntCols; j++) {
String value = grid.getStringValue(r, j);
if ("#Missing".equals(value)) {
value = "";
}
datas.add("".equals(value) ? 0.0 : Double.parseDouble(value));
}
essbaseResultMap.put(store, datas);
}
return essbaseResultMap;
}
public void setEssvaseGridView(IEssGridView grid, List<String> stores, List<List<String>> columns) throws EssException {
// //设置grid 表格大小 多少行 多少列
grid.setSize(columns.get(0).size() + stores.size(), 1 + columns.size());
// //设置 表头
int titleRow = 0;
for (int i = 1; i <= columns.size(); i++) {
for (int j = 0; j < columns.get(i - 1).size(); j++) {
titleRow = columns.get(i - 1).size();
//设置 表格 表头 行 列 数值
grid.setValue(j, i, columns.get(i - 1).get(j));
}
}
//设置门店列
for (int i = 0; i < stores.size(); i++) {
String storeStr = stores.get(i);
//设置 门店 行 列 门店编码 行 为 表头下第一行 列为 0
grid.setValue(titleRow + i, 0, storeStr);
}
}
然后是在其他地方构建一个科目list调用抽数方法
String[] codes= {"NumberA","NumberC","NumberD","NumberE","NumberF","NumberG"}
//构建cells
List<List<String>> columns = new ArrayList<>();
for (String item : codes) {
List<String> column = new ArrayList<>();
//年
column.add(2021);
column.add("wage");
column.add(item);
columns.add(column);
}
Map<String, List<Double>> map = getEssbaseData(columns, "appName", "cubeName");
最终返回的这个map的格式是这样子的,key呢是每个门店 value是科目的值,就跟下面的excel表格一样前面的门店是key,后面的值1000-1006是一个有序的list,从1000-1006,当然正常数据不是这样子的只是做一个演示。
以上就是本次全部内容。
内容总结
以上是互联网集市为您收集整理的JAVA与财务数据库Essbase连接并取数全部内容,希望文章能够帮你解决JAVA与财务数据库Essbase连接并取数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。