IBM Cognos 最佳实践: 将 IBM Cognos BI 作为 Transformer 的数据源

文档性质:指南;产品:IBM Cognos BI Transformer;关注领域:建模

本文旨在指导如何使用 IBM Cognos BI 作为数据源创建 IBM Cognos BI Transformer PowerCubes。

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

简介

目的

本文旨在指导如何使用 IBM Cognos BI 作为数据源创建 IBM Cognos BI Transformer PowerCubes。

适用性

本文描述的指南是针对 IBM Cognos 8.4.x 和 IBM Cognos 10.1 测试的。在本文中,当提到 IBM Cognos BI 时,它包括了 “适用性” 一节中所列的全部 IBM Cognos 版本。

假定条件

本文假定读者具备建模知识和经验、IBM Cognos BI Transformer 使用技术及在 IBM Cognos BI Report Studio 中创建基本报告和在 IBM Cognos BI Analysis Studio 中进行分析的经验。

例外与除外责任

本文档将不介绍使用 Framework Manager 生成的 IQD 文件和从 IBM Cognos BI 报告输出的 CSV 文件作为 Transformer 数据源的方法。


概述

在 IBM Cognos 8.4 之前的版本中,Transformer 建模师可以通过将报告输出保存为逗号分隔值(CSV)文件并将这些 CSV 文件作为 Transformer 的数据源来使用 IBM Cognos BI 内容,也可以通过 Framework Manager 生成 Impromptu Query Definition (IQD) 文件。

在 IBM Cognos 8.4 及以上版本中,我们可以使用 IBM Cognos BI Content Store 中的现有 IBM Cognos BI 包和报告作为 IBM Cognos BI Transformer 的数据源,这个额外的特性简化了创建反映 “唯一真相” 的数据源的过程。任何在 Framework Manager 建模中完成并作为一个包显示的成品,或者在 IBM Cognos BI 报告中完成的成品,都可以被 Transformer 使用,从而加快开发时间和保证所有数据都来自相同的底层数据源。

本文将提供一些关于使用 IBM Cognos BI 包的指南,不管这些包是关系型包、维度建模关系型(DMR)包、其他 OLAP 源(比如 PowerCube),还是 IBM Cognos BI 报告。


高效多维数据集构建指南

对于使用 IBM Cognos BI 作为 Transformer 的数据源的情况,下面是关于高效多位数据集构建时间的一些指南。

  • 如果需要过滤和/或计算,那么要考虑使用 IBM Cognos BI 报告作为数据源。
  • 在 Transformer 中为每一个所需维度及度量指标创建不同的数据源或数据源查询。
  • 给 Transformer 建模师提供事实表中发现的外键。
  • 避免在 IBM Cognos BI 服务器上进行不必要的数据处理。

在需要过滤和/或计算时使用 IBM Cognos BI 报告

虽然您可以要求 IBM Cognos Framework Manager 建模师在一个 IBM Cognos BI 包中包含特定的过滤器和计算,这要求 Framework Manager 建模师进行额外的维护。相反,Transformer 建模师可以按需使用包含过滤器/提示和计算的清单报告。如果报告使用了提示功能,那么 Transformer 建模师就可以控制在构建 PowerCubes 时使用哪些过滤器。

Transformer 中的 IBM Cognos BI 报告提示

不管这部分工作是在 Framework Manager 模型还是在报告中完成,其最终结果是相同的;如果支持,处理会保存到数据库中,而且 Transformer 的负载会下降。如果使用了过滤器/提示,那么 Transformer 所需要处理的记录会更少,从而能够减少构建时间。

使用报告可以实现符合要求的更高程度控制的自助服务,同时还不需要额外的开发支持。

在 Transformer 中创建独立的查询

当在 Transformer 中将一个包作为数据源使用时,我们应该基于该分析的数据源创建各个查询;每一个必要维度都需要一个查询,而每一个度量指标则需要一个或多个查询,这取决于底层有多少事实表以及业务需要什么数据。

