内容


结合使用 Cognos 8 BI 与 Rational Portfolio Manager

Comments

开始之前

IBM® Rational® Portfolio Manager Open Data Access 特性会帮助您从 Rational Portfolio Manager 处提取、转化和载入(ETL)数据到第三个规范表格(3NF)阶段数据库模型中。结果是一个数据区域,它改进了参考性的整数并消除了数据的冗余性。这使得创建报告变得更加容易。

这篇指南提供了一个简单的场景,它演示了怎样使用 IBM® Cognos® 8 Business Intelligence 软件套装与 Rational Open Data Access,来创建报告。

前提条件

为了让本文中的练习尽可能地顺利,您需要安装并配置以下的这些软件 :

  • DB2 上的 IBM Rational Portfolio Manager (客户端,连接件,数据库)
  • DB2 v9.5 上的 IBM Rational Portfolio Manager 开发数据访问
  • IBM Cognos 8.3 Business Intelligence
    • IBM Cognos 8 BI Server
    • IBM Cognos 8 BI Data Manager
    • IBM Cognos 8 BI Framework Manager
    • IBM Cognos 8 BI Reporting

您将会学到什么

这篇指南显示了以下任务的基础:

  • 使用 Data Manager 来从 Rational Open Data Access 数据库引入数据,并将其组织到一个方案中去。
  • 使用 Framework Manager 来为元数据建模
  • 使用 Cognos Report Studio 来创建基于公布元数据的简单报告(见于 图 1)。
  • 在 Framework Manager 中创建一个二维的模型以及一个报告。
图 1. 范例报告
显示项目信息的报告
显示项目信息的报告

它可能需要单独的指南,以描述怎样适当地创建 Data Manager 中的 ETL 以及 Framework Manager 中的元数据模型,以及其他的一些选项。因此,这篇指南没有进一步讨论 Cognos 文献中所涉及到的内容。相反,它只是描述了主要的步骤,以及构建它们所需要的元素。如果您想要得到更多关于 Data Manager 与 Framework Manager 的信息,您可以查看用户指导文献。

Star 方案

设计一个星形方案有很多种方法,因为结果取决于您的报告需要。为了让事情尽可能的简单,这篇指南只显示了怎样创建需要的表格以构建简单的报告,如 图 1 所示。我们省略了 General Health 星形方案的其他表格。

本例中所构造的实际表是 SCOPE_HEALTH,它包含了关于范围元素,例如缺陷的总体数量、解决缺陷的数量等等之类的定量信息。

构造的表格是 PROJECT_DIM,它包含了像名字、状态、并发性等等之类的项目信息。

图 2 显示了这些表格的设计。

图 2. 范例数据库方案
 联系到 Project 表格的 Scope 健康实际表
联系到 Project 表格的 Scope 健康实际表

注意:
对于 PROJECT_DIM 表格,描述性字段(DESC_FIELD_COLUMN_IDXX 与 DESC_FIELD_VALUEXX)的数量实际上达到 20,但是在本文中却得到了简化。

从分期到数据仓库方案提取、转化和载入

Data Manager 提供了一种图形化的界面,来帮助您简化数据仓库与 ETL 任务的创建工作。它还提供了验证与参考性的整数检查机制,这样在数据载入到数据仓库中之前就能得到识别和解决。

为了生成 图 2 中所示的方案,您需要在 Data Manager 目录中生成以下的内容:

  • 项目引用范围
  • 项目范围构建
  • 范围安全性实际构建

图 3 描述了目录结构会是什么样子的。

图 3. Data Manager 目录结构
 Data Manager 中显示了最终预期的结构

项目引用范围

Data Manager 需要每一个范围都有一个引用范围,来维持其引用结构与模板。

  • 引用结构 为范围提供了模型。
  • 模板 定义了引用结构所需要的结构,以及这些属性的行为。

图 4 显示了当引用结构完成时可视化窗格中将会看到什么:

图 4. Data Manager 项目引用范围
Expected Project Reference Dimension 构造
Expected Project Reference Dimension 构造

按照以下的方法来进行构造:

  1. 使用 Rational Open Data Access 数据库的属性来创建 Data Manager 中的新目录。
  2. 右击 Library > Connections,选择 Insert Connection,并为 Rational Open Data Access 数据库输入连接的细节信息。为数据仓库插入另外的连接。
  3. 右击 Library > Dimensions 并从下拉菜单中选择 Insert Reference Dimension
  4. 填充表格以参加新的引用范围 Project_Dim,然后点击 OK。这将会在 Library > Dimensions 之下,创建一个名为 Project_Dim 并拥有名为 Templates 子文件的新项目。
  5. 右击 Library > Dimensions > Project_Dim > Templates,并从下拉菜单中选择 Insert Template
  6. 填充表格以创建一个新的模板。
    1. General 项中:
      1. 给项目起一个名字。在这里的范例中,它叫做 ProjectDimensionTemplate。
      2. 可以选择的是,填充其他所有的字段。
    2. Attributes 项中:
      1. 为项目范围创建所有的属性(字段)(见于 图 5)。
      2. 如果在使用 Data Manager 之前在仓库中已经创建了 PROJECT_DIM 表格,然后您可以使用 Import Table 按钮。否则,使用 Add 按钮来创建每一个字段。当使用该模板的 ETL 运行时,Data Manager 将会自动创建表格。
      3. 将 PROJECT_ID 属性的行为设置为 Business Key,将其值设置为 True
    3. 点击 OK
