cognos创建数据源
在过去的十年中,数十个行业组织定义了用于表示和交换数据的基于XML的格式。 这种格式的示例包括用于场外衍生产品交易的金融产品标记语言(FpML),医疗保健的健康等级7(HL7)和临床数据交换标准联盟(CDISC)规范,合作运营研究与开发协会(ACORD)保险规范,用于证券交易的金融信息交换标记语言(FIXML),用于银行支付的ISO 200022(有时称为“ UNIFI”)以及用于汽车制造的汽车零售标准(STAR) 。
结果,XML消息经常包含组织必须存储和管理以符合监管机构和内部标准的重要业务和交易数据。 此外,这些XML消息的内容通常提供有关内部流程,操作状态和客户偏好的重要信息。 因此,对XML数据的查询和报告对许多公司而言变得越来越重要。 本文探讨了两种方法,可以使用Cognos 8 BI和由DB2 pureXML管理的XML数据创建业务报告。
XML数据管理选项
管理XML数据的流行方法包括:
- 使用表的字符或二进制大对象(CLOB或BLOB)列将XML数据完整地存储在关系数据库管理系统(DBMS)中。
- 将XML数据“分解”或分解为多个部分,并将这些部分映射到关系DBMS中的表的各个列。 (使用这种方法,XML不会像XML一样完整地存储。)
- 在混合DBMS中以其本机分层格式存储XML。
三种方法都是可行的,并且三种方法都需要权衡取舍,这取决于所考虑的应用程序要求。
例如,大型对象提供了一种简单的数据建模方法,该方法可以保留原始XML数据的保真度,并允许通过简单SQL查询以直接的方式检索整个XML文档或消息。 但是,将XML存储为大对象会使搜索,更新和检索XML数据的子集的成本很高,因为DBMS无法理解其内部结构。
将XML分解为一个或多个表的多列,使用户可以查询和更新数据,而无需掌握任何专门技能,例如XML解析知识或文档导航技术。 另外,分解后的XML数据的特定部分的运行时查询和更新性能通常是可预测的。 这是因为XML数据实际上已经转换为另一种形式。 但是分解(或分解)过程通常涉及复杂的,劳动密集型的映射,随着XML消息格式随时间的变化而难以发展。 此外,查询分解后的XML数据可能会很困难,通常需要多表联接。
原生XML存储意味着完整地存储XML数据,并具有DBMS对数据内部层次结构的全部了解。 如果在关系型DBMS中内置了这种功能,则企业可以存储,共享,查询和更新存储在表中的现有数据以及以前仅包含在瞬态消息或平面文件中的XML数据。 此外,可以避免劳动强度大的文档分解和重建过程。 另外,由于对DBMS的XML技术有了更多的了解,因此某些性能优势和编程生产率的提高是可能的。 但是,这种方法受到IBM DB2 pureXML等有限数量的DBMS产品的支持,并且可能需要学习除简单SQL支持的表达式之外的其他查询语言表达式。
DB2 pureXML概述
DB2 9.5为公司提供了通用的应用程序编程接口和数据库管理平台,用于在表以及XML层次结构中建模的数据。 如图1所示,该体系结构使DB2能够支持前面描述的所有三个XML存储选项。 但是,其pureXML技术(有时也称为其本机XML支持)正越来越多地部署在各个公司中。 因此,这是本文的重点。
图1. DB2的体系结构提供了关系和XML数据管理支持
![DB2体系结构](https://i-blog.csdnimg.cn/blog_migrate/a8a31504ee31ed103bf0d733859bb18d.png)
尽管对DB2 pureXML功能的完整描述超出了本文的范围,但是DB2不能支持以行业标准SQL或XQuery语言编写的查询(以及同时包含SQL和XQuery表达式的“混合”查询),这毫无意义。 。 此外,对于需要将XML数据视为关系数据的应用程序,DB2使公司能够创建视图,以将XML动态转换为具有传统SQL数据类型的结果集。 的确,这是Cognos用户可以直接使用DB2 pureXML数据的一种方式,您很快就会看到。 有关DB2 pureXML的更多信息,请参见本文的“ 相关主题”部分。
Cognos 8 BI概述
IBM Cognos 8 BI使用单个面向服务的体系结构(SOA)提供了广泛的报告和分析功能。 Cognos 8 BI允许用户创建和共享报告,其中包含跨多个企业源的数据,使他们能够及时做出明智的业务决策。 本文将使用Cognos 8.3 BI进行测试。
Cognos 8 BI具有三层体系结构,如图2所示。表示层将报表交付到各种平台,应用层包含报表生成和管理所需的服务,数据层提供对范围广泛的报表的访问。数据源。
图2. Cognos 8 BI的三层架构
![Cognos架构](https://i-blog.csdnimg.cn/blog_migrate/62347d8e69cc9eea67d72bab0dffbaca.png)
Cognos 8 BI为业务和IT用户提供了几个关键功能,包括报告,分析,仪表板,计分卡和数据建模。 报告使用户能够使用可以在各种数据源上部署的各种预构建报告类型。 单个元数据层定义了可用作报告数据源的信息。 通过分析,可以指导探索与业务的多个维度有关的信息。 业务仪表板可快速传达复杂的信息,使用仪表,地图,图表和其他可同时显示多个结果的图形元素,将各种来源的数据转换为视觉效果丰富的演示文稿。 计分卡可帮助企业使团队和策略与战略保持一致,一致地传达目标并根据目标监控绩效。
本文重点介绍使用Cognos 8 BI Framework Manager进行数据建模,以及使用Report Studio进行基于DB2 pureXML数据的报表创建。
将Cognos 8 BI与DB2 pureXML一起使用
现在探索两个基本选项,这些基本选项用于根据DB2 pureXML中存储的数据生成Cognos报告。 这些包括:
- 将报告向导与XML数据的关系视图一起使用
- 通过XML数据编写基于SQL的查询
第一个选项最大程度地减少了Cognos用户理解查询语言表达的需求,并提供了一种简单直接的方法来处理存储为pureXML的数据。 因此,许多公司都赞成这种方法。 但是,此选项假定DB2管理员可以预期业务用户的XML数据访问需求。 这些知识对于创建报表所基于的视图是必需的。 此外,取决于XML数据量,视图的定义以及为报表生成的后续查询,可能会引起运行时性能问题。
如果难以访问需要访问的XML数据,则第二个选项可能很有用。 此外,已经熟悉SQL / XML的IT专业人员可能会发现直接为复杂方案编写查询很方便。 例如,他们可能希望使用复杂的查询原型,并使用现成的DB2工具(例如IBM Data Studio或DB2 Control Center)调查其运行时性能特征。 对结果满意后,他们可以简单地将生成SQL / XML语句剪切并粘贴到适当的Cognos工具中。
将使用Cognos 8 BI Framework Manager进行数据建模,使用Cognos 8 BI Report Studio进行报表创建以及使用DB2 9.5 pureXML进行数据管理来探索这两种技术。
样本数据库概述
为了使这些示例变得现实,使用了一个示例数据库,其中包含基于XML架构的FpML(衍生产品交易)信息以及国际掉期和衍生产品协会(ISDA)提供的示例数据。 IBM为DB2提供了许多免费的,特定于行业的软件包,包括FpML 4.2软件包。 本文使用此FpML捆绑包创建的数据库。 (要下载此捆绑包,请参阅“ 下载”部分。)
您将学习如何基于包含关系和XML数据的单个表创建报告。 该表FPMLADMIN.FPML的定义如清单1所示:
清单1.样本FPML表的定义
create table fpmladmin.FPML(
productID varchar(50),
conversationID varchar(50),
messageID varchar(50),
document XML)
注意 :此表中的“文档”列的类型为“ XML”。 这使DB2以其本机分层格式存储XML数据。
FpML数据通常是大量嵌套的,并且可能非常复杂。 但是,您无需成为专家即可学习如何报告FpML数据(或其他类型的XML数据)。 本文生成的报告基于某种类型的FpML数据(特别是与信用衍生产品有关的数据),并且为了简化起见而设计为仅与FpML贸易记录的特定部分一起使用。
图3使用IBM Data Studio(一个免费提供的数据库开发工具)部分显示了一个示例FpML文档。 有关Data Studio的更多信息,请参考本文的下载部分。 该相同文档的图形表示如图4所示。 有些人发现后者更容易阅读。 (您还可以使用“ DB2控制中心”来显示存储在DB2中的XML数据。)
图3.存储在DB2中并显示在Data Studio中的部分FpML文档
图4.存储在DB2中并与Data Studio一起显示的FpML文档的部分图形(树)视图
报告XML数据的关系视图
如前所述,DB2使公司可以对存储在XML列中的分层数据创建关系视图。 为此,管理员可以编写一个SQL / XML查询作为视图定义。 该查询将一个或多个XPath表达式的输出映射到关系结果集中的一个或多个列。 (XPath表达式必须标识XML数据的一部分(即特定的XML节点),该部分返回一个数据值。) XMLTable()
函数提供了一种直接的方法。
如果您还不熟悉SQL / XML,XPath表达式或XMLTable()
,请参阅“ 相关主题”部分。
步骤1:创建DB2视图
下面的语句创建本文中使用的FPMLADMIN.CREDITV视图。 这是一个关系视图,其中包含有关信用违约掉期衍生工具的信息,这些信息涉及某些已知实体未能付款。 此类衍生数据在FPMLADMIN.FPML表中捕获的贸易数据中。 请注意,CREDITV视图包含代表交易日期,信用掉期中引用的实体,掉期涉及的双方,发生“支付失败”事件时所涉及的金额以及该货币的货币的列钱。
清单2.示例DB2视图的定义
create view fpmladmin.creditv
tradeDate, entityName, party1, party2, amount, currency) as
select t.* from fpmladmin.fpml,
xmltable(XMLNAMESPACES(DEFAULT 'http://www.fpml.org/2005/FpML-4-2'),
'$DOCUMENT/FpML'
columns
tradeDate date path 'trade/tradeHeader/tradeDate',
entityName varchar(80) path
'trade/creditDefaultSwap/generalTerms/referenceInformation/referenceEntity/entityName',
party1 varchar(80) path 'party[1]/partyName',
party2 varchar(80) path 'party[2]/partyName',
amount varchar(30) path
'trade/creditDefaultSwap/protectionTerms/creditEvents/failureToPay
/paymentRequirement/amount',
currency varchar(10) path
'trade/creditDefaultSwap/protectionTerms/creditEvents/failureToPay
/paymentRequirement/currency'
)
as t
where productid like 'credit%'
and
xmlexists ('declare default element namespace "http://www.fpml.org/2005/FpML-4-2";
$DOCUMENT/FpML/trade/creditDefaultSwap/protectionTerms
/creditEvents/failureToPay/paymentRequirement')
and
xmlexists ('declare default element namespace "http://www.fpml.org/2005/FpML-4-2";
$DOCUMENT/FpML/trade/creditDefaultSwap/generalTerms
/referenceInformation/referenceEntity/entityName')%
本文的下载部分提供了用于创建此视图的脚本。
步骤2:为DB2定义Cognos 8 BI元数据
安装和配置IBM Cognos 8 BI的数据建模和报告功能后,请执行以下步骤为您的工作定义适当的元数据。
- 启动Framework Manager工具。
- 选择创建一个新项目 。 为项目命名,然后单击“ 确定” 。
- 选择一种语言,然后单击确定 。
- 对于元数据源,选择数据源 ,然后单击下一步 。
- 单击“ 新建”创建一个新的数据源。 单击“ 下一步” ,然后为您的数据源提供一个名称(例如“ FPML”),然后单击“ 下一步” 。
- 将DB2指定为数据源类型,然后单击Next 。
- 输入DB2数据库名称( FPML ),以及该数据库的有效用户ID和密码。
- 测试连接以确保您正确输入了所有内容。 成功建立连接后,点击完成 。
- 在“数据源”窗口中,选择新创建的数据源,然后单击“ 下一步” 。
- 选择所有要导入的对象,单击“ 下一步” ,然后单击“ 导入” 。 等待所有对象成功导入,然后单击“ 完成” 。 现在,您已经为此项目定义了适当的元数据(或数据模型)。 此时,将带您到Framework Manager主页(请参见图5)。
图5. Cognos 8 Framework Manager主页
步骤3:创建查询主题
在Framework Manager的主页上,您可以创建一个查询主题来定义报告的内容。 为此,请执行以下步骤:
- 右键单击刚创建的FPML数据模型,然后选择创建>查询主题 。
- 在左窗格中,展开FPML和CREDITV。 双击所有列,它们应出现在右窗格中(请参见图6)。 这将创建一个查询,该查询从DB2视图中选择所有内容(在SQL中,可以表示为
SELECT * from FPMLADMIN.CREDITV
)。 - 在“测试”选项卡中,选择“ 测试样品” 。 查询已执行,您将看到类似于图7的输出。
- 选择确定以保存查询。
图6.查询定义窗口
图7.查询测试窗口
![测试查询](https://i-blog.csdnimg.cn/blog_migrate/11e0d9a38c188c2ecf1d89d00201f9be.png)
值得注意的是,此示例使用了非常基本的查询。 使用标准的Cognos功能,您可以在此视图上创建更复杂的查询,以根据需要过滤出特定的数据列和数据行。
步骤4:创建和发布程序包
现在,您可以创建和发布程序包,以便可以在Report Studio中创建报表。
- 如有必要,启动Framework Manager主页。
- 在左侧树结构的底部,右键单击Packages ,然后选择Create> Package 。
- 为项目命名,然后单击“ 下一步” 。
- 指定包的内容将包括您创建的查询,FPML数据模型和CREDITV视图。 为此,请检查列表中提供的选项,并确保选择了适当的项目。 取消选择其他所有内容(请参见图8)。 单击下一步 。
- 将除DB2之外的所有功能集移至左窗格,然后单击Finish 。 当询问您是否要打开“发布向导”时,选择“ 是” 。 单击下一步 ,然后单击下一步 ,然后单击完成。 您需要发布一个程序包以使元数据可供用户使用,然后用户将在其他Cognos工具中使用该程序包来创建报告。
图8.包定义窗口
至此,该包已创建完毕,您可以使用它来创建报告了。
步骤5:根据您的包裹创建报告
本节向您展示如何创建一个非常简单的列表报告。 一旦在Framework Manager中创建了元数据并发布了程序包,就可以以更加复杂和有趣的方式使用数据。
要开始创建报告,必须启动Cognos 8 BI Report Studio。 在Windows中,可以通过从Windows“开始”菜单中选择“ Cognos 8 BI”菜单项来实现。 Web浏览器中会出现一个欢迎网页(请参见图9)。
图9. Cognos 8 BI欢迎网页
要生成报告,请完成以下步骤:
- 单击创建专业报告以启动Report Studio。
- 选择“ 创建新报告或模板”,然后指定要创建“ 列表 ”类型的报告。
- 在左窗格的树结构中展开查询。 选择所有列,然后将它们拖到主窗格中。
- 双击标题可为您的报告添加新标题。
- 在菜单栏中,选择运行 。 指定您要运行报表?? HTML 。 您应该看到类似于图10所示的报告。
图10.在Report Studio中创建的报告
如前所述,Cognos 8 BI Report Studio提供了各种内置的报告类型,并能够根据需要自定义任何特定报告的内容。 此类功能可应用于关系视图,包括基于基础pureXML数据构建的视图。 这里仅包括一个非常简单的报告示例。 要了解有关Cognos 8 BI Report Studio功能的更多信息,请参阅“ 相关主题”部分。
报告由SQL / XML查询返回的结果集
对于使用视图不合适或不切实际的情况,公司可以指示Cognos直接基于SQL / XML查询生成报告。
由于您正在查询中使用Cognos SQL中不可用的关键字,因此必须在“查询选项”页面上选择“本机”或“ 直通”SQL类型。 (您将很快学习如何执行此操作。)这两种方法都可以使用,但是建议您使用Native,因为Framework Manager可以自动优化性能。 使用直通时不会进行优化。 有关使用SQL类型的更多信息,请参见“ Framework Manager用户指南”,可通过本文的“ 相关主题”部分进行访问。
基于SQL / XML查询创建报表所需的几个初始任务与前面示例中描述的任务相同。 特别是,您仍然需要为DB2 创建Cognos 8 BI元数据 。 假设您已经完成了此操作,请按照下面概述的步骤使用DB2 SQL / XML查询创建Cognos报表。
步骤1:建立查询
此示例的查询创建过程与以前的方案有些不同,因为您将手动输入SQL / XML查询,而不是依靠Cognos代表您在后台生成查询。 因此,您需要设置一个数据库属性来控制如何在内部处理查询。 然后,您可以输入查询本身。 以下步骤指导您完成这两项任务:
- 在Cognos 8 BI Framework Manager中,在左窗格的树结构中展开“ 数据源 ”,然后选择DB2数据源。
- 检查Framework Manager窗口底部的属性窗格,然后将Query Processing参数更改为Limited Local 。
- 现在创建另一个查询。 右键单击树结构中的数据模型,然后选择创建>查询主题 。
- 选择数据源(手动构建SQL查询) ,为查询指定名称,然后点击确定 。
- 选择数据源,然后取消选中“运行数据库查询主题向导” ,然后单击“ 完成”。
- 在SQL选项卡下,手动输入所需SQL / XML查询,如图11所示。
图11.查询定义窗口
现在,您可以通过完成以下步骤来测试刚刚定义的查询:
- 在“测试”选项卡的右下角,单击“ 选项” 。 对于Type字段,选择Native ,然后单击OK (见图12)。
- 单击Test Sample ,然后将显示查询结果(请参见图13)。
图12.查询选项窗口
图13.查询测试结果窗口
此时,您可能想知道应该输入哪种查询类型。 对于图11所示的工作,使用了下面的查询,该查询包含在脚本中,您可以在本文的“ 下载”部分中找到该脚本。 该查询有些复杂,但是提供了一个现实的示例,说明有人如何返回XML数据的多个部分(例如,多个XML节点)并基于XML谓词限制结果。 特别是,此查询返回与所有信用违约掉期衍生工具相关的交易ID的文本值,其中“ Amcor Ltd”或“ Abbey National PLC”是所引用的实体。
清单3.示例SQL / XML查询
select xmlserialize(content
xmlquery('declare default element namespace
"http://www.fpml.org/2005/FpML-4-2";
$fpml/FpML/trade/tradeHeader/partyTradeIdentifier[1]/tradeId/text()'
passing document as "fpml") as varchar(25) ) tradeID1,
xmlserialize(content
xmlquery('declare default element namespace
"http://www.fpml.org/2005/FpML-4-2";
$fpml/FpML/trade/tradeHeader/partyTradeIdentifier[2]/tradeId/text()'
passing document as "fpml") as varchar(25) ) tradeID2
from fpmladmin.fpml
where xmlexists('declare default element namespace
"http://www.fpml.org/2005/FpML-4-2";
$fpml/FpML/trade/creditDefaultSwap/generalTerms
/referenceInformation/referenceEntity[entityName="Amcor Ltd" or "Abbey National PLC"]'
passing document as "fpml"
)
注:此查询的第一行调用XMLSerialize()
函数,该函数指示DB2返回XML数据的序列化字符串版本。 某些工具(例如Cognos 8 BI)要求将XML序列化以进行处理。 (有关XML序列化的更多信息,请参见参考资料 。)
步骤2:创建和发布程序包
创建查询后,下一步就是按照前面部分中创建和发布程序包步骤中描述的相同基本过程来创建和发布程序包 。
- 如有必要,启动Framework Manager主页。
- 在左侧树结构的底部,右键单击Packages并选择Create> Package 。
- 为项目命名,然后单击“ 下一步” 。
- 指定包的内容将包括您创建的查询和FPML数据模型。 为此,请检查列表中提供的选项,并确保选择了适当的项目。 取消选择其他所有内容。 单击下一步 。
- 将除DB2之外的所有功能集移至左窗格,然后单击Finish 。 当询问您是否要打开“发布向导”时,选择“ 是” 。 单击“ 下一步” ,然后单击“ 下一步” ,然后单击“ 完成” 。 现在,打包文件已发布,您将可以在其他Cognos 8 BI工具中访问它。
步骤3:建立报告
- 启动Report Studio。
- 单击您创建的包。
- 选择“ 创建新报告或模板” ,然后指定要创建“ 列表 ”类型的报告。
- 在左窗格的树结构中展开查询。 选择所有列,然后将它们拖到主窗格中。
- 双击标题可为您的报告添加新标题。
- 在菜单栏中,选择运行 。 指定您要运行报表?? HTML 。 您应该看到类似于图14所示的报告。
图14.来自SQL / XML查询的Cognos 8 BI报告
摘要
可以使用流行的软件产品以多种方式来创建基于XML数据的业务报告。 在本文中,您学习了两种使用Cognos 8 BI通过DB2 pureXML数据创建报告的技术。 其中包括视图的使用和SQL / XML查询的执行。 要了解有关Cognos 8 BI或DB2 pureXML的更多信息,请查看参考资料小节中引用的材料。
致谢
作者要感谢Nigel Campbell和Matthias Nicola对本文的审阅。
翻译自: https://www.ibm.com/developerworks/data/library/techarticle/dm-0811saracco/index.html
cognos创建数据源