当使用一个报告作为一个数据源时,我们同样可以为每一个维度创建一个清单报告,为度量指标创建一个或多个清单报告,或者在一个报告上创建多个清单报告查询。那么在 Transformer 中,查询是为每一个清单报告或一个报告中的每一个清单查询而创建的。

要理解为什么得到这样的推荐方法,您可以考虑下面的两个记录集。

第一个记录集是对数据库的 Order Method 表执行一个简单的 “select * from”。

使用不同的值进行简单订购方法查询

在这个例子中,Transformer 将会处理一个简单的记录集,其中每一个 Order Method 只会返回一个值,从而产生更清晰的分类。

现在检查第二个记录集,其中它的日期和事实数据会被添加到查询中。

由于更细的粒度而产生重复 Order Method 值的查询

由于在查询中引入了更细的粒度,Order Method 值现在出现了重复,在这里指的是日期数据。在查询得到的结果中,Transformer 在产生 Order Method 维度分类时需要处理许多的数据记录。这个例子说明了为什么使用具有独立目标的查询会比更大的合并查询效果更好。

在包中显示事实表的外键

一般情况下,事实表中的外键不会出现在 IBM Cognos BI 模型的事实查询主题中,如下图所示。

不显示键的事实查询

它们或者不出现在模型查询主题中,或者是对用户隐藏的。

对于大多数特殊查询用户或报告编写者而言,这是毫无益处的,而且可能引起混淆。“我应该从哪里得到 Product 的键;Products 查询主题或 Sales 事实查询主题又从哪里获得?”为避免给更多用户造成混淆,我们可以使用安全性来只向选定的用户组显示这些键。例如,只有 Transformer 建模师将会在 Sales 事实查询主题中看到下面的结果。

显示键的事实查询主题

在特定的情况下,比如涉及 Transformer 建模师时,向用户显示这些外键显然是有好处的。使用事实表的键,而不是使用相关维度表的键,是一个更有效的创建 Transformer 度量指标数据源的方法。通过这种方法,查询会针对数据源的一个表执行,而不是多个。数据库可能会在执行查询之前将它重写,以提高查询效率,但是按照惯例,SQL IBM Cognos 提交给数据库的查询越清晰,就越有可能在进行了数据库优化的数据层上运行一个高效的查询。

这个模型只适用于关系模型,因为 DMR 模型不支持将非度量指标(比如,键)添加到 Framework Manager 中的度量指标维度。

如果需要对 Framework Manager 模型进行修改,那么要通过指定的 Framework Manager 建模师完成。

避免在 IBM Cognos BI 服务器上进行不必要的本地数据处理

特定的查询场景可能需要在 IBM Cognos BI 服务器上进行数据处理。在某些情况下,性能可能不是一个问题,甚至可能产生数据库供应商在查询中不支持的一些结果。然而,在另一些情况下,本地处理可能会对查询性能产生负面影响,而这反过来会影响到 PowerCube 的构建时间。一个典型的例子是,计算中使用了数据库供应商所不支持的功能。这使我们必须从数据库查询全部的数据集,然后再在 IBM Cognos BI 服务器上执行本地计算。为了解决这个问题,我们要使用数据库供应商提供的等价功能。

我们可以利用两个故障修复技术来了解一个执行速度较慢的查询中是否进行了本地处理。第一种方法是查看查询所生成的 Cognos SQL,将它与 Native SQL 进行比较。这可以在 Framework Manager 或 Report Studio 中进行。如果有在 Cognos SQL 中执行而不在 Native SQL 中执行的操作,就意味着有一些处理是在本地进行的。另一种方法是将查询处理设置为只针对数据库进行。在 Framework Manager 中,这个设置可以在数据源对象属性中修改,称为 Query Processing。

Framework Manager - 显示一个数据源属性的 Properties 窗格

在 Report Studio 中,这个设置在查询属性中,称为 Processing。

Report Studio - 显示一个查询属性的 Properties 窗格

