IBM Cognos 最佳实践: IBM Cognos BI – 使用 XML 作为数据源

文档性质:技巧或技术;产品:IBM Cognos 8 BI;关注领域:基础架构,建模

IBM Cognos 提供了许多类型(其中包括 XML)的数据源,可以连接到它们来提供报告功能。本文档将演示使用 IBM Cognos BI 连接到 XML 数据源的技巧。

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 10 Business Intelligence Developer Edition V10.1 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

本文档将演示使用 IBM Cognos BI 连接到 XML 数据源的技巧。

适用性

本文档中的技巧已经在 IBM Cognos 8.4 和 IBM Cognos 10.1.1 中进行了测试。

假设条件

本文档假设读者熟悉 Framework Manager、XML、JSP 代码、shell 脚本以及将应用程序部署到一个应用服务器或 servlet/JSP 容器的过程。在 IBM Cognos BI 中创建数据源需要使用到管理员权限。

例外

本文档中的技巧适用于较小的 XML 数据集。需要进行测试以确保在使用这些技巧的环境中可以获得可接受的性能。对于更大的数据集或更加灵活的 XML 实现,可以考虑使用 IBM Cognos Virtual View Manager。


概述

IBM Cognos 提供了许多类型的数据源,可以连接到它们来提供报告功能。XML 就是其中一种数据类型,并且不需要使用任何额外的基础架构(如中间件)即可进行连接。

管理员可以直接连接到 XML 文件,或通过 URL 访问 XML。对于后者,XML 源可以是驻留在 Web 服务器目录中的 XML 文件,或者可以是以编程方式提供的 XML,比如用 JavaServer Page (JSP) 提供的 XML。本文档将提供实现这些方法的示例。


适合 IBM Cognos BI 的有效 XML

在使用 IBM Cognos BI 直接连接到 XML 源时,XML 源必须符合 <IBM Cognos BI 安装位置>\c8\bin 中的 xmldata.xsd 模式文件中的模式。不需要在 XML 源文件中指定模式的位置。XML 源只需要针对 xmldata.xsd 文件进行验证即可。

下面简单地列出了一些受支持的数据类型:

xs:int
xs:string
xs:double
xs:byte
xs:date

要了解更多信息和受支持的数据类型的完整清单,请参考 xmldata.xsd 模式文件和文档。

下面给出了一个有效的 IBM Cognos BI XML 数据源的示例。

<?xml version="1.0" encoding="UTF-8"?>
<dataset xmlns="http://developer.cognos.com/schemas/xmldata/1/"
 xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
	<metadata>
		<item name="AsOfDate" type="xs:string" length="12"/>
		<item name="RateOfReturn" type="xs:double"/>
		<item name="FamAcctIndex" type="xs:string" length="3"/>
		<item name="RowID" type="xs:string" length="1"/>
		<item name="BrM" type="xs:string" length="1"/>
		<item name="ProductLineCode" type="xs:int"/>
	</metadata>
	<data>
		<row>
			<value>Apr 26, 2002</value>
			<value>0.210066429</value>
			<value>JA1</value>
			<value>F</value>
			<value>B</value>
			<value>1</value>
		</row>
		<row>
			<value>Apr 27, 2002</value>
			<value>0.1111111</value>
			<value>BBB</value>
			<value>G</value>
			<value>B</value>
			<value>2</value>
		</row>		
	</data>
</dataset>

需要注意的是,“length” 属性将影响 IBM Cognos BI 处理 XML 数据的效率。不管数据的实际大小是多少,都将根据 “length” 属性的值分配内存。例如,某个元素的最大数据片段为 50 个字符,但是将为 “length” 属性选择一个更大的值,如 255,因此将按照 255 个字符分配内存。建议指定的值尽可能地接近预计的最大数据片段的长度。

再次提醒,为了更加灵活地实现 XML 数据源,请考虑使用 IBM Cognos Virtual View Manager。


连接到文件系统中的 XML 文件

