华鼎数据库与 SpagoBI 平台的整合
1 SpagoBI 软件配置
1 )到官方网站下载 SpagoBI 软件与建库脚本,一般官网上的建库脚本为 Mysql , Oracle 等常用数据库,下载完成后需要针对 Huabase 数据类型进行转换,具体可以参照 Huabase 说明文档。
2 )配置 Tomcat 的 JNDI 数据源。首先需要将 Huabase 的 JDBC Driver 拷贝到 Tomcat 的 LIB 目录下,然后对 Conf 目录下的 Server.xml 进行修改,需要修改 Resource 标签下内容,如下所示,将数据驱动与连接参数修改为 Huabase 的相关内容。
<Resource name="jdbc/spagobi" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.huabase.jdbc.HuabaseDriver"
url="jdbc:huabase:@localhost:1978"
username="tpch" password="tpch" maxActive="50" maxIdle="10"
maxWait="-1"/>
3 )配置 Hibernate 。在 SpagoBI 应用程序中找到 spagobi.xml 文件,路径如下: exo-home/webapps/spagobi/WEB-INF/conf/spagobi/ 。查找其中的 <HIBERNATE-CFGFILE> 标签,将自定义的 HIBERNATE 相关信息填入其中,如果没有 HIBERNATE 的相应配置文件,请参照 HIBERNATE 说明文档自行创建。同时,我们还要将 Huabase 的 JDBC Driver 添加到 WEB-INF/LIB 目录下。 Hibernate 中的所有 Mapping 文件请根据 Mysql 或者 Oracle 等数据库的 Mapping 文件进行修改或重新定义。
4 )以上配置全部完成后,用户即可启动 SpagoBI 的 Tomcat 服务器,第一次使用时 Hibernate 将会向数据库中自动建一些表,可能会相对较慢,服务器启动成功后,请参照 SpagoBI 的用户手册进行操作。
2 Jasper 模板创建
1 )首先需要使用 Jasper 的 ireport 生成相应 jrxml 格式模板,以供 SpagoBI 中的 jasperEngine 执行。 ireport 使用方法请自行参照 ireport 自带用户手册,这里需要注意的是 ireport 只支持固定几种数据源,我们可以采取两种方法,一种是通过更改代码的方式然后再次执行,要更改的代码主要在于 ui 控件中的下拉列表的显示,主要在源代码包 com.jaspersoft.ireport.designer.connection.gui 中,但前提是需要将 Jasper 环境配置完成后才可以使用 built 生成。第二种方法相对比较简单,主要是通过在外部使用 xml 配置数据源的方式,直接导入 ireport 。如下所示,定义了一个名称为 abababab 的数据源,直接使用 ireport 数据源的 import 功能,将数据源导入即可。
<?xml version="1.0"?><!-- iReport connections -->
<iReportConnectionSet>
<iReportConnection name="ABABABAB" connectionClass="com.jaspersoft.ireport.designer.connection.JDBCConnection">
<connectionParameter name="ServerAddress"><![CDATA[ABABABAB]]></connectionParameter>
<connectionParameter name="SavePassword"><![CDATA[true]]></connectionParameter>
<connectionParameter name="Url"><![CDATA[jdbc:huabase:@localhost:1978]]></connectionParameter>
<connectionParameter name="JDBCDriver"><![CDATA[com.huabase.jdbc.HuabaseDriver]]></connectionParameter>
<connectionParameter name="Database"><![CDATA[]]></connectionParameter>
<connectionParameter name="Password"><![CDATA[tpch]]></connectionParameter>
<connectionParameter name="Username"><![CDATA[tpch]]></connectionParameter>
</iReportConnection>
</iReportConnectionSet>
2 ) Jasper 数据源配置成功后,我们就可以按照用户手册进行操作了,具体在这里不再赘述,生成的 Jasper 模板如何导入 SpagoBI 也请参照 SpagoBI 的说明文档。
注意: JDBC 驱动要在 CLASSPATH 中配置好。
3 Birt 模板创建
1 ) Birt 相对比较简单,首先配置相应的 DataSource 数据源,导入数据驱动,具体操作请参照 Birt 说明文档。
2 )配置完成后,按照普通的报表生成方法即可。
注意: Birt 生成表格报表的时候,需要在 Settings 中设置 Max number of rows to fetch from data source ,否则可能会显示不出数据。
4 OLAP 模板创建
1 ) SpagoBI 使用的 OLAP 服务器为 Mondrian ,详细内容请参照说明文档,下面举例说明配置步骤。
2 )在 SpagoBI 的 exo-home /resources/Olap 文件中,添加构建数据仓库的 xml 文件
例如(以下为示例应用):
<?xml version="1.0" encoding="UTF-8"?>
<Schema name="tezz">
<Cube name="Sales">
<Table name="sale" />
<Dimension name="Customer gender" foreignKey="cusId">
<Hierarchy hasAll="true" allMemberName="all gender" primaryKey="cusId">
<Table name="Customer"></Table>
<Level name="Customer gender" column="gender"></Level>
</Hierarchy>
</Dimension>
<Dimension name="product type" foreignKey="proId">
<Hierarchy hasAll="true" allMemberName="all product" primaryKey="proId" primaryKeyTable="product">
<join leftKey="proTypeId" rightKey="proTypeId">
<Table name="product" />
<Table name="producttype"></Table>
</join>
<Level name="proTypeId" column="proTypeId"
nameColumn="proTypeName" uniqueMembers="true" table="producttype" />
<Level name="proId" column="proId" nameColumn="proName"
uniqueMembers="true" table="product" />
</Hierarchy>
</Dimension>
<Measure name="Quantity" column="number" aggregator="sum" datatype="Numeric" />
<Measure name="Total sales" aggregator="sum" formatString="#,##0.00">
<MeasureExpression>
<SQL dialect="generic">(unitPrice*number)</SQL>
</MeasureExpression>
</Measure>
<CalculatedMember name="Average unit price" dimension="Measures">
<Formula>[Measures].[Total sales] / [Measures].[Quantity]</Formula>
<CalculatedMemberProperty name="FORMAT_STRING" value="#,##0.00" />
</CalculatedMember>
</Cube>
</Schema>
上面构造了顾客性别及货物类型两个维度,及数量,总销售额,平均单价三个量度
3 )在 exo-home/webapps/SpagoBIJPivotEngine/WEB-INF/classes 中的
engine-config.xml 中指定数据仓库文件路径,如下面所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ENGINE-CONFIGURATION>
<!-- SSO settings -->
<INTEGRATION_CLASS_JNDI>java://comp/env/spagobi_sso_class</INTEGRATION_CLASS_JNDI>
<FILTER_RECEIPT>/proxyCallback</FILTER_RECEIPT>
<PASS>PASS</PASS>
<!-- SPAGOBI_SERVER_URL Address for invoking WebService, if empty use the request parameters -->
<SPAGOBI_SERVER_URL></SPAGOBI_SERVER_URL>
<SPAGOBI_SERVER_URL_JNDI_NAME>java://comp/env/spagobi_service_url</SPAGOBI_SERVER_URL_JNDI_NAME>
<!-- THE JNDI RESOURCE NAME FOR RETRIVE THE RESOURCE PATH -->
<RESOURCE_PATH_JNDI_NAME>java://comp/env/spagobi_resource_path</RESOURCE_PATH_JNDI_NAME>
<!-- The URL to FORWARD to when session has expired -->
<SESSION_EXPIRED_URL>/WEB-INF/jsp/commons/sessionExpired.jsp</SESSION_EXPIRED_URL>
<SecurityServiceProxy_URL>/services/SecurityService</SecurityServiceProxy_URL>
<SchedulerServiceProxy_URL>/services/SchedulerService</SchedulerServiceProxy_URL>
<EventServiceProxy_URL>/services/EventService</EventServiceProxy_URL>
<ContentServiceProxy_URL>/services/ContentService</ContentServiceProxy_URL>
<AuditServiceProxy_URL>/services/AuditService</AuditServiceProxy_URL>
<DataSourceServiceProxy_URL>/services/DataSourceService</DataSourceServiceProxy_URL>
<DocumentExecuteServiceProxy_URL>/services/DocumentExecuteService</DocumentExecuteServiceProxy_URL>
<DataSetServiceProxy_URL>/services/DataSetService</DataSetServiceProxy_URL>
<SCHEMAS>
<SCHEMA catalogUri="/Olap/FoodMart.xml" name="FoodMart" />
<SCHEMA catalogUri="/Olap/SbiMonitor.xml" name="SpagoMonitor" />
<SCHEMA catalogUri="/Olap/TestCorso.xml" name="TestCorso" />
<SCHEMA catalogUri="/Olap/tezz.xml" name="Tezz" />
</SCHEMAS>
</ENGINE-CONFIGURATION>
4 )新建 OLAP 模板 , 并添加相应的查询语句即可。如以上示例如果查询的话 , 添加的语句如下所示 :
select {[Measures].[Quantity],[Measures].[Average unit price],[Measures].[Total sales]} ON columns,
{([product type].[all product],[Customer gender].[all gender])} ON rows
from [Sales]
5 Weka 模板创建
1 ) Weka 的使用请参照其用户手册,在这里需要注意的是,只有选择 Weka 的 KnowlegeFlow 生成的文件才能做为模板使用。
2 )如图 1 所示(取自 SpagoBI 中的示例应用),新建了一个知识流, DatabaseLoader 负责对数据源进行加载,数据库可以如图中所示是数据库,也可以为 arff , csv 等格式,数据加载后形成数据集供下一步操作使用。
AddCluster ,代表将进行聚类的处理。
Remove ,将按需要移除不需要的属性。
DatabaseSaver ,将用户处理后的数据再次存回数据库。
图 1 示例应用
6 Talend 模板创建
1 )打开 Talend open studio ,使用其中 metadata 的 DBConnection 进行数据连接设置,选择 general jdbc ,设置相应的参数,数据库驱动,如果填写正确可以在测试连接中看到成功连接的提示。
2 )对 talend/plugins 文件夹下的 org.talend.metadata.management 包中的 EDatabase4Driver
-ClassName 类进行修改(此方法经测试适合 4.1 版本修改),为这个枚举类添加一个实例, HUABASE(EDatabaseTypeName.GENERAL_JDBC, "com.huabase.jdbc.HuabaseDriver") 。修改后编译保存重新打包,并替换原版本中的 jar 包后启动。
3 )举例说明 Talend 简单使用,如图 2 所示
图 2 Talend 示例
设计输入数据源为 NATION ,输出数据源 tJDBCOutput_1 ,输入与输出按照 Huabase 数据库标准进行配置,使用 tMap_1 进行简单的映射,最后形成一个新表,具体参考 Talend 用户手册。