图 5. Data Manager 项目范围模板,属性
PROJECT_ID 属性行
PROJECT_ID 属性行
  1. 右击 Library > Dimensions > Project_Dim 并从下拉菜单中选择 Insert Hierarchy
    1. 输入 ProjectHierarchy 作为名字。
    2. 您还可以选择,填充其他的字段。
  2. 选择 Library > Dimensions > Project_Dim > ProjectHierarchy
  3. 在可视化窗口中,右击 DataStream 对象并从下拉菜单中选择 Insert Data Source
  4. 填充表格:
    1. 填充 General 项。
    2. Query 项中,
      1. Database 字段之下,选择对 Rational Open Data Access database 的连接。
      2. 输入如代码行 1 所示的查询然后对其进行测试 :
代码行 1. ProjectHierarchy 对象的查询
SELECT PROJ.PROJECT_ID, 
       WBSELEM.NAME, 
       WBSELEM.REFERENCE_NUMBER AS REFERENCE_NUMBER, 
       WBSELEM.EXTERNAL_ID AS EXTERNAL_IDENTIFIER, 
       CURR.DESCRIPTION AS CURRENCY, 
       S.NAME AS STATE, 
       RTF.NAME AS DESC_FIELD_COLUMN_ID01, 
       ASSIGNEDRTF.RTF_DATA AS DESC_FIELD_VALUE01 
FROM  RODA.PROJECT PROJ JOIN RODA.WBS_ELEMENT WBSELEM ON PROJ.PROJECT_ID = WBSELEM.WBS_ID
       LEFT JOIN RODA.CURRENCY CURR ON PROJ.CURRENCY_ID = CURR.CURRENCY_ID 
       LEFT JOIN RODA.STATE S ON WBSELEM.STATE_ID = S.STATE_ID 
       LEFT OUTER JOIN 
       (RODA.WBS_ASSIGNED_RTF ASSIGNEDRTF INNER JOIN RODA.RTF RTF ON 
              ASSIGNEDRTF.RTF_ID = RTF.RTF_ID) ON PROJ.PROJECT_ID = ASSIGNEDRTF.WBS_ID
              AND ASSIGNEDRTF.RTF_ID = 5581
  1. Result columns 项中,点击 Refresh
  2. 点击 OK

现在您会看到可视化窗格中的这些元素 :

  • 一个与数据源图标相联系的新数据库图标
  • 一个未联系的 DataStream 对象。
  1. 在可视化窗格中,右击新创建的 DataStream 对象,并从下拉菜单中选择 Properties
  2. 按照下面的指南来将数据源映射到数据流项目。
    1. 试着使用 Auto Map 功能。
    2. 点击 OK
    3. 当您完成操作之后,在可视化窗格中,您会看到一个新的箭头,将数据源与 DataStream 对象联系起来。
  3. 右击可视化窗口中的 ProjectHierarchy 对象,并从下拉菜单中选择 Insert Level
    1. General 项中
      1. 给层次起一个名字。在这个范例中,它叫做 ProjectDimensionLevel。
      2. 您还可以选择,填充该项中其他的字段。
    2. Attributes 项中
      1. 选择Select the newly created template in the Template 下拉菜单中新创建的模板。在这里的范例中,它是 ProjectDimensionTemplate。在选中它之后,应该用模板的属性来填充 Available Attributes 窗格。
      2. 将 Available Attributes 窗格中的所有项目都填充到 Chosen Attributes
      3. 在 Chosen Attributes 窗格中,确定指定哪一个是一个“id”(在这里是 PROJECT_ID),以及什么是“Caption”(这里是 NAME)。
    3. 点击 OK
  4. 右击可视化窗格中的 ProjectHierarchy 对象,并从下拉菜单中选择 Mapping
  5. 使用 Map 按钮、拖拉与双击 Level Attributes 操作,来映射每一个数据流。当您完成操作之后可以点击 OK。然后在可视化窗口中,您将会看到一个新的箭头,将 DataStream 项目与 ProjectHierarchy 对象联系起来。
  6. 保存 Data Manager 目录。

项目范围构建

范围构建会将数据传递给一个范围表格中。它从引用结构处获得数据,并将其传递给指定的目标地,使用模板来决定每一个列的行为(见于 图 6)。

图 6. Data Manager - Project Dimension 构建
预期的 Project Dimension 构建构造
预期的 Project Dimension 构建构造

评审 图 2 来得到 PROJECT_DIM 表格的结构。