当设置为 Database Only 时,如果查询没有完全发送到数据库,那么就会有一个错误产生。这个错误一般会确定妨碍查询到达数据的原因。

在下面的章节中,我们将介绍一些关于如何有效地使用 IBM Cognos BI 作为 Transformer 数据源的示例。在任何项目开发中,业务需求都可能影响用于实现最终目标的方法,并且需要通过完整的测试来保证准确且最优的性能。


使用 IBM Cognos BI 包作为数据源

这一节将介绍 Transformer 中的每一个查询是如何从一个 IBM Cognos BI 包创建并用于创建一个 PowerCube。下面的例子将会使用经过修改的 GO Data Warehouse (query),其中外键将显示在事实查询主题中。

为了完成本文的步骤,我们需要使用 great_outdoors_warehouse-modified.zip 文件中的修改后模型。从文件中提取内容,并使用 Framework Manager 发布 GO Data Warehouse (query)包。

基本的单事实模型示例

当使用 IBM Cognos BI 作为 Transformer 的数据源时,最简单的 PowerCube 可能由数据中心一个底层事实表的一些度量指标和两个以上的维度构成。这种情况很容易使用一个作为数据源的 IBM Cognos BI 包实现。

下面的步骤介绍了如何从一个 IBM Cognos BI 包创建一个基本的 PowerCube。

  1. 在 IBM Cognos BI Transformer 中创建一个新的模型并将它命名为 GO Revenue。
  2. 单击 Next,在 Name 文本框中,输入 GO Data Warehouse,然后在 Data source type 中选择 Package。
    Transformer - New Data Source 对话窗口
  3. 单击 Next,然后浏览到希望使用的 IBM Cognos BI 包,这里使用的是 GO Data Warehouse (query)。
    Transformer - New Model 对话窗口
  4. 单击 Next,然后在 Query name 文本框中输入一个正确的名称,这里输入的是 Sales Measures。
  5. 在 Source 中,展开元数据树,找到所需要的项目,选择并将它们添加到 Columns 选项卡。在这里,我们添加的是 Sales 事实查询主题的 Revenue 和 Product 键。
    Transformer - Query Definition 对话窗口
    对于这个简单的 PowerCube,我们还会添加一个日期域。
  6. 从 Time dimension,添加 Date。
    Transformer - Query Definition 对话窗口
  7. 单击 SQL 选项卡查看产生的投射清单,以及查询中所包含的表。
    Transformer - 显示了 SQL 选项卡的 Query Definition 对话窗口
    在这个例子中,我们查询了数据库中的两个表:SLS_SALES_FACT 和 GO_TIME_DIM。正如前面所介绍的,一般使用事实表的键会更好一些,但是为了利用 Transformer 自动生成的时间分类,我们需要使用一个日期域。在这个例子中,事实表中没有日期域,因此我们必须使用时间维度表的日期域。
  8. 单击 OK,取消选定 Run Auto Design,然后单击 Finish。
  9. 当提示添加数据源的另一个查询时,单击 Yes。
  10. 在 Query name 文本框中,输入 Products,然后添加以下的项目。
    • Product line
    • Product type
    • Product name
    • Product line code
    • Product type key
    • Product key
    Transformer - Query Definition 对话窗口
  11. 单击 OK,当提示添加数据源的另一个查询时单击 No。
    现在 Data sources 窗格就有了两个基于 IBM Cognos BI 包的查询。
    Transformer - Data Sources 窗格
    注意根节点的包图标。这个图标可以使您很容易辩认数据源类型。
    现在将会创建一个基于这些查询所得元数据的模型。首先是创建一个 Time dimension。
  12. 从 Sales Measures 拖一个 Date 到 Dimension Map 窗格的灰色工具条。这样就会自动创建一个时间维度。
  13. 双击 Dimension Map 中的 Date,将它重命名为 Time dimension,然后单击 OK。
    Transformer - Dimension Map 窗格
  14. 从 Products 数据源创建一个 Products 维度,使用键作为来源值,字符串值作为标签,如下表所示。
    来源值标签
    Product line codeProduct line
    Product type keyProduct type
    Product keyProduct name
  15. 在最内层的属性中将维度和级别重命名为正确的值,这里是 Product name,保证它被标记为具有唯一分类。这个维度如下所示。
    Transformer - Dimension Map 窗格
  16. 在 Sales Measures 数据源上,将 Revenue 添加到 Measures 窗格。
    Transformer - Data Sources and Measures 窗格
  17. 在 PowerCubes 窗格中,插入一个新的 PowerCubes,这里将它命名为 GO Revenue,然后右键单击这个 PowerCube,单击 Create Selected PowerCube。
    现在这个 PowerCubes 将会作为一个数据源和包发布到 IBM Cognos BI 以供工具使用。
  18. 右键单击这个 PowerCube,然后选择 Publish PowerCube as Data Source and Package。
  19. 单击 OK 启动 Publish Wizard。
  20. 按照 Publish Wizard 的指引在 IBM Cognos BI 中创建这个 PowerCube。
  21. 当创建完成后,打开 IBM Cognos BI,然后在 Analysis Studio 中打开刚刚发布的这个包,创建一个分析。
    Analysis Studio - Insertable Objects 窗格
    Analysis Studio - 交叉表分析
    这样就会出现所要的元数据和数据。