本文附带了一个名为 Test.xml 的文件,该文件符合 xmldata.xsd 模式的要求,其中包含基本 XML 数据源的结构。

在后面的步骤中,将建立一个数据源连接到 Test.xml 文件,然后使用这个新的 XML 数据源创建 Framework Manger 模型。

  1. 将提供的 Test.xml 文件放到文件系统的某个位置。在本示例中,文件被放到 C 盘的 root 目录下。
  2. 打开 Framework Manager 并创建一个名为 XML File Test 的新项目。
  3. 选择 Design Language 并单击 OK
  4. Select Metadata Source 下,选择 Data Sources,然后单击 Next
  5. 单击New 按钮。
  6. 单击 Next,然后在 Name 字段中,输入 xmlFileTest
  7. 单击 Next,然后从 Type: 下拉菜单中选择 XML 作为数据源类型。
    图 1:New Data Source 向导 – 输入选择屏幕
    图 1: New Data Source 向导 – 输入选择屏幕
  8. 单击 Next,然后在 Connection string: 框中,输入 Test.xml 文件的完整路径或 UNC 路径。
    图 2: New Data Source 向导 – 连接字符串屏幕
    图 2: New Data Source 向导 – 连接字符串屏幕
    对于共享的 XML 文件且有多个 IBM Cognos BI 服务器访问该文件,推荐使用 UNC 路径。如果使用了本地路径,则需要在每个 IBM Cognos BI 服务器的此位置上放置一个 XML 文件的副本,这需要更多的维护工作。
  9. 单击 Finish,然后单击 Close
  10. 选择 xmlFileTest 作为数据源,然后单击 Next
  11. 选择 Tables。在这部分 Framework Manager UI 中,可以展开树来查看导入的项目,如下所示。
  12. 单击 Next,单击 Import,然后单击 Finish
  13. Project Viewer 窗格中,展开 xmlFileTest 命名空间。
  14. 右键单击 xmlFileTest 查询主题,单击 Test,然后单击 Test Sample
    图 4:Test Result 对话框 – 显示从 XML 数据源返回的数据
    图 4:Test Result 对话框 – 显示从 XML 数据源返回的数据
    检索 XML 文件中的数据。
  15. 单击 Close,然后在 Project Viewer 中,展开 xmlFileTest 查询主题。XML 文档中找到的各项名称由查询项表示。
    图 5:Project Viewer – 展开 xmlFileTest 查询主题以显示查询项
    图 5:Project Viewer – 展开 xmlFileTest 查询主题以显示查询项
    现在可创建并发布一个包,将它用作 IBM Cognos BI 中的一个报告源。

通过 HTTP 连接 XML 文件

在此示例中,会将提供的 Test.xml 文件复制到一个虚拟目录,然后作为 IBM Cognos BI 中的一个数据源进行引用。

  1. 将所提供的 Test.xml 文件放在 <IBM Cognos BI 安装目录>\webcontent 中。可以使用任意虚拟目录,但考虑到本示例的目的以及实现的简便性,将使用 webcontent 目录,该目录是 IBM Cognos BI 应用程序的虚拟目录。
  2. 打开 Framework Manager 并创建一个名为 XML Over HTTP Test 的新项目。
  3. 选择一种 Design Language,然后单击 OK
  4. Select Metadata Source 下,选择 Data Sources,然后单击 Next
  5. 单击 New 按钮。
  6. 单击 Next,然后在 Name 字段中,输入 xmlOverHTTPTest
  7. 单击 Next,然后从 Type: 下拉列表中选择 XML 作为数据源类型。
    图 6:New Data Source 向导 – 类型选择屏幕
    图 6:New Data Source 向导 – 类型选择屏幕
  8. 单击 Next,然后在 Connection string: 框中,输入 Test.xml 文件的完整 URL,在本例中为 http://localhost/cognos8/Test.xml。建议将 localhost 替换为实际的服务器名称或 IP 地址。
    图 7:New Data Source 向导 – 连接字符串屏幕
    图 7:New Data Source 向导 – 连接字符串屏幕
  9. 单击 Finish,然后单击 Close
  10. 选择 xmlOverHTTPTest 作为数据源,然后单击 Next
  11. 选择 Tables,单击 Next,然后单击 Import,最后单击 Finish
  12. Project Viewer 窗格中,展开 xmlOverHTTPTest 命名空间。
  13. 右键单击 xmlOverHTTPTest 查询主题,单击 Test,然后单击 Test Sample
    图 8:Test Results 对话框 – 显示从 XML 数据源返回的数据
    图 8:Test Results 对话框 – 显示从 XML 数据源返回的数据
    同样,检索 XML 文件中的数据,但这一次通过 HTTP 进行检索。
  14. 单击 Close。现在可以创建并发布一个包,将它作为 IBM Cognos BI 中的报告源。