按照以下的方法来创建这个范围构建:

  1. 右击 Builds and JobStreams 并从下拉菜单中选择 Insert Dimension Build
  2. 填充表格以创建新的范围构建。
    1. General 项中
      1. 给构建起一个名字。在这个范例中,它叫做 ProjectDimension。
    2. Dimension 项中
      1. 对于 Dimension to be delivered 下拉菜单,您可以选择在前面部分中创建的 Project_Dim 引用范围。
      2. 然后就会自动弹出 Hierarchy/Lookup to be delivered 下拉菜单。
      3. 对于 Deliver into database 下拉菜单,您可以选择代表数据仓库的联系对象。
      4. 激活复选框 Remove Unused Foster Parents
      5. 按照需要设置其他的属性。
    3. 点击 OK
    4. Builds and JobStreams 的下面,这将会创建一个名为 ProjectDimension 的新项目。
  3. 选择 Builds and JobStreams > ProjectDimension
  4. 在可视化窗格中,您会看到两个项目:
    1. 一个联系到范围构建图标的 ProjectHierarchy 图标 (ProjectDimension)
    2. 一个未联系的数据库对象
  5. 在可视化窗格中,右击 ProjectDimension 对象,并从下拉菜单中选择 Insert Table
  1. Table 项中,输入一个表格名。我们的范例使用 PROJECT_DIM。
  2. Columns 项中
    1. Use template 下拉菜单中选择 ProjectDimensionTemplate
    2. 使用 Map 按钮来将每一个列映射到适当的 ProjectDimensionLevel
    3. 点击 OK

Scope Health 实际构建

一个实际构建执行了 ETL 以实现实际表格。它需要来自指定数据源的数据,并在对数据执行需要的转化之后,将其交付给一个目标。

图 7. Data Manager - Scope Health 实际构建
预期的 Scope Health 实际构建构造
预期的 Scope Health 实际构建构造

查看 图 2 以得到 SCOPE_HEALTH 表的结构。

  1. 右击 Builds and JobStreams 并从下拉菜单中选择 Insert Fact Build
  2. 按照下面介绍的方法,来创建新的实际构建。最小条件下,
    1. General 项中,为构建指定一个名字。在这里的范例中,我们使用 ScopeHealth 来作为名字。
    2. Input 项中,将 Duplicate Key Handling 设置为 Merge records with duplicate keys
    3. 这将会在 Builds and JobStreams 之下创建一个名为 ScopeHealth 的新项目。
  3. 选择 Builds and JobStreams > ScopeHealth
  4. 在可视化窗格中任意地方右击,并从下拉菜单中选择 Insert Data Source。开始时我们创建如 图 7 所示的 SelectClosed 元素。您必须注意到接下来的查询看起来有点奇怪,因为在步骤 2 中 我们将 Duplicate Key Handling 设置为“Merge records with duplicate keys”以及其他的一些设置,Data Manager 会将结果整合到预期的集合之中。
    1. 填充 General 项,并将名字指定为 SelectClosed
    2. Query 项中,输入如代码行 2 所示的查询并测试它。同样,确定 Database 字段中是一个适当的数据源。
代码行 2. 选择范围元素的查询
SELECT  PROJECT_ID,
        CASE    WHEN TYPE_ID IN (4, 65) THEN 1 ELSE 0 END AS CHANGE_REQUEST_CLOSED,
        CASE    WHEN TYPE_ID IN (5, 66) THEN 1 ELSE 0 END AS RISK_CLOSED,
        CASE    WHEN TYPE_ID IN (6, 67) THEN 1 ELSE 0 END AS ISSUE_CLOSED,
        CASE    WHEN TYPE_ID IN (213, 235) THEN 1 ELSE 0 END AS REQUIREMENT_CLOSED,
        CASE    WHEN TYPE_ID IN (226, 233) THEN 1 ELSE 0 END AS DEFECT_CLOSED,
        CASE    WHEN TYPE_ID IN (227, 234) THEN 1 ELSE 0 END AS SERVICE_REQUEST_CLOSED
FROM    RODA.CRI_ELEMENT
WHERE   STATE_ID IN ( 4910, 4920, 4930, 4939, 5386, 5417, 6117 )
    1. Result columns 项中,点击 Refresh
    2. 点击 OK
    对于 Data Source 元素的其他部分也重复步骤 4。
    1. 代码行 3 显示了 SelectPending 元素中所使用到的查询。
代码行 3. 已选择待决范围元素的查询
SELECT  PROJECT_ID,
        CASE    WHEN TYPE_ID IN (4, 65) THEN 1 ELSE 0 END AS CHANGE_REQUEST_PENDING,
        CASE    WHEN TYPE_ID IN (5, 66) THEN 1 ELSE 0 END AS RISK_PENDING,
        CASE    WHEN TYPE_ID IN (6, 67) THEN 1 ELSE 0 END AS ISSUE_PENDING,
        CASE    WHEN TYPE_ID IN (213, 235) THEN 1 ELSE 0 END AS REQUIREMENT_PENDING,
        CASE    WHEN TYPE_ID IN (226, 233) THEN 1 ELSE 0 END AS DEFECT_PENDING,
        CASE    WHEN TYPE_ID IN (227, 234) THEN 1 ELSE 0 END AS SERVICE_REQUEST_PENDING
FROM    RODA.CRI_ELEMENT 
WHERE   RODA.CRI_ELEMENT.CRI_ID NOT IN
        (
        SELECT  RODA.TRANSFERED_CRI_WBS.WBS_ID 
        FROM    RODA.TRANSFERED_CRI_WBS 
        WHERE   RODA.CRI_ELEMENT.CRI_ID = RODA.TRANSFERED_CRI_WBS.CRI_ID
        ) 
        AND STATE_ID NOT IN 
        (
        4910, 4920, 4930, 4939, 5386, 5417, 6117
        )
  1. SelectTotals 元素使用到的查询在 代码行 4 中:
代码行 4. 选择每一个范围元素总体的查询
SELECT  PROJECT_ID,
        CASE    WHEN TYPE_ID IN (4, 65) THEN 1 ELSE 0 END AS CHANGE_REQUEST_TOTAL,
        CASE    WHEN TYPE_ID IN (5, 66) THEN 1 ELSE 0 END AS RISK_TOTAL,
        CASE    WHEN TYPE_ID IN (6, 67) THEN 1 ELSE 0 END AS ISSUE_TOTAL,
        CASE    WHEN TYPE_ID IN (213, 235) THEN 1 ELSE 0 END AS REQUIREMENT_TOTAL,
        CASE    WHEN TYPE_ID IN (226, 233) THEN 1 ELSE 0 END AS DEFECT_TOTAL,
        CASE    WHEN TYPE_ID IN (227, 234) THEN 1 ELSE 0 END AS SERVICE_REQUEST_TOTAL
FROM    RODA.CRI_ELEMENT
  1. SelectTransferred 元素使用到的查询在 代码行 5 中:
代码行 5. 选择已转移范围元素的查询
SELECT  PROJECT_ID,
   CASE    WHEN TYPE_ID IN (4, 65) THEN 1 ELSE 0 END AS CHANGE_REQUEST_TRANSFERRED,
   CASE    WHEN TYPE_ID IN (5, 66) THEN 1 ELSE 0 END AS RISK_TRANSFERRED,
   CASE    WHEN TYPE_ID IN (6, 67) THEN 1 ELSE 0 END AS ISSUE_TRANSFERRED,
   CASE    WHEN TYPE_ID IN (213, 235) THEN 1 ELSE 0 END AS REQUIREMENT_TRANSFERRED,
   CASE    WHEN TYPE_ID IN (226, 233) THEN 1 ELSE 0 END AS DEFECT_TRANSFERRED,
   CASE    WHEN TYPE_ID IN (227, 234) THEN 1 ELSE 0 END AS SERVICE_REQUEST_TRANSFERRED
FROM    RODA.CRI_ELEMENT
WHERE   RODA.CRI_ELEMENT.CRI_ID IN
        (
   SELECT RODA.TRANSFERED_CRI_WBS.WBS_ID 
   FROM RODA.TRANSFERED_CRI_WBS
   WHERE RODA.CRI_ELEMENT.CRI_ID = RODA.TRANSFERED_CRI_WBS.CRI_ID
        )

在可视化窗格中,现在您会看到:

  • 联系到所有数据源图标的数据库图标
  • 一个未联系的 DataStream 对象。
  1. 在可视化窗格中,右击 DataStream 对象,并从下拉菜单中选择 Properties
    1. DataStream Items 项中,映射数据源的每一个字段。如果合适的话,您可以使用 Auto Map 功能。
      1. 右边的窗格在开始时可能是空白的。点击 Auto Map 将会生成 DataStream 项,并试着自动映射到左边窗格中的项目。
    2. Derivations 项中,为每一个数量字段添加一个计算,以避免在没有结果时出现 null 的整数。
      1. 点击 Add
      2. General 项中,给来源起一个单独的名字,例如 CHANGE_REQUEST_CLOSED1,如 图 8 所示。
图 8. Derivation - General 项
 Derivation Properties 中 General  项的屏幕截图
Derivation Properties 中 General 项的屏幕截图
  1. Calculation 项中,输入以下的公式,如 图 9 所示:
    ifnull(<INSERT_INTEGER_FIELD_NAME_HERE>, 0)
图 9. Derivation - Calculation 项
显示 Calculation 项与输入的“ifnull”格式
显示 Calculation 项与输入的“ifnull”格式
  1. 点击 OK
  2. 对于所有的整数字段都重复步骤 6b图 10 显示了结果。
图 10. Derivations 列表
显示起源的完整列表
显示起源的完整列表
    1. 您还可以选择,填充其他的项目。
    2. 点击 OK
    3. 当您完成操作之后,在可视化的窗格中,您会看到新的箭头,将 DataStream 项目与所有的四个源对象联系起来。
    在可视化窗格中随意右击一个地方并从下拉菜单中选择 Insert Relational Table Delivery
    1. 填充 General 项。在我们的范例中,我们会将名字设置为 SCOPE_HEALTH。
    2. Table Properties 项中:
      1. 对于 Connection 下拉菜单,选择数据仓库连接对象。
      2. 输入一个 表格名。在我们的范例中,它是 SCOPE_HEALTH。如果可行的话,使用 Browse for table 函数。
      3. 选中 Automatically add columns to table 复选框。
      4. 如果可行的话(数据库中已经存在了目标表格),那么您可以使用 Import Target Table 函数。
    3. Module Properties 项中,将 Refresh Type 设置为 UPDATE/INSERT,并激活 Incoming record keys are unique 的选项。
    4. 点击 OK
  1. 右击可视化窗格中的 Transformation Model 对象并从下拉菜单中选择 Mapping
    1. 使用 Add > Measure 或者 Auto Map > Create new Elements as Measure 函数来映射来自 DataStream 的字段。
    2. 点击 OK
  2. 右击可视化窗格中的 Transformation Model 对象,从下拉菜单中选择 Show Build Elements,如果它尚未激活的话。现在您可以看到所有的字段都是从 Transformation Model 框中获得的。
    1. 右击可视化窗格中 Transformation ModelPROJECT_ID 字段,并从下拉菜单中选择 Convert to Dimension
  3. 右击 PROJECT_ID 字段(当它被转化为一个范围时)并从下拉菜单中选择 Properties。我们通过将实际表中的每一个范围元素,与引用范围联系起来,来提供实际表与范围表之间的联系。
    1. Reference 项中,
      1. 选择 Dimension 下拉菜单中的 Project_Dim 范围。
      2. 选择 Structure 下拉菜单中的 ProjectHierarchy
      3. 激活复选框 Aggregate
      4. 在表格中,激活 Dimension 的复选框
    2. 点击 OK
  4. 右击 Transformation Model (例如 CHANGE_REQUEST_TOTAL)中的其他字段,并从下拉菜单中选择 Properties
    1. Aggregation 项中,确保 Regular aggregate 值被设置成了 SUM
  5. 保存 Data Manager 目录。

