| 免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版 |
|---|
| 下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。 |
各组织都需要以报表的形式呈示数据来帮助他们制定决策。由于每个组织都有大量的复杂数据,因此将这些数据以一种高效且有效的报表形式表示出来的过程十分关键。这些数据需要以一种有效的方式进行组织、建模和表示。使用 IBM Cognos 业务智能工具和 IBM DB2 数据库就可以实现此目的。
本文将帮助您理解所有的这些概念,从使用 DB2 创建数据、使用 Framework Manager 完成数据建模、数据元数据导入/导出,到使用诸如 Report Studio 这样的 IBM Cognos 业务智能工具创建 Cognos 框架和情报报表。本文将会让您能够使用 Cognos 和 DB2 这二者开发您自己的情报应用程序和报表,否则那将是一个非常复杂的过程。
使用 IBM DB2 创建 Cognos BI 报表涉及如下五个主要过程。
- 创建一个 DB2 数据库
- 将 DB2 数据库元数据导出到 Framework Manager
- 在 Framework Manager 中进行维度建模
- 创建 Cognos 包并将其发布到 Cognos Connection
- 使用 Cognos 业务智能工具设计报表
本文使用如下软件
- IBM Cognos Express v9.0.0
- IBM Cognos Express Framework Manager
- IBM DB2 V9.1
IBM Cognos Express 是一个具有集成报表和分析模块的业务智能解决方案。它是一个易于安装和使用的预配置 BI 解决方案。IBM DB2 V9.1 Enterprise Server 版数据库一直被用作内容仓库。IBM Cognos Express 和 IBM DB2 均安装于一台 Microsoft Windows 机器上。
数据是一个业务智能报表的构建块。在本文中,您将使用 Cognos Express Manager 并以 DB2 作为数据的内容仓库。这个 DB2 数据库可用来构建 Cognos 业务智能报表。
您还将看到一个公司的示例,该公司在不同的地域销售不同类型的产品。其 Cognos 报表将基于公司的产品、地域以及营业年度显示该公司的收入趋势。
请注意,此数据库已进行了简化以便使本文更为简单易懂。在实际场景中,此数据库应该复杂得多。
表 1. BRANDS 表存储了有关公司品牌的数据
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| BRAND ID | BIG INT | PRIMARY KEY | |
| BRAND NAME | VARCHAR |
比如,有 Personal Care、Household Care 和 Food & Beverages 品牌。
表 2. CATEGORY 表存储此公司每个品牌下各个类别的数据
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| CATEGORY ID | BIG INT | PRIMARY KEY | |
| CATEGORY NAME | VARCHAR | ||
| BRAND ID | BIG INT | FOREIGN KEY | 引用了 Brands 表的 BRAND ID 列 |
比如,在 Personal Care 品牌下,有 Cosmetics、Hair Care、Skin Care 等产品类别。
表 3. PRODUCTS 表存储公司每个类别下的产品信息
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| PRODUCT ID | BIG INT | PRIMARY KEY | |
| PRODUCT NAME | VARCHAR | ||
| CATEGORY ID | BIG INT | FOREIGN KEY | 引用了 CATEGORY 表的 CATEGORY ID 列 |
比如,在 Cosmetics 产品类别下,有 Product 1、 Product 2 等产品。
表 4. REGION 表显示了公司的各运营地区的信息
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| REGION ID | BIG INT | PRIMARY KEY | |
| REGION NAME | VARCHAR |
比如,有 Asia Pacific、Americas、Europe 等地区。
表 5. COUNTRY 表存储了公司每个运营地区下的各个不同国家的数据
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| COUNTRY ID | BIG INT | PRIMARY KEY | |
| COUNTRY NAME | VARCHAR | ||
| REGION ID | BIG INT | FOREIGN KEY | 引用了 REGION 表的 REGION ID 列 |
比如,在 Asia Pacific 地区下,有 INDIA、CHINA 等国家。同样地,在 Americas 地区下,有US 和 MEXICO 国家。
表 6. YEAR 表存储公司营业年度的年数据
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| YEAR ID | BIG INT | PRIMARY KEY | |
| YEAR | VARCHAR |
比如,有 2009 和 2010 年度。
表 7. QUARTER 表存储公司每个营运年度的季度数据。
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| QUARTER ID | BIG INT | PRIMARY KEY | |
| QUARTER | VARCHAR | ||
| YEAR ID | BIG INT | FOREIGN KEY | 引用 YEAR 表的 YEAR ID 列 |
比如,在 2009 年度下,有 Jan-Mar 和 Apr-Jun 两个季度。同样地,在 2010 年度下,有 Apr-June 和 July-Sept 两个季度。
表 8. MONTH 表存储公司的每个营运季度的月份数据
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| MONTH ID | BIG INT | PRIMARY KEY | |
| MONTH | VARCHAR | ||
| QUARTER ID | BIG INT | FOREIGN KEY | 引用 QUARTER 表的 QUARTER ID 列 |
比如,在 Jan-Mar 季度下,有 Jan 和 Feb 月份。同样地,在 Jul-Sep 季度下,有 Aug 和 Sep 月份。
表 9. REVENUE 表存储某月在某个国家销售一个产品所获得的收入
| 列 | 列的类型 | 约束 | 备注 |
|---|---|---|---|
| PRODUCT ID | BIG INT | FOREIGN KEY | 引用 PRODUCT 表的 PRODUCT ID 列 |
| COUNTRY ID | BIG INT | FOREIGN KEY | 引用 COUNTRY 表的COUNTRY ID 列 |
| MONTH ID | BIG INT | FOREIGN KEY | 引用 MONTH 表的 MONTH ID 列 |
| VARCHAR | BIG INT |
比如,公司于 2009 年 1 月在印度销售 Product 1 获利 40000。
此数据库中的 Foreign Key 关系也可以在 Framework Manager 中设计。如果这些 Foreign Key 关系在数据库中创建,那么当此数据库被导入 Framework Manager 时,就会自动创建这些关系。但是如果这些关系不是在此数据库中创建的,则可以在 Framework Manager 中创建它们。
为了了解如何在 Framework Manager 中创建关系,选择不在此数据库中创建 Foreign Key 关系。而是在 Framework Manager 中创建这些关系。
将 DB2 数据库元数据导出到 Framework Manager
Framework Manager 是元数据建模工具,可用来创建数据中的关系、维度等并随后将这些建模了的数据发布到 Cognos Frameworks。为了执行元数据建模,之前创建的元数据数据库需要被导入到 Framework Manager。
这涉及了如下两个过程:
- 在 Cognos 中为 DB2 数据库创建数据源
- 使用所创建的数据源导出元数据
- 打开 Framework Manager 并选择 Create New Project。为该 Framework Manager 项目指定项目名称。单击
Next 并选择 Metadata 向导上的 Data Sources 选项,如图 1 所示。
图 1. Select Metadata Source 向导
- 在 Select Data Source 页,列出了所有可用的数据源。由于您尚未创建一个数据源,因此屏幕是空的。为了创建一个新的数据源,单击
New 按钮,如图 2 所示。
图 2. 选择新数据源
- New data source 页让您可以为您在 DB2 上创建的这个数据库创建数据源。输入想要创建的数据源的名称并单击 Next。比如,图 3 显示了为此数据源指定名称为
Cognos_DB。
图 3. 输入数据源的名称
- 从 Type 下拉列表中,选择 DB2,如图 4 所示。
图 4. 指定连接类型
- 输入所有必需的通信细节,比如 DB2 数据库名称、连接字符串、连接到此数据库所需的用户 ID 和密码,如图 5 所示。
图 5. 指定连接参数
- 单击 Test Connection 测试与此数据库的连接是否成功。连接状态消息应该显示为
Succeeded,如图 6 所示。
图 6. 测试连接状态
- 单击 Finish 创建此数据源。Cognos_DB 数据源已经为此 DB2 数据库创建完毕。
- 当数据源创建完毕后,数据源的名称就会显示在 Framework
Manager 的 Select Data Source 向导中,如图 7 所示。
图 7. 选择数据源
选择此数据源并单击 Next。 - 接受默认设置并单击 Import 来将数据的元数据从 DB2 数据库导入到 Framework
Manager,如图 8 所示。
图 8. 导入元数据
- 元数据导入后,会打开 Framework Manager 项目,如图 9 所示。
图 9. Framework Manager 项目
- 双击 COGNOS_DB 图表来查看所导入的表,如图 10 所示。
图 10. 所导入的表
Framework Manager 是一个元数据建模工具,可用来管理分析和报表用的数据。在这个过程中,需要在 Framework Manager 中对所导入的元数据进行维度建模。在维度建模,数据存储在两种表中。一种是 Dimension 表,一种是 Fact 表。Fact 表包含业务的衡量指标(比如本例中的 Revenue),而 Dimension 表则包含计算衡量指标所基于的维度(比如 Products、Regions 和 Year)。这些数据随后会以等级形式呈现,以便您可以预先对某个等级有一个概览,然后可在这个等级向下或向上钻取来掌握该等级的各层次的细节分析。
比如,Year 可以是其中的一个等级,其下又有特定的 Quarter 和 Month 作为层次。您可以基于按年生成的数据对此报表进行分析,然后可从年度数据向下钻到季度,然后再从季度数据到月份数据,来获得更为详细的分析。
首先,需要在 Framework Manager 中创建不同查询主题之间的关系。您将创建与 Foreign Key 约束在数据库中创建时所创建的相同的关系。如果此 Foreign Key 已经在数据库中创建好了,那么这些关系将会由 Framework Manager 在导入时自动创建。如果此数据库不具备 Foreign Key 约束,那么就可以在 Framework Manager 中就创建这样的关系。
在 Framework Manager 中创建查询主题之间的关系
- 要创建一个关系,双击此查询主题并选择
Create,然后选择
Relationship,如图 11 所示。
图 11. 创建查询主题之间的关系
- 指定 Category 查询主题与另外一个查询主题,比如 Brands,之间的关系。如图 12 所示,基于两个表的 Brand ID 创建 Category 与 Brands 间的关系。
图 12. 关系定义
- 当单击 OK 时,这两个查询主题之间的关系就创建好了。这个关系显示了 Brands 具有一个或多个类别,并且每个类别均有惟一的一个 Brand,如图 13 所示。
图 13. 所创建的关系
- 同样地,创建其余查询主题之间的关系,如图 14 所示。
图 14. 所创建的全部关系
至此,不同查询主题之间的关系就创建完毕了。请注意,此关系与数据库中设计的 Foreign Key 约束是相同的。所以,如果在数据库设计和导入之时就创建了此 Foreign Key 关系,那么这些关系将会由 Framework Manager 自动创建。
这是 Star Schema 的一种最简单的示例,其中 Revenue(即 Fact 表)引用 Product、Month 和 Country 表(维度表)。Cognos 报表将基于这个 Star Schema 开发。
在创建了关系后,需要在 Framework Manager 的 Dimension Map 中指定维度和测度。
- 单击 Framework Manager 项目窗口的 Dimensions Map 选项卡,如图 15 所示。由于您尚未创建任何的维度和测度,因此为此 DB2 数据库所导入的数据就会列在 Framework Manager Project 的左上侧。使用此数据,就可以创建维度和测度。
图 15. Dimension map
- 将 Brands 字段从
Cognos_Project 下的 COGNOS_DB 拖放到
Dimensions 视图下。这将为 Brands 创建一个新的维度,如图 16 所示。
图 16. 在 Framework Manager 中创建维度
- 创建了 Brands 维度后,就可以将 Category
Name 字段从 COGNOS_DB 拖放到 Dimensions 视图的 Brands 维度下,如图
17 所示。
图 17. 在 Framework Manager 中的等级内创建一个层次
- 同样地,将 Product Name 从
Project Viewer 拖拉到
Category_Name 下。将此维度的名称指定为 ALL PRODUCTS。最后的输出如图
18 所示,其中创建好的维度
ALL PRODUCTS包括了公司的 BRANDS。从 BRANDS,可以向下钻取到此报表中 Brands 的 PRODUCT 类别。从 PRODUCT 类别,可以向下钻取到此报表中的实际 Products。
图 18. 在 Framework Manager 中的等级内创建一个层次
- 现在,已创建完了一个名为 ALL PRODUCTS 的维度。使用同样的技术,再创建两个维度,名称分别为 TIME 和 REGIONS,如图 19 所示。
图 19. 在 Framework Manager 中创建其他维度
- 至此,已经创建了三个名字分别为
ALL PRODUCTS、TIME和REGIONS的维度。现在,创建Measures。在本例中,Revenue 是惟一一个测度,所以将 Revenue 从 COGNOS_DB 拖放至 Measures 选项卡的右上角,如图 20 所示。
图 20. 在 Framework Manager 中创建测度
至此就完成了我们的数据的维度建模。Cognos 将使用这些维度和测度来设计报表。
下一个步骤是创建包并将其发布到 Cognos Frameworks 以便该报表可使用此包设计。
创建 Cognos 包并将其发布到 Cognos Connection
创建了维度建模后,现在将其发布到 Cognos Framework 来设计报表。为此,需要在 Framework Manager 中创建此包。
- 在 Project Viewer 中右键单击这个包并选择 Create
Package。键入 Cognos_Package 作为包的名称,如图 21 所示。
图 21. 在 Framework Manager 中创建包
- 选择想要包括进此包的对象。将此包发布到 Cognos Framework 后,就可以用这些对象来设计此报表。由于已经创建好了维度和测度,所以无需发布查询主题,只需要选择已经创建了的维度和测度并将它们包括到此包中,如图 22 所示。
图 22. 定义对象
- 成功创建包后,单击 Yes
来发布此包,如图 23 所示。
图 23. 所创建的包
- 在 Publish Package 向导中,接受包在内容仓库中的默认位置,如图 24 所示,当然,您也可以自己提供一个位置。
图 24. 发布包向导
- 单击 Publish 在特定位置处发布这个包,如图 25 所示。
图 25. 所发布的包
您现在可以使用 Report Studio 创建一个 BI 报表。
- 导航至 Cognos 主页,如图 26 所示,该主页可用来管理所有与 Cognos 相关的任务。
图 26. Cognos 主页
- 从 Cognos 主页,选择 Create Professional Reports
with Report Studio 来为该公司创建 BI 报表。导航至包的发布位置并单击包的名称,如图 27 所示。可以用 Report Studio 的主页为该公司创建 BI 报表。除了 Report Studio,Cognos 外,还有 Query
Studio 和 Analysis Studio 也可用于报表设计。本文使用了 Report Studio。
图 27. 选择 Cognos 包
- 单击 Create a new report or template,如
图 28 所示。
图 28. 创建一个新报表
- 在图 29 所显示的这个窗口就可以进行报表设计。在左侧 Insertable
Objects 下,分别列有三个维度和测度,可用来创建此报表。
图 29. Cognos Report Studio
- 单击 Table 并插入一个具有两行和两列的表。表创建后,就可以开始为报表创建图表了。从 Insertable Objects,将
Chart 从列表拖放到其中一个列。从 Chart 组选择 Column 选项并选择其中任何一个列图表,如图 30 所示。
图 30. 在 Report Studio 中创建图表
- 将 Regions 从 Insertable Objects
拖放到 Categories(x-axis) 下。同样地,将
Brands 拖放到 Series 下。将 Revenue 拖放到默认的
Measures(y-axis) 下。这就设计完了公司在不同地区销售的所有产品的 Revenue Report 图表,如图 31 所示。
图 31. Cognos Report Studio
- 单击 Data 并选择 Drill
behavior,来指定该报表可基于维度建模的结构被向下钻取,如图 32 所示。
图 32. Report Studio 中的 Drill Behavior
- 选择 Allow drill-up and drill-down 选项并单击 OK,如图 33 所示。利用这个选项可使报表在一个维度内向下和向上钻取。比如,在 Regions Dimension 中,就可以从 Regions 向下钻取到 Countries,从 Asia Pacific 地区向下钻取到 India、 Brazil、China 等。
图 33. 在 Report Studio 中启用向下和向上钻取
- 运行此报表以查看类似于图 34 所示的图表。
图 34. Cognos Report Viewer
- 向下钻取该报表以获得更详细的分析。比如,如图 35 所示,可以在 Regions 和
Brands 处向下钻取以获得更为详细的分析。现在,这个报表显示了公司不同品牌在所有地区的销售收入。
图 35. Cognos 报表显示所有品牌在所有地区销售收入
- 单击 Regions 来查看能显示不同品牌在不同地区销售收入的报表,如图 36 所示。
图 36. 能显示所有品牌在不同地区的销售收入的报表
- 单击 Asia Pacific Region 向下钻取以显示不同品牌在亚太地区的销售收入,如图 37 所示。
图 37. 显示不同品牌在亚太地区的销售收入
- 单击 HOUSEHOLD CARE 查看 Household Care 产品在亚太国家的销售收入,如图 38 所示。
图 38. 显示 Household Care 产品在亚太国家的销售收入的报表
- 您可以在 Report Studio 中创建类似于 图 39 所示的报表。
图 39. Report Studio
- 最终的报表如图 40 所示。
图 40. 最终报表
- 若单击每个图表以获取更为详细的分析,那么就会向下钻取该报表,如图 41 所示。
图 41. 向下钻取后的报表
- 如果再进一步向下钻取,此报表将类似于图
42。
图 42. 在最终报表内继续向下钻取
本文展示了如何使用 Cognos 业务智能工具与 DB2 数据库来生成复杂的业务智能报表。阅读本文后,读者应该能够了解如何在 Cognos Frameworks 中创建数据库的数据源、如何倒导入数据库的元数据、如何在 Framework Manager 中进行维度建模,以及如何使用 Report Studio 设计最终报表。本文还可以让读者以同样简单的方式快速开发自己的 Cognos 业务报表。
学习
- 了解 IBM Cognos Business
Intelligence 的查询和报表功能。
- 观看该 演示 了解更多有关 IBM
Cognos Express 的内容。
- 阅读这篇 developerWorks 文章 Generate Cognos Reports using InfoSphere Warehouse Cubes 以了解如何使用 InfoSphere Warehouse 数据模型开发 Cognos 业务智能报表。
- 访问 Cognos 产品专题,获取 Cognos 资源并提高您的 Cognos 技能。
- 在 developerWorks 中国网站 Information Management 专区 了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
- 在 Twitter 上关注 developerWorks。
- 观看 developerWorks 演示中心,包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
获得产品和技术
- 下载 IBM 软件下载:IBM Cognos Express 的免费版本。
- 下载 试用版:IBM DB2 for Linux, UNIX, and Windows 的免费试用版本。
- 用可直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目,或者在 IBM SOA 人员沙箱 中花费几个小时来学习如何高效实现面向服务架构。
讨论
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和 wikis,并与其他 developerWorks 用户交流。
- 参加 DB2 讨论论坛。
- 参加 Cognos Express 讨论论坛。
- 参与 developerWorks 博客 并加入 developerWorks 中文社区。