多事实模型示例

前面的例子只包含了一个来自底层数据库事实表的一个度量指标。由于事实来源于多个事实表,所以其建模过程会更加复杂一些。

在下一个例子中,这个模型会包含两个事实表:Revenue target 和 Sales target,它们来自不同的底层事实表,它们与 Time dimension 和 Products dimension 都有不同程度的关系。Sales target 值是按月份 Time dimension 和 Products 的 Product type 级存储的。Sales target 事实表没有日期值,但是在自动生成时间分类时可能需要这个日期值。因此,时间维度可以使用另一种方法。在这个例子中,我们可以手动创建一个时间维度。

下面的步骤将介绍如何创建一个简单的多事实模型,其中包括一个基于底层数据库的时间维度表手动创建的时间维度。

  1. 在 Transformer 中,创建一个名为 GO Revenue and Sales Targets 的新模型,然后插入一个基于包的数据源,在这里是 GO Data Warehouse (query)。
  2. 将第一个数据源命名为 Sales Measures,然后添加来自 Sales fact 的以下项目。
    • Revenue
    • Order day key
    • Product key
    Transformer - Query Definition 窗格
  3. 单击 OK,取消选择 Run Auto Design,然后单击 Finish。
  4. 当提示从数据源添加另一个查询时,单击 Yes。
  5. 在 Query name 文本框中,输入 Sales Target Measures,然后添加以下项目。
    • Sales targets
    • Month key
    • Product type key
  6. 单击 OK,然后创建下面两个数据源。
    Products
    • Product line
    • Product type
    • Product name
    • Product line code
    • Product type key
    • Product key
    Time
    • Year
    • Quarter key
    • Quarter
    • Month key
    • Month
    • Day key
    • Date
    其结果如下所示。
    Transformer - Data Sources 窗格
    为了将 Revenue measure 关联到 Time dimension,相关的字段必须互相匹配。在这个例子中,Sales Measures 的 Order day key 与 Time 的 Day key 不匹配。
  7. 将 Sales Measures 的 Order day key 重命名为 Day key。
  8. 使用下面的项目作为来源值和标签创建一个 Time dimension 和一个 Product dimension。
    Time dimension
    来源值标签
    YearN/A(与来源值相同)
    Quarter keyQuarter
    Month keyMonth
    Day keyDate
    Products
    来源值标签
    Product line codeProduct line
    Product type keyProduct type
    Product keyProduct name
  9. 将这些维度和级别进行正确的重命名。
    Transformer - Dimension Map 窗格
    由于 Sales targets 与 Time dimension 在 Month key 上产生关联,与 Products 在 Product type key 上产生关联,这些级别都需要在该级别的属性上标记为具有唯一分类。
  10. 将下面的级别标记为具有唯一分类值。
    Time dimension
    • Month
    • Day
    Products
    • Product type
    • Product name
  11. 双击 Time dimension,编辑它的属性。目前,这个维度被标记为一个 Regular Dimension。使用这些属性,它就会被标记为一个 Time dimension。
  12. 在 Dimension type 中,选择 Time。
    Transformer - Dimension 窗格
  13. 单击 OK。
  14. 将 Sales Measures 的 Revenue 和 Sales Target Measures 的 Sales target 拖放到 Measures 窗格中。想要查看这些度量指标与数据源的范围,我们可以使用 Show Scope 特性。
  15. 在 Measures 空格中,右键单击 Revenue,然后选择 Show Scope。
    Transformer - Show Scope Dimension Map 窗格
    Revenue measure 属于在两个维度上均为最低级别的范围。
  16. 从下拉列表中选择 Sales target。
    Transformer - Show Scope Dimension Map 窗格
    Sales target 的值属于 Time dimension 的 Month 级别和 Product dimension 的 Product type 的范围中,这正是我们期望的。数据源的范围也可以在这个窗格中查看。
  17. 选择 Data Source,然后从下拉列表中选择 Sales Measures。
    Transformer - Show Scope Dimension Map 窗格
    Sales Measures 数据源查询属于在两个维度上均为最低级别的范围,这两个维度是基于数据源查询之间的键连接。在这个例子中,这些连接是基于 Time 的 Day key 和 Products 的 Product key。
  18. 在下拉列表中选择 Sales Target Measures。
    Transformer - Show Scope Dimension Map 窗格
    正如我们预期的,Sales Target Measures 数据源查询只属于基于数据源查询键连接的维度的最高级别的范围。在这个例子中,这些连接是基于 Month key 和 Product type key。
    如果 Month 级别和 Product type 级别没有被标记为唯一,那么维度图将会把这些级别高亮显示为红色,这表示这些数据源之间的连接关系出现问题。
    Transformer - Show Scope Dimension Map 窗格
  19. 在 PowerCubes 窗格中,创建一个新的 PowerCube,并将它命名为 GO Revenue 和 Sales Targets。
  20. 右键单击 PowerCube,然后单击 Create Selected PowerCube。
  21. 将 PowerCube 发布到 IBM Cognos BI 上,在 Analysis Studio 中打开它,然后创建一个分析。
    Analysis Studio - 交叉表分析
    这样就出现了我们预期的元数据和数据,以及支持 Revenue target 和 Sales target 比较的分析。
    这个特殊的 PowerCube 使您能够深入到 Day 级别,因为 Time dimension 必须使用 Day key 才能正确统计 Sales Measures 的 Revenue。
    Analysis Studio - 交叉表分析显示范围外度量指标的空值
    由于 Sales target 不属于 Day 级别范围,所以没有值返回。在这个例子中,比较销售目标收益的分析只需要到月份级别。使分析只应用月份级别的一个方法是忽略 Time dimension 的 Day 级别。然而,这仍然会在分析中存储 Day 级别数据,但是它是对用户隐藏的。对于包含上百万条记录的数据集,这个方法可能不是最优的。