为了运行 ETL,您可以右击 Build and JobStreams > ProjectDimension, 然后从下拉菜单中选择 Execute

Build and JobStreams > ScopeHealth 执行相同的操作。

Framework Manager

为了创建 Cognos 报告,您首先必须对 Framework Manager 中的元数据进行建模,然后包装元数据,再将其发送至 Cognos 服务器。有两种方法可以达到这个目的。

  • 方法 1 是从 Data Manager 中将元数据导出到 XML 文件中,然后将该 XML 文件导入到 Framework Manager 中。
  • 方法 2 是使用 Framework Manager 来生成来自数据库表的元数据,并将其进行进一步的建模。

方法 1 :使用一个来自 Data Manager 的 XML 文件

使用 Data Manager 的一个优势在于,您可以将元数据导出到一个 XML 文件,而该文件随后将会导入到 Framework Manager 中,以产生一个数据仓库的模型,而不用再重新开始。尽管这种操作十分方便,但是确认导入的结果以保证基底构件按照预期的那样建模仍然十分重要。同样,根据您的报告需要,您可能需要进一步地控制元数据以创建报告。

按照以下的方法,来将元数据导出到一个 XML 文件中 :

  1. 在 Data Manager 中,右击 Metadata > Collections 并从下拉菜单中选择 Insert Metadata Collection
  2. 填充元数据收集属性弹出窗口,然后点击 OK
  3. 右击 Builds and JobStreams > ProjectDimension 并从下拉菜单中选择 Add to Metadata
    1. 点击 Next
    2. 点击 Finish
  4. 右击 Builds and JobStreams > ScopeHealth,然后并从下拉菜单中选择 Add to Metadata
  5. 按照向导中的指南,确保 :
    1. 在第一个窗口中,指定刚刚在步骤 1 中所创建的 Metadata Collection。点击 Next
    2. 在第二个窗口中,指定哪一个字段是范围性的。在我们的范例中,范围性的字段是 PROJECT_ID
    3. 在范围性的字段指定以后,点击省略号按钮(),以指定它所映射到的范围列。在我们的范例中,PROJECT_ID 会映射到 ProjectDimension.PROJECT_DIM.PROJECT_ID,如 图 11 所示。
图 11. 联系范围
在向元数据添加 ScopeHealth  的顺序
在向元数据添加 ScopeHealth 的顺序
    1. 点击 OK
    2. 点击 Next,然后点击 Finish
    右击完整的元数据收集并从下拉菜单中选择 Export Metadata
  1. 按照 Export Metadata 向导来创建和保存 XML 文件。

然后,按照下面的方法来将 Data Manager 元数据 XML 文件导入到 Framework Manager 中:

  1. 在 Framework Manager 项目中,右击根名字区文件夹并从下拉菜单中选择 Run Metadata Wizard,如 图 12 所示。
图 12. Framework Manager - Run Metadata 向导
显示下拉菜单中的 Run Metadata Wizard 选项
  1. 在向导的第一个窗格,选择 Cognos 8 Data Manager (*.xml) 作为元数据源。
  2. 点击 Next
  3. 选择包含有自 Data Manager 中导出的模型的 XML 文件并点击 Import

在导入工作完成之后,应该有一个新的名字区,例如 项目中创建的“Physical Metadata”与“Business View” (见于 图 13)。

图 13. Framework Manager - 从 Data Manager 中导入模型
 Framework Manager 中导入的元数据

通常来说,可以按照以下方法来确认导入操作的结果 :

  • 检查导入的关系与项目之间的相关基数是显示且适当的。
  • Data Sources 文件夹中,测试导入的数据源对象的联系,如有需要还要修复它。
  • 使用 Framework Manager 的 Verify Selected Objects 或者 Verify Model 特性,来找到模型中存在的问题。例如,对于范围,有一个字段被不合适地分配给了“business key”和“member caption”的两种角色。

方法 2:对来自数据库的数据建模

从数据库表格中生成元数据是可能的。这种类型的导入操作,会带来表格定义,以及它们的主键和关系,如果它们已经定义的话。

从数据源生成元数据

  1. 在 Framework Manager 项目中,右击根名字字段文件夹并从下拉菜单中选择 Run Metadata Wizard,如 图 14 所示。