转换 XML 以便在 IBM Cognos BI 中使用

如本文档前面所述,在 IBM Cognos BI 中使用 XML 数据源之前,必须确保 XML 数据源符合位于 <IBM Cognos BI 安装位置>\bin 上的 xmldata.xsd 模式文件中提供的模式。如果源 XML 不符合此模式,可以结合使用可扩展样式表语言转换 (XSLT) 和一种编程语言来将源 XML 转换为 IBM Cognos BI 可使用的 XML。

在下图中,一个调用应用程序(它可以是众多编程语言中的任意一种或 shell 脚本)将从源位置检索 XML。例如,该应用程序可从 Web 站点中拉出 RSS 提要。然后调用应用程序会引用一个 XSLT 文件,该文件用于将源 XML 转换为不同的 XML 文档,在本例中,会将它转换为可供 IBM Cognos BI 使用的文档。

图 9:XML 转换应用程序架构图
图 9:XML 转换应用程序架构图

调用应用程序可将 XML 写入到某个文件中,IBM Cognos BI 可在文件系统中连接到该文件,或通过虚拟目录使用 HTTP 进行连接。如果结果 XML 文档体积较大并且包含相对静态的数据,那么这种方法是一个不错的选择。如果调用应用程序基于 Web,比如 JSP,那么可以直接将 XML 提供给 IBM Cognos BI。如果 XML 源体积较小且要求实时数据,那么这种方法更合适一些(源 XML 转换将在每次调用 JSP 时发生)。

后面的小节将同时演示这两种情况。但是,在对每种场景进行测试之前,应用程序将调用 devWorksXMLDS,devWorksXMLDS 由本文档提供,通过 IBM Cognos BI 中的 Tomcat servlet/JSP 容器进行部署。

如果部署到另一个应用服务器,比如 IBM WebSphere,请参阅文档以了解详细的部署操作。


设置附带的样例

下面列出了一些部署本文附带的 devWorksXMLDS 应用程序所需的高级步骤和详细的操作说明。对于多服务器安装,该应用程序必须部署在每个 IBM Cognos BI 调度程序上。

  • 将安装文件解压到一个 IBM Cognos BI 服务器
  • 编辑需要修改的文件
  • 构建一个 WAR 文件
  • 将该 WAR 文件部署到应用服务器或 servlet 容器中

解压安装文件

将文件 devWorksXMLDS.zip 解压到 IBM Cognos BI 安装目录的 <IBM Cognos BI 安装位置>/war 目录。

devWorksXMLDS 目录现在应该已经存在。

在构建 WAR 文件之前,最好先对应用程序进行配置。对于每一个环境,只需要配置一个文件:面向 Windows 的 build.bat 或面向 UNIX/Linux 的 build.sh,以及面向 Windows 的 devWorksXMLDS.bat 或面向 UNIX/Linux 的 devWorksXMLDS.sh

配置安装

导航到 <IBM Cognos BI 安装位置>/war/devWorksXMLDS,编辑所需的文件。

如果编辑 build.bat 文件,可能需要更新以下行,以便指向该环境中正确的 JRE 或 JDK 位置。