在下一节中,我们将使用报告作为数据源来创建一个多事实分析,它会在进入 Transformer 处理之前先在数据库层汇总。与前一个例子不同,这个例子将支持更小型的多维数据集构建,因为 PowerCube 不支持更细粒度的分析。


使用 IBM Cognos BI Reports 作为数据源

这个部分将介绍如何从 IBM Cognos BI 报告创建 Transformer 查询,然后再用它们来创建一个 PowerCube。

使用报告而不是包作为数据源具有更大的灵活性。例如,度量指标汇总和计算可以传递到数据库层进行处理,而不是在 Transformer 中处理。这可以加快 PowerCube 的构建时间,同时实现灵活的模型汇总查询。

报告可以基于一个或多个 Transformer 模型的各个维度创建。根据 Transformer 模型需求,度量指标分组也可以在各个报告中创建,或者整合到一个查询中。此外,所有维度和度量指标都可以在一个报告中创建,作为该报告的多个不同查询。这里的关键在于保证查询是独立的,这样所生成的 SQL 就是最小的。将它们放到不同的报告中,或者是放到一个报告的不同查询中,取决于个人偏好,以及用户喜欢的对象维护与组织方式。

在这个例子中,一个报告将在多个查询中使用。对于度量指标查询,Revenue target 和 Sales target 都会被组合到一个度量指标查询中,其中也包括一个显示 Revenue target 和 Sales target 之差的计算。虽然这两个度量指标值来自于不同的数据库表,但是我们将使用 IBM Cognos BI 创建一个查询,将这些度量指标结果汇总到一个通用粒度级别,在这里是 Time dimension 的 Month 级别和 Products 的 Product type 级别。这个方法将会把汇总和计算操作保存到数据库中,而不是将它交给 Transformer 处理。

