使用BIRT实现跨数据库数据查询和关联计算时遇到问题。用DB2实现跨库的join配置很麻烦;如果用BIRT把两个库的数据都读进来的话,用BIRT的脚本(java或者java script)都要写较长的代码来实现join,也很麻烦。采用了集算器后任务就变得简单许多。
要在一个报表里展现的数据来源于两个DB2数据库。项目的数据有保密的要求,所以用订单表和订单明细表来做验证的:
订单表(来源数据库1),数据量10w:
订单明细表(来源数据库2),数据量20w:
第一步:编写代码,从两个数据库中取出数据来,在库外做join运算:
A1到A6是连接两个数据库、取出数据、关闭数据库。A7到A10是完成join。代码网格A11把报表需要的数据返回给BIRT。
第二步:将集算器集成到BIRT中
先拷贝相关jar包到jdbc驱动目录:
再修改配置文件:
集算器配置文件有两个,dfxConfig.xml和config.xml,放到dm.jar中。
然后配置BIRT数据源:
驱动类名:com.esproc.jdbc.InternalDriver (v1.0)
URL:jdbc:esproc:local://
第三步:在BIRT中新建存储过程数据集
这里调用的存储过程“xjst-join2”的名字就是集算器脚本文件名(去掉后缀.dfx)。
第四步:报表展现