当需要查询的数据来自多个不同的物理库,并且数据库中的表结构也不同时,这种查询我们称为异构数据库混合查询。
下面就来介绍一下如何将两个物理库中的回款单数据做混合查询。具体步骤如下:
MySQL数据库记录的华北地区的回款单表结构:
HSQL数据库记录的华南地区的回款单表结构:
第一步,分别创建使用MySQL和HSQL数据源的元数据文件,需保证元数据中做混合查询的表结构一致
MySQL对应的元数据文件mysqldemo.lmd内容:
HSQL对应的元数据文件hsqldemo.lmd内容:
第二步,在raqsoftConfig.xml中添加MySQL和HSQL的物理数据源
<DB name="mysqldb">
<property name="url" value="jdbc:mysql://192.168.0.123:3306/dqlDB?useCursorFetch=true" />
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="type" value="10" />
<property name="user" value="root" />
<property name="password" value="root"/>
… …
</DB>
<DB name="hsqldb">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/dqldemo" />
<property name="driver" value="org.hsqldb.jdbcDriver" />
<property name="type" value="13" />
<property name="user" value="sa" />
<property name="password" />
… …
</DB>
第三步,部署启动报表DQL Server服务
(1) 将mysqldemo.lmd和hsqldemo.lmd文件放至[报表DQL Server服务目录]\conf下
(2) 在[报表DQL Server服务目录]下的service.xml中添加<MAP/>标签
<!—报表DQL Server服务使用多物理库时的文件结构配置,ENTRY中未配置元数据层文件时则会采用SERVICE标签中的同名属性值。
dbName:为raqsoftConfig.xml中的物理数据源名称
dictionary: 报表DQL Server服务的元数据层字典文件(.dct),不是必填项,可选
logicmetadata: 报表DQL Server服务的元数据文件(.lmd) ,不是必填项,可选
<MAP>
<ENTRY dbName="mysqldb" logicmetadata="mysqldemo.lmd" />
<ENTRY dbName="hsqldb" logicmetadata="hsqldemo.lmd"/>
</MAP>
(3) 在server.xml中添加raqsoftConfig和mdb属性
<!--raqsoftConfig: 报表配置文件raqsoftConfig.xml路径,此属性仅在使用多个物理库时有效 -->
<SERVER host="127.0.0.1" port="3366" timeout="30000" log="true" license="" raqsoftConfig="web/webapps/demo/WEB-INF/raqsoftConfig.xml" autoStart ="false" >
<!-- SERVICE:要启动的报表DQL Server列表,可以配置多个,多个时则需要添加多条<service/>,每个<service/>的name属性所指定的服务都必须位于[应用根目录]\services下,services目录下可以有多个报表DQL Server服务目录,但只有下面列出的服务才会被启动 -->
<!-- name: 报表DQL Server的名称,且名称必须与文件夹名称一致 -->
<!-- mdb:是否使用多个物理库,缺省为false。为true时表示使用多个物理库-->
<SERVICE name="datalogics" mdb="true"/>
</SERVER>
(4) 启动报表DQL Server
第四步,在ODBC数据源管理程序的“用户DSN”栏下,选择“DqlOdbc ODBC Driver”点击添加,出现创建新数据源界面
点击【完成】,进入dql odbc配置界面:
点击【OK】即成功创建odbc数据源。
具体操作步骤和属性含义可参考使用ODBC连接报表DQL Server章节。
第五步:在raqsoftConfig.xml中添加ODBC类型的报表DQL Server数据源
<DB name="DataLogics">
<property name="url" value="jdbc:odbc:datalogics" />
<property name="driver" value="sun.jdbc.odbc.JdbcOdbcDriver" />
<property name="type" value="0" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="batchSize" value="1000" />
<property name="autoConnect" value="false" />
<property name="useSchema" value="false" />
<property name="addTilde" value="false" />
<property name="caseSentence" value="false" />
</DB>
第六步,启动TOMCAT,访问DQL分组分析页面,进行混合查询分析
HSQL数据库回款单表记录:
MySQL数据库回款单表记录:
分析控件中新建数据集,选择使用多物理库报表DQL Server服务的数据源Datalogics,编写查询语句,如下图所示:
设置查询语句后,点击【导入数据】,即可保存数据集。然后添加报表:
拖拽查询字段到指标数据区,报表显示结果:
通过上图可以看出报表分析结果已经将来自异构数据库的数据做了混合查询分析。