下面的步骤将介绍如何在一个 Transformer 模型中创建一个使用 IBM Cognos BI 报告作为数据源的简单多事实模型。

  1. 在 IBM Cognos BI 中,打开 Report Studio 中期望使用的包,这里是 GO Data Warehouse (query) 包。
  2. 创建一个清单报告,并添加以下项目来创建一个度量指标查询。 Time dimension
    • Month Key
    • Date
    Products
    • Product type key
    Sales fact
    • Revenue
    Sales target
    • Sales target
    结果如下所示。
    Report Studio - 清单报告
    Month 键、Date 和 Product type 键是从相应的维度上获取的,这样 IBM Cognos BI 才能够正确汇总来自两个不同底层事实表的结果。
    为了生成一个可用于在 Transformer 中自动生成时间分类的日期,我们需要修改 Date 查询项以获取每一个 Month 键和 Product type 键分组的最小日期值。
  3. 双击 Date 字段并将表达式修改为以下形式。
    minimum([Sales (query)].[Time dimension].[Date])
  4. 在 Toolbox 选项卡中,将一个查询计算添加到清单报告中,并将它命名为 Target Variance,然后创建以下表达式。
    [Revenue] - [Sales target]
  5. 将新的 List 对象添加到报告中,并添加以下项目来创建一个 Products 维度查询。
    • Product line
    • Product type
    • Product name
    • Product line code
    • Product type key
    • Product key
    结果如下所示。
    Report Studio - 显示两个清单报告
    要记住给报告的查询取一个有意义的名称,以简化 Transformer 中的数据源创建过程。在这个例子中,我们将它们命名为 Measures 和 Products。
  6. 保存报告,将它命名为 Transformer C8 Report Data Source。
  7. 在 Transformer 中,创建一个新的模型,将它命名为 GO Revenue and Sales Targets - Report Data Source。
  8. 单击 Next,在 Name 文本框中,输入 Transformer C8 Report Data Source,然后确认在 Data source type 中选择了这个报告。
    Transformer - New Data Source 对话窗口
  9. 单击 Next,然后浏览预期的 IBM Cognos BI 报告,在这里是 Transformer C8 Report Data Source。
  10. 单击 Next,然后在 Query name 文本框中,输入一个正确的名称,这里使用的是 Measures。
  11. 在 Source 中,将除 Month key 以外的所有 Measures 项目添加到 Columns 选项卡。
    Transformer - Query Definition 对话窗口
    报告查询使用 Month key 可以实现一个通用的汇总级别。在这里,Transformer 并不需要使用它,因为它使用 Date 查询项来自动生成时间分类。
  12. 单击 OK,取消选择 Run Auto Design,然后单击 Finish。
  13. 当提示从数据源添加另一个查询时,单击 Yes。
  14. 在 Query name 文本框中,输入 Products,然后将 Products 的所有项目添加到 Columns 选项卡。
    Transformer - Query Definition 对话窗口
  15. 单击 OK,然后在提示从数据源添加另一个查询时单击 No。这时,Data sources 窗格就有了两个基于 IBM Cognos BI 报告的查询。
    Transformer - Data Sources 窗格
    注意根节点的报告图标。这个图标可以帮助我们识别数据源的类型。
    现在,我们可以基于这些查询得到的元数据创建一个模型。首先是创建一个 Time dimension。
  16. 从 Measures 中将一个 Date 拖到 Dimension Map 窗格的灰色工具条上。这样就会自动创建一个时间维度。
  17. 双击维度图的 Date,将它重命名为 Time dimension,然后单击 OK。
    Transformer - Dimension Map 窗格
  18. 在 Products 数据源中,使用 Id 作为来源值并使用字符串值作为标签创建一个 Products 维度,如下表所示。
    来源值标签
    Product line codeProduct line
    Product type keyProduct type
  19. 对这些维度和级别进行正确命名,然后在最低级别的属性(这里是 Product type)中,保证它标记为具有唯一分类。这个维度如下所示。
    Transformer - Dimension Map 窗格
  20. 在 Measures 数据源中,将 Revenue、Sales target 和 Target Variance 添加到 Measures 窗格。
    Transformer - Data Sources 和 Measures 窗格
  21. 在 PowerCubes 窗格中,插入一个新的 PowerCube,在这个例子中,它的名称是 GO Revenue and Sales Targets – Report Data Source,然后右键单击 PowerCube,单击 Create Selected PowerCube。
    现在 PowerCube 就可以作为数据源和包发布到 IBM Cognos BI 供分析工具使用。
  22. 右键单击 PowerCube,然后选择 Publish PowerCube as Data Source and Package。
  23. 单击 OK,启动 Publish Wizard。
  24. 按照 Publish Wizard 的指示将这个 PowerCube 发布到 IBM Cognos BI 上。
  25. 在完成之后,打开 IBM Cognos BI,然后再打开刚刚发布到 Analysis Studio 上的包,创建一个分析。
    Analysis Studio - 交叉表分析
    这样就会出现所需要的数据。