图 14. Framework Manager - 运行 Metadata 向导
下拉菜单中的 Run Metadata Wizard 选项
  1. 在向导的首个窗口中,选择 Data Sources 作为元数据源。
  2. 点击 Next
  3. 如果数据仓库已经存在的话就选中它,然后点击 Next。如果它尚未出现在列表中的话,那么就点击 New,创建联系,然后选择它。
  4. 在随后的向导窗口中,选择您需要的表格(见于 图 15,它显示了选中的 SCOPE_HEALTH )。
图 15. Framework Manager - 选择源表格
Metadata Wizard:Select Objects 窗口
Metadata Wizard:Select Objects 窗口
  1. 点击 Next 然后点击 Import
  2. 在完成导入之后,点击 Finish。在 Framework Manager 项目中,现在您将会看到:
    • 根名字区域中的两个导入的表格
    • 数据源
图 16. Framework Manager - 导入的结果
数据库表所生成的元数据
数据库表所生成的元数据

创建不同的视图并手动对元数据建模

最好创建至少两个视图(名字区):导入 或者 数据库 视图与 业务 视图。使用两个或者更多的视图,使得将项目重新映射到一个新的数据源处变得更加容易。

导入视图 包含了从数据源导入的元数据。确认在导入视图中创建了适当的元数据 :

  • 确认查询对象之间的关系是适当的。
  • 检查查询项目属性以确保数据得到适当的使用以及格式化。

业务视图 对元数据中的信息提供了一层,这样构建报告就变得更加容易。您有两种方法来改进业务视图中的元数据 :

  • 添加业务规则,例如计算与过滤器。
  • 通过为每一个用户组创建单独的视图,并确保每一个视图都适当地反映了特定组的业务概念,来组织模型。

为了创建不同的视图并对元数据进行建模,您可以按照下面的步骤来进行操作 :

  1. 创建一个名字字段以包含 Import View
    1. 右击元数据收集,然后点击 Create > Namespace。为名字字段输入一个名字。
图 17. Framework Manager - 创建一个名字字段
创建一个名字字段的下拉菜单路径
创建一个名字字段的下拉菜单路径
  1. 创建一个包含 Business View 第二个名字字段。
    1. 右击元数据收集,点击 Create > Namespace,然后为该名字字段输入一个名字。
  2. 将导入的查询对象拖拉到 Import View 名字字段中。
图 18. Framework Manager - 导入视图名字字段
 将对象组织到 Namespaces 的结果
将对象组织到 Namespaces 的结果
  1. 如果导入查询对象之间的关系并没有检测到和包含进去,那么您可以创建表格之间的关系。对于这里的范例:
    1. 右击 PROJECT_DIM 查询对象并选择 Create > Relationship
    2. 在 Relationship Expression 项中(图 19):
      1. 将其他的 Query subject 指定为 SCOPE_HEALTH
图 19. Framework Manager - 创建一种关系
指定相关查询对象的对话框
指定相关查询对象的对话框
  1. 确认两个查询对象之间的基数。对于每一个项目,可以有许多的范围元素,这样就是从 PROJECT_DIM 到 SCOPE_HEALTH 的 1-n关系影响 部分在确认选择的基数适合时会非常有用。
图 20. Framework Manager - Relationship Cardinality
指定基数的区域
指定基数的区域
  1. 根据报告的需要来为元数据建模。例如:
    1. 创建对 Import 视图中查询对象的快捷方式,并将快捷方式移动到 Business View,然后进一步建模,并定制报告的元数据。
      1. 右击查询对象并选择 Create Shortcut
      2. 将快捷方式拖拉到 Business View 名字字段上。
      3. 在快捷方式拖拉到 Business View 名字字段之后,您可以对其重命名。
    2. 在 Business View 中创建一个新的查询对象,指定数据建立在已存在模型的基础之上( Import View 中的数据),例如 图 21 中的 DEFECT_HEALTH 表格。
      1. 右击 Business View 并选择 Create > Query Subject
      2. 将名字设置为 DEFECT_HEALTH
      3. 选择 Model 的选项(Query Subjects 与 Query Items)
图 21. Framework Manager - 创建一个新的 Query Subject
指定查询对象的名字与属性
  1. Query Subject Definition 项中的 Import View SCOPE_HEALTH 项目中,将以下的字段拖拉到 Query Items and Calculations 窗格中:
    • PROJECT_ID
    • DEFECT_CLOSED
    • DEFECT_PENDING
    • DEFECT_TOTALDEFECT_TRANSFERRED。
图 22. Framework Manager - 新查询对象定义
定义新查询对象的结构
定义新查询对象的结构
  1. 点击 OK
图 23. Framework Manager - 元数据模型范例
显示预期的元数据模型
显示预期的元数据模型

发布模型

在您可以开始创建报告之前,您必须包装并发布模型。

  1. 如果已经创建了一个包,那么:
    1. 右击文件夹 Packages 并从下拉菜单中选择 Create >Package
    2. 在出现的向导中,给包起一个名字,然后从指定包中包含哪些视图或者查询对象。
  2. 右击包并从下拉菜单中选择 Publish Packages,按照向导的指示来将其发布。

Cognos

范例报告

图 24 显示了我们将会创建的范例报告。