..\..\bin\jre\1.5.0\bin\java -classpath
 "../../bin/ant.jar;../../bin/xml-apis.jar;../../bin/xercesImpl.jar"
 org.apache.tools.ant.Main %*

如果编辑 build.sh 文件,可能需要更新以下行,以便指向该环境中的 JRE 或 JDK。

if [ "$JAVA_HOME" = "" ] 
then
	echo The JAVA_HOME variable must be present
else 
	$JAVA_HOME/bin/java -classpath
	 "../../bin/ant.jar:../../bin/xml-apis.jar:../../bin/xercesImpl.jar"
	 org.apache.tools.ant.Main $@
fi

如果编辑 devWorksXMLDS.bat 文件,可能需要更新以下行,以指向该环境中正确的 JRE 或 JDK。

set MY_JAVA="c:\Program Files\cognos\c8.4\bin\jre\1.5.0\bin\java.exe"

如果编辑 devWorksXMLDS.sh 文件,可能需要更新以下行,以指向该环境中的 JRE 或 JDK。

if [ "$JAVA_HOME" = "" ]; then
	JAVA_HOME=/usr/bin
fi

JAVA="$JAVA_HOME/java"

构建 WAR 文件

运行适合具体环境的构建脚本来构建 WAR 文件。

对于 Windows,运行 <IBM Cognos BI 安装位置>/war/devWorksXMLDS/build.bat

对于 UNIX 或 Linux,运行 <IBM Cognos BI 安装位置>/war/devWorksXMLDS /build.sh

构建脚本将创建 <IBM Cognos BI 安装位置>/war/devWorksXMLDS/devWorksXMLDS.war 文件。

部署 WAR 文件

在此示例中,WAR 文件将部署到 IBM Cognos BI Tomcat 服务器。请确保 IBM Cognos BI 正在运行。

<IBM Cognos BI 安装位置>/war/devWorksXMLDS/devWorksXMLDS.war 文件复制到 <IBM Cognos BI 安装位置>/webapps 目录。

经过较短时间之后,IBM Cognos BI Tomcat 服务器将自动解压 WAR 文件。在 Tomcat 加压缩 WAR 文件之后即可删除它。

部署的应用程序包含应用程序的 shell 脚本和 JSP 需要使用的 JAR 文件。

图 10:Windows 资源管理器 – 显示所需的 JAR 文件
图 10:Windows 资源管理器 – 显示所需的 JAR 文件

这些 JAR 文件可用于 XML 实现和转换。此应用程序使用的 XSLT 处理器为 Xalan-J。有关 Xalan-J 的详细信息,请参考 http://xml.apache.org/xalan-j

devWorksXMLDS 安装现在已准备好投入使用。


将 RSS 提要转换为可使用的 XML

devWorksXMLDS 应用程序提供了两种机制,RSS XML 提要可通过这两种机制转换为可供 IBM Cognos BI 使用的 XML:

  1. 运行 shell 脚本(devWorksXMLDS.bat 用于 Windows,devWorksXMLDS.sh 用于 UNIX/Linux),其中以文件形式存储转换后的 XML
  2. 调用 JSP 并通过 HTTP 传输转换后的 XML 数据

两种方法都使用 XSLT 将源数据转换为可供 IBM Cognos BI 使用的 XML 文档。

运行脚本来生成 XML 文件

提供的 devWorksXMLDS shell 脚本从 RSS 提要(本例中的提要来自 IBM developerWorks 站点)检索 XML,然后将该 XML 转换为 IBM Cognos BI 可以使用的 XML,然后以文件形式将它存储在文件系统中。通过用一个本地路径或 UNC 路径连接到该文件,或通过 HTTP 从一个虚拟目录调用该文件,即可将它作为 IBM Cognos BI 的数据源使用。

图 11:XML 转换应用程序架构图
图 11:XML 转换应用程序架构图

同样,此方法非常适合较大的数据集和基本数据相对静态时。数据可通过按预定的调度运行该脚本来刷新。

使用参数运行该脚本的语法为:

Windows

devWorksXMLDS <sourceXML> <xsltFile> <outputXML>