使用 DMR 和 OLAP 源

使用现有维度

在 Dimensionally Modeled Relational (DMR) 模型或一个 OLAP 源(比如另一个 PowerCube)中已经创建了维度的情况下,这部分工作也可以在 Transformer 中使用。这可以使用 Dimension Map 窗格的 Insert Dimension from Package 特性实现。在这些情况下,在 Transformer 中使用 DMR/OLAP 作为数据源是非常有用的,因为它可以减少开发时间,提供所需要的维度。换而言之,在一个 Product 维度中的 Product line code 应该与其他 Product 或相关源的 Product line code 相同。这种一致性对于关注追溯和主/细关系的情况是非常重要的。

然而,将维度导入到 Transformer 可能需要一些额外的操作。例如,有一些数据项可能需要进行重命名,才能够保证度量指标数据源查询与导入的维度相关联。这种情况将在本节的后面内容中介绍。

下面的步骤将介绍如何插入一个 IBM Cognos BI 包的维度。在这个例子中,我们已经基于一个 IBM Cognos BI 报告创建了一个 Measures 数据源,而且这些度量指标和 Time dimension 已经完成建模。

Transformer - Dimension Map、Data Sources 和 Measures 窗格

使用从本文学习到的方法,您就可以在执行以下步骤之前创建上述模型。

  1. 在 Transformer 中,右键单击 Dimension Map 窗格,然后单击 Insert Dimension from Package。
  2. 在 Insert from Dimension 对话窗口中,浏览到所需要的包,在这里使用的是 GO Data Warehouse (analysis),它是一个 DMR 包。
  3. 单击 Finish,然后选择所需要的维度、层次或级别。在这个例子中,我们只使用 Product line 和 Product type 这两个级别。
    Transformer - Insert Dimension 对话窗口
  4. 单击 OK。这时会出现一个警告窗口,提示有一些无用项目会从查询删除。
  5. 单击 OK。
    Transformer - Dimension Map and Data Sources 窗格
    Dimension Map 窗格中会出现 Product 维度,而 Data Sources 窗格中会出现一个 GO Data Warehouse (query) 包数据源。请注意一下 Product type key 项目的名称规范。由于在导入过程中出现了命名冲突,所以它前面加了 (2),这个项目是用来在这些维度与 Product 维度之间建立联系的。有两种方法可以解决这个命名问题。我们可以重命名 Measures 查询中的 Product type key 项,或者在 Product 查询中删除 (2)。在这个例子中,我们选择了后一种方法。
  6. 在 Product 查询中,双击 (2) Product type key,将它重命名为 Product type key,然后单击 OK。这时会弹出一个错误消息提示该项目正被一个维度使用。
    Transformer - 错误消息
    这个 Product 将需要重新映射才能够使用新的 Product type key 字段名。
  7. 单击 Yes,然后在 Dimension Map 的 Product 维度上双击 Product type 级别。
    Transformer - Level 对话窗口
  8. 单击 Source 角色的 Column Name 中的省略号,然后映射到 Product type key 字段。
    Transformer - New Association 对话窗口
  9. 在所有打开的对话窗口上单击 OK。
  10. 插入和创建一个名为 Go Revenue – Leverage Dimension 的 PowerCube。
  11. 将这个 PowerCube 作为一个数据源和包发布到 IBM Cognos BI,然后在 Analysis Studio 中使用这个新包创建一个分析。
    Analysis Studio - 交叉分析
    然后数据就会出现。