图 24. 范例报告
显示缺陷信息的报告
显示缺陷信息的报告

图 24 所示,报告简单地列出了项目,以及缺陷的总共数量,并指定了转移了和解决了多少的缺陷。

Report Studio

Report Studio (或者 Reporting)是一种包含的 Web 程序,可以用来构建任意类型需要的报告,从简单到复杂都可以。

按照以下的方法来构建范例报告:

  1. 启动 Report Studio 并想您想要使用的包。
  2. 选择一个选项 Create a new or report or template
  3. 选择一个 List 报告。
  4. Toolbox 处拖拉一个 List 项目到报告页面上。
    1. 然后 Report Studio 会自动创建一个命名为“Query1”的查询。您可以访问 Query Explorer 中的这个查询定义。
  5. 从 [Business View].PROJECT_DIM 查询对象处将 NAMEREFERENCE_NUMBER 字段拖拉到报告页面的列表项目中。
  6. 图 25 所示,将 DEFECT_TRANSFERREDDEFECT_CLOSEDDEFECT_TOTAL 字段从 [Business View].SCOPE_HEALTH 查询对象处,拖拉到 List 项目处。
    1. 因为关系在 Import View 与 Business View 项目中都得到了清晰的定义,它们建立在 Import View 的基础之上,所以您可以简单地将字段拖拉到一个 List 上,而不用担心指定表格之间的联系。
图 25. Report Studio - 将自动拖到一个列表中
显示将字段拖动到什么地方
显示将字段拖动到什么地方
  1. 在弹出菜单中,选择 Structure > Headers & Footers > Page Header & Footer 以创建一个头来包含报告名。
  2. Toolbox 处将 Text Item 拖拉到 Header 区域,并输入报告名字。
  3. 给报头设置格式(粗体,大号字体,中央对齐)
  4. 为了伸展列表并填充页面的整个宽度,您可以在列表的任意位置处点击,并在 Properties 窗格中,使用 Select Ancestor 按钮来切换至 List 项(见于 图 26)。
图 26. Report Studio - Accessing List 属性
显示怎样切换至适当的项目层级结构
显示怎样切换至适当的项目层级结构
  1. 最后一步之后,您会看到整个列表都被选中了。然后,在 Properties 窗格中,将 Size & Overflow 属性 Width 设置为 100%
图 27. Report Studio - 设置宽度
设置列表宽度的步骤
设置列表宽度的步骤

现在您就可以保存并运行报告了。

例如,为了用项目 ID 来填充结果,您可以按照下列方法来进行操作:

  1. 图 28 所示,将鼠标停留在 Explorer 栏的 Query Explorer 上,并选择 List 项目拖拉到报告页面时自动创建的查询。它可能被命名为 Query1 或者 Query2。
图 28. Report Studio - 访问查询
显示在什么地方访问  Query 项目
显示在什么地方访问 Query 项目
  1. 在 Data Items 视图中,您可以看到添加至报告列表的所有列。
  2. 从 Insertable Objects 窗格的 Source 项中,将 PROJECT_ID 查询项拖拉到 Detail Filters 窗格中。
图 29. Report Studio - 向查询添加过滤器
显示将过滤器条件拖拉到什么地方
显示将过滤器条件拖拉到什么地方
  1. 然后会出现一个 Detail Filter Expression 窗口(见于 图 29)。
    1. Expression Definition 框的结尾行,输入 =?PROJECT_ID? 以显示您想要筛选报告,这样拥有适当项目 ID 的报告才会匹配返回的输入。
      • 在等号旁边可能还有其他可用的操作。
      • 名字 PROJECT_ID 旁边的问号标示它是一个参数。
  2. 点击 OK

现在您就可以返回报告了,接着就会弹出一个会话页面(如 图 30 所示),让您去选择一个项目 ID,从而去筛选结果。您还可以创建自己的 Prompt 页面,并定制页面的布局与信息。

图 30. Report Studio - 使用会话页面来运行报告
使用会话来运行报告
使用会话来运行报告

范围性的模型

范例报告

到目前为止,您已经创建了一个比较直接的报告。您还可以创建一个报告,该报告允许读者上翻和下拉,以查看预定义层级结构之中不同层次的具体信息。出于这点考虑,您需要一个 范围的 或者范围内建模数据源。

使用您在 从阶段提取、转化和载入到仓库方案 部分中创建的两个表格,您要更改 Framework Manager 中的元数据模型,并将其整合到一个范围性的模型中。但是,只有这两个表格,并不是一个理想的层级结构(例如,“年-月-星期-日”),但是显示的步骤仍然与建模层级结构有关。

图 31 显示了您在本部分中将会创建的范例报告,它支持上翻及下拉操作。

图 31. 作为范例的可以上翻/下拉的报告
显示上翻或者下拉的不同结果
显示上翻或者下拉的不同结果

图 31 所示,报告是一个交横的项,它显示了项目和项目状态所打开的缺陷的数量。您可以在项目或者项目状态中下拉以查看更多的细节信息。

Framework Manager

您在 Cognos Framework Manager 中可以协调工作的范围类型是 规范的 范围与 方法 范围。

一个 规范的 范围包含了描述性以及业务关键性的信息,并将信息组织成一种层级结构。

一个 方法范围是事实的收集体。