Unix/Linux

./devWorksXMLDS.sh <sourceXML> <xsltFile> <outputXML>

样例脚本提供了参数的默认值,但如果任何参数需要使用与默认值不同的值,则必须指定所有参数。

运行脚本后,会在指定的输出位置中出现一个 XML 文件,可将这个 XML 文件用作 IBM Cognos BI 的数据源。默认情况下,输出位置位于与 shell 脚本相同的位置。

图 12:Windows 资源管理器 – 显示生成的输出文件 devWorksXMLDS.xml
图 12:Windows 资源管理器 – 显示生成的输出文件 devWorksXMLDS.xml

此文件现在可通过文件系统连接到 IBM Cognos BI 数据源,如下所示:

图 13:New Data Source 向导 – 包含一个文件系统路径的连接字符串屏幕
图 13:New Data Source 向导 – 包含一个文件系统路径的连接字符串屏幕

完整的连接字符串读取:

C:\Program Files\cognos\c8\webapps\devWorksXMLDS\devWorksXMLDS.xml

再次提醒,推荐使用 UNC 路径,以为该文件可供多个 IBM Cognos BI 服务器访问。

如果 XML 文件在虚拟目录中(就像本例中一样),连接字符串应当如下所示:

图 14:New Data Source 向导 – 包含一个 URL 的连接字符串屏幕
图 14:New Data Source 向导 – 包含一个 URL 的连接字符串屏幕

完整的连接字符串读取:

http://localhost:9300/devWorksXMLDS/devWorksXMLDS.xml

“localhost” 应该替换为服务器名称或 IP 地址。

调用 JSP 通过 HTTP 传输 XML 数据

再次提醒,该方法通常在需要实时数据且对资源需求较少时使用。数据量应当保持在较小的范围,从而确保获得较高的性能。

提供的样例 devWorksXMLDS JSP 从 RSS 提要(同样来自 IBM developerWorks 站点)检索 XML,将 XML 转换为 IBM Cognos BI 可以使用的 XML,然后将它传输给 IBM Cognos BI。

图 15:XML 转换应用程序架构图
图 15:XML 转换应用程序架构图

在使用此方法时,不会存储任何数据。

用于调用 JSP 的 URL 为 http://<server>:<port>/devWorksXMLDS/devWorksXMLDS.jsp,其中 <server>:<port> 是部署 devWorksXMLDS Web 应用程序的应用服务器。在为 IBM Cognos BI 数据源配置 Connection String 属性时也将指定该 URL。

在本例中,部署到 Tomcat 的 JSP 的 URL 为 http://localhost:9300/devWorksXMLDS/devWorksXMLDS.jsp,其中 localhost 应替换为实际的服务器名称或 IP 地址。

要测试应用程序,可在 Web 浏览器中输入 URL。显示的结果将类似于下面的屏幕截图。

图 16:Web 浏览器显示了 devWorksXMLDS.jsp 应用程序返回的 XML 结果
图 16:Web 浏览器显示了 devWorksXMLDS.jsp 应用程序返回的 XML 结果

源数据和 XSLT 文件的位置在 JSP 中指定。变量 sXMLSrc 指定源 XML 数据的位置,而变量 sXSLTFile 指定了 XSLT 文件的位置。

现在,可以通过 IBM Cognos BI 数据源连接来连接到此页面,如下所示:

图 17:New Data Source 向导 – 连接字符串屏幕
图 17:New Data Source 向导 – 连接字符串屏幕

完整的连接字符串读取:

http://localhost:9300/devWorksXMLDS/devWorksXMLDS.jsp

结束语

使用本文档提供的步骤和样例代码,可以帮助您快速地将 XML 实现为 IBM Cognos BI 环境中的数据源。


下载

描述名字大小
本文的样例脚本Cognos_BI-XML_as_a_Data_Source.zip6KB

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=758271
ArticleTitle=IBM Cognos 最佳实践: IBM Cognos BI – 使用 XML 作为数据源
publish-date=09172012