使用 DMR 和 OLAP Measures

如果您希望在 IBM Cognos BI 的一个 Transformer 模型中使用来自 DMR 或 OLAP 源的度量指标,那么推荐的方法是基于这些度量指标创建一个报告,然后使用这个报告作为数据源。这个报告也可用来生成一个可以在 Transformer 中使用的 CSV 输出。与本文所介绍的其他例子一样,这个报告应该包含所需要的业务键及日期域(如果需要),以便链接到模型中相关的维度上。事实上,除了 SAP BW,您无法在 Transformer 中创建 OLAP 源的度量指标查询。这是因为从一个 OLAP 源获取度量指标结果来创建一个 PowerCube 需要对每一个相关维度的最低级别执行交叉联合操作,这可能会产生大量的查询,它可能会对性能产生重大影响。

关于在 Transformer 中使用 SAP BW 作为数据源的方法,请参考 Transformer User Guide 的详细介绍。

如果使用 DMR 或 OLAP 包来创建度量指标报告作为 Transformer 的数据源,那么我们就可以使用维度功能从成员中提取业务键,以表示所需要的域。例如,从一个 PowerCube 中提取可用于销售度量指标查询的 Product type key 可能会按以下语法来使用一个 Query Calculation。

rolevalue('_businessKey',[great_outdoor_sales_en].[Products].[Products].[Product type])
Report Studio - Query Calculation and Data Item Expression 对话窗口

结束语

通过在 Transformer 中使用 IBM Cognos BI 包和报告作为数据源,创建相应的数据源来表示一个 “唯一真相” 就变得更简单了。当计划一个 Transformer 模型时,一定要考虑业务需求,然后使用最恰当的方法来创建 Transformer 查询。在一些情况下,包可以作为一个数据源使用,而在其他情况下,报告更具灵活性,而且可能减少 Transformer 主机的构建时间。在已经存在维度时,我们可以插入和使用它们来减少 Transformer 的建模时间。


下载

描述名字大小
本文的示例 XML 脚本IBM_Cognos_8_as_a_Data_Source_for_Transformer.zip1403KB

参考资料

学习

获得产品和技术

讨论

  • 参与 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=677665
ArticleTitle=IBM Cognos 最佳实践: 将 IBM Cognos BI 作为 Transformer 的数据源
publish-date=07222011