对于这个范例,您要从 Framework Manager 中的元数据模型开始,它是您使用 方法 2:数据库中模型数据 部分中的方法 2(从数据库表来生成元数据)来创建的。

  1. 创建一个新的名为 Dimensions 的名字字段。
  2. Dimensions 名字区域内,
    1. 创建一个名为 SCOPE_HEALTHMeasure Dimension
      1. 右击 Dimensions 名字区域并选择 Create > Measure Dimension
      2. 在出现的 Dimension Definition 窗格中,从 Model Objects 窗格中选择 Import View 中的 SCOPE_HEALTH 查询对象,并将其拖拉到 Measure 窗格中。
      3. 点击 OK
    2. 创建一个名为 PROJECT_DIMRegular Dimension
      1. 右击 Dimensions 名字区域并选择 Create > Regular Dimension
      2. Available items 中拖拉 [Import View].PROJECT_DIM.PROJECT_IDHierarchies 窗格中。
      3. Hierarchies 窗格中,将所有发生的 PROJECT_ID 替换为 PROJECT_DIM
      4. Hierarchies 窗格中,选择最后一个层次。您将会在 PROJECT_ID 下面的窗格中,看到 _businessKey 的角色。如果它不是,那么就将其设置为 _businessKey
      5. [Import View].PROJECT_DIM.NAME 拖拉到 Hierarchies 窗格中的最后一个层次中。一个小的下拉菜单将会出现,让您去指定这个项目的角色。选择 _memberCaption,图 32 所示。
图 32. Framework Manager - 创建范围
显示创建所需要的操作与选择
显示创建所需要的操作与选择
  1. 同样将REFERENCE_NUMBERCURRENCYEXTERNAL_IDENTIFIER 字段拖拉到相同的层次上,然后将它们的角色指定为 No Role。结果如 图 33 所示。
图 33. Framework Manager - PROJECT_DIM
 显示 Project 范围的组成
显示 Project 范围的组成
    1. 点击 OK
    创建名为 STATE_DIM 的第二个 Regular Dimension
    1. 右击 Dimensions 名字区域并选择 Create > Regular Dimension
    2. Available items 窗格中拖拉 [Import View].PROJECT_DIM.PROJECT_IDHierarchies 窗格中。
    3. Hierarchies 窗格中,将所有发生的 PROJECT_ID 命名为 STATE_DIM
    4. Hierarchies 窗格中,选择最后一次层次。您将会看到在 PROJECT_ID 下面的窗格中给出了 _businessKey 的角色。
      1. 如果它不是,那么将其设置为 _businessKey
    5. [Import View].PROJECT_DIM.STATE 拖拉到 Hierarchies 窗格中的最后一个层次上。一个小的下拉菜单将会出现,让您指定这些项目的角色。选择 _memberCaption。结果会显示在 图 34 中。
图 34. Framework Manager - STATE_DIM
显示 State 范围的组成
显示 State 范围的组成
    1. 点击 OK
    包装并发布模型,将 发布模型 部分作为引用使用。
图 35. Framework Manager - Dimensions 模型
显示最终的二维模型结构
显示最终的二维模型结构

Report Studio

在公布二维的模型之后,Report Studio 可以利用层级结构的信息。按照以下的方法来创建 图 31 中所示的范例上翻或者下拉报告。

  1. 创建一个使用新公布页面的列表报告。
  2. Toolbox 处拖拉 Crosstab 项到报告页面上。
  3. 图 36 中所示的那样,从 Dimensions.PROJECT_DIM 范围中拖拉 PROJECT_DIM 层级结构到 Columns 部分中,并选择出现菜单中的 Root members
图 36. Report Studio - 拖拉到 Crosstab 列
强调交横列中拖拉范围的图
强调交横列中拖拉范围的图
  1. 从 Dimensions.STATE_DIM 范围中拖拉 STATE_DIM hierarchy 到交横项的 Rows 部分中,并从所出现菜单中选择 Root members
  2. Dimensions.SCOPE_HEALTH.DEFECT_PENDING 字段拖拉到交横项的 Measure 部分(查看 图 37)。
图 37. Report Studio - 拖拉到 Crosstab 方法
显示交横项拖拉方法的位置
显示交横项拖拉方法的位置
  1. 切换至 Data > Drill Behavior。
    1. Basic 项中,选中 Allow drill-up and drill-down 的复选框。
    2. 点击 OK
  2. 运行报告。

在报告中,注意交横巷头的行为像连接。您可以按照以下的方式来研究地更深一下:

  • 点击交横巷头以下拉。
  • 右击交横巷头并使用下拉菜单来指定下拉或者上翻。

总结

本文向您展示了通过使用 IBM Cognos 8 Business Intelligence 软件套装与 Rational Portfolio Manager Open Data Access 特性,来展示创建报告所需要的指南。您会看到怎样在 Data Manager 工具中构建一个 ETL,它从 Open Data Access 中获得数据并将其载入到一个简单的星形方案中。然后您将会学到在 Framework Manager 特性中为元数据建模的不同方法,以创建规范和二维的报告。

通过对 Cognos 工具的进一步研究,您将会发现创建能够适应业务需要的报告有很多种方法。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=577856
ArticleTitle=结合使用 Cognos 8 BI 与 Rational Portfolio Manager
publish-date=09092010