IBM Cognos BI 最佳实践: IBM Cognos 8.3 中的报表批量分发功能

本文档讨论了在多个场景下 IBM Cognos 8.3 中的报表批量分发(burst)如何工作。这些信息旨在补充 Report Studio 用户指南中的信息。

1. 简介

1.1 目的

本文档讨论了在多个场景下 IBM Cognos 8.3 中的报表批量分发(burst)如何工作。这些信息旨在补充 Report Studio 用户指南中的信息。

1.2 适用范围

本文档适用于 IBM Cognos 8.3 Business Intelligence。


2. 批量分发  List1  报表

我们将查看三种选项来批量分发一个带有分组 List 报表的简单示例。List 查询包含我们希望传播的信息,其中包括一个分组数据项,它决定了哪些用户获得哪些数据。

我们将虚构一个包含地区销售信息的报表。该报表将根据地区代码分组并批量分发。

2.1 选项 1 – 使用一个查询的批量分发

对于这一选项,我们将定义一个单一查询,它将用于以下三种用途:

  • 作为 List Query
  • 作为 Burst Query
  • 作为 Recipient Query

在本例中,该查询名为 List Query。

List Query 将包含以下信息:

图 1. List Query 包含的信息
图 1. List Query 包含的信息

或 Repeater 报表,这种报表也使用非旋转(un-pivoted)查询。

注意,如阴影部分所示,包含 Recipients 会对每个 Recipient 重复数据。即使在这个简单的例子中,查询中的行数因为添加了接收者而翻倍。这会对数据检索产生影响,但是不会影响对查询布局查询结果的批量分发。在生成报表输出时,批量分发的关键信息将进行分组,并且使用不同的批量分发键为每个批量分发键生成一个输出文件(或文件集,如果以多种格式呈现的话)。

图 2. 配置批量分发方式
图 2. 配置批量分发方式

在运行时, 这个批量分发将按以下方式执行:

1. Burst Query (List Query) 将运行。

2. 对于 Burst Query 中的每个 Burst Group (Region Code),Recipients 都是可用的。

3. 为 Burst Query 中的每个 Burst Group (Region Code) 创建一个 Burst Instance(比如,PDF 文件),并发送到相关的 Recipient Address(s)。

这样做的结果就是 Burst Query (List Query) 将运行一次,并且我们将 Burst Groups (Region Code) 分发到 Recipients。

使用该选项的理想情况是所有或大部分 Burst Groups 都被发送给一个 Recipient,这样查询中就不会出现或只有少量的重复数据。

注意:如果批量分发键和接收者被存储在多个表中,那么需要处理这些表之间的连接(join),以确定批量分发 / 接收者查询的连接后的查询结果。

2.2 列表选项 2 – 使用两个查询的批量分发

在这个选项中,我们将定义两个单独的查询:

  • List 和 Burst Query:同时用作 List 查询和 Burst 查询
  • Recipient Query:用作 Recipient 查询

List 和 Burst Query 包含我们希望传播的信息,包括 Region 分组数据项,我们将对该数据项确定哪些用户获得哪些数据:

表 1. List 和 Burst Query 查询
Region Code Region Revenue
NA North America $123
ER Europe $123
OT Other $123

Recipient Query 包含 Recipient 信息。在我们的例子中,Recipients 全部是电子邮件地址。该查询将 Recipient(s) 和 Burst Group (Region) 关联了起来。

表 2. Recipient Query 查询
Region Code Recipient
NA fred.smith@abc.com
NA maggie.jones@abc.com
ER david.black@abc.com
ER jane.white@abc.com
OT mary.doe@abc.com
OT teddy.schmoe.abc.com

我们将按如下所示配置批量分发:

图 3. 配置批量分发
图 3. 配置批量分发

为了连接 Burst Query 中的 Region 和 Recipient 查询中的 Region,主从关系将指定 [Region Code] -> [Region Code]。

在运行时,这个批量分发将按以下方式执行:

  1. Burst Query (List and Burst Query) 将运行。
  2. 对于 Burst Query 中的 Burst Group (Region Code),我们将执行 Burst Recipients 查询 (Recipient Query),该查询将 Region Code 作为一个过滤项传递(典型的主从操作)。
  3. 在 Burst Query 中为每个 Burst Group (Region Code) 创建一个 Burst Instance(比如 PDF 文件),并发送到相关的 Recipient Address(s)。

这样做的结果就是 Burst Query 将运行一次 ,并且 Burst Groups (Region Codes) 将对每个 Burst Group (Region Code) 执行一次 Recipient Query。

这个选项的优点就是它不会在 List Query 中复制数据。此选项适合用于需要将每个 Burst Group 发送到多个 Recipient 的场景。由于 Recipient Query 会运行多次,因此此方法的一个潜在缺点就是可能会由于多个查询而引起数据库负载问题,但是它的优点是不需要处理单独的 burst 和 recipient 表之间的连接。然而,每个 Burst Group 的 Recipient 列表都非常小,这些查询通常也非常小,因此对数据库的影响也较小。

2.3 选项 3 多个接收者电子邮件地址

一个不常见的选项是在 Recipient Query 的一个单一行中指定多个接收者。只有在接收者为电子邮件时才支持该选项。

表 3. 单一行中指定多个接收者的查询
Region Code Region Revenue Recipient
NA North America $123 fred.smith@abc.com, maggie.jones@abc.com
ER Europe $123 david.black@abc.com, jane.white@abc.com
OT Other $123 mary.doe@abc.com, teddy.schmoe@abc.com

在 Recipient 数据项中,使用逗号分隔多个电子邮件接收者。这允许我们使用选项 1 –单个查询,并且避免了复制数据或运行多个查询的缺点。我们的查询将如下所示:

该选项是 IBM Cognos 8.3 的新增特性。


3. 批量分发交叉表 2

IBM Cognos 8 不支持直接批量分发一个交叉表查询。因此,必须使用单独的 Burst 和 Crosstab Queries。我们将讨论使用两个或三个查询的选项。

3.1 交叉表选项 1 – 使用两个查询的批量分发

与列表选项 1 相同,该选项对 Burst and Recipient 查询使用单个查询:

图 4. Burst and Recipient 查询使用单个查询
图 4. Burst and Recipient 查询使用单个查询
表 4. 使用两个查询的批量分发
Region Code Region Recipient
NA North America fred.smith@abc.com
NA NorthAmerica maggie.jones@abc.com
ER Europe david.black@abc.com
ER Europe jane.white@abc.com
OT Other david.black@abc.com
OT Other jane.white@abc.com

由于实际的数据位于 crosstab 查询中,因此 Burst and Recipient 查询只需要包含 Burst Key (Region Code) 和 Recipient:

crosstab 查询将包含数据。crosstab 查询将针对每个 Burst Key 执行一次。当从接收者处分离出数据后,在 Burst Query 中返回相同的数据不会产生任何问题。

crosstab 查询将对每个不同的批量分发键执行一次。

3.2 交叉表选项 2 – 使用三个查询的批量分发

一个批量分发也可以使用三个查询。将从 Burst Query 到 crosstab 查询以及到 Recipient Query 查询之间建立一个主从关系,如下所示:

图 5. 交叉表选项
图 5. 交叉表选项

burst 查询将包含 Burst Group (Region Code) 和 Label (Region):

表 5. burst 查询
Region Code Region
NA NorthAmerica
ER Europe
OT Other

Recipient Query 将包含 Burst Group 和 Recipient:

Region Recipient

表 6. Region Recipient 查询
Region Code Recipient
NA fred.smith@abc.com
NA maggie.jones@abc.com
ER david.black@abc.com
OT david.black@abc.com
OT jane.white@abc.com

Crosstab Query 与 Recipient Query 相同。

该方法没有明显的优势,并且有一个缺点,因为现在需要多次提交 Recipient Query(对每个批量分发组提交一次)。

3.3 选项 3 多个接收者邮件地址

它的操作方式与 list 和 crosstab 查询相同。

再次说明,对于电子邮件类型的接收者,当使用逗号分隔电子邮件接收者时,可以在一个行内定义多个接收者。这允许我们对交叉表使用选项 1 的包含两个查询的方法。burst and recipient 查询将如下所示:

表 7. burst and recipient 查询
Region Code Region Recipient
NA North America fred.smith@abc.com, maggie.jones@abc.com
ER Europe david.black@abc.com,jane.white@abc.com
OT Other mary.doe@abc.com, teddy.schmoe@abc.com

该选项是 IBM Cognos 8.3 的新增特性。


4. 批量分发多语种报表

每个批量分发报表执行都在一种语言(本地)中运行。因此,要批量分发多语种报表,必须在每一种语言中运行它。通过调度报表并选择需要的语言可以实现这一点。注意,将针对选择的每一种语言运行报表(并批量分发)。

在报表内部,还需要根据语言过滤接收者。这需要对 Recipient 信息添加额外的语言代码并对 Recipient Query 进行过滤。Locale() 函数可用于返回当前语言,以实现过滤目的。


5. 批量分发不同的报表模式

大多数报表模式,比如 PDF、HTML 和 Excel,都根据由创建者指定的报表布局呈现。CSV 和 XML 都基于这些数据。因此,当批量分发到基于布局和数据组合的格式时,报表将运行两次来创建所需的布局。


6. 结束语

实现批量分发有多种选择;本文档的信息旨在帮助您选择最适合自己的方式。


附录 A:术语

  • Burst Group – 报表分组项,用于创建 Burst Instances,比如 Region Code
  • Burst Instance – 一个报表结果,比如一个 PDF 文档,其中选中的数据将被分发到 Burst Recipients
  • Burst Recipient – IBM Cognos 8 用户或邮件地址,可将 Burst Instance 发送给这些接收者或供其使用。
  • Burst Query – 驱动批量分发处理的查询。该查询包含 Burst Group 数据项。对于列表而言,该查询通常是由列表引用的查询。由于 crosstab 查询无法直接执行批量分发,因此 Burst Query 通常用作一个主列表查询,而 crosstab 为从查询。
  • Recipient Query – 包含 Burst Recipient 信息的查询。这通常是与 Burst Query 相同的查询。
  • Recipient Data Item – Recipient Query 中的数据项,包含电子邮件地址或接收者的 CAMID。
  • Burst Master-Detail – 用于连接 Burst Query 和 Recipient Query。
  • Burst Label – 用于为 Burst Instances 提供名称的数据项,例如按 Region Code 批量分发的报表可能包含 Region 的 Burst Label。

参考资料

学习

获得产品和技术

  • 在线试用 IBM Cognos BI 试用版软件,了解 IBM Cognos BI 商业智能解决方案的最新版本新功能。
  • 下载 IBM Cognos Express V9 试用版软件,了解 IBM 专为中型企业定制的集成商业智能和计划解决方案。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere®的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

讨论

条评论

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=491199
ArticleTitle=IBM Cognos BI 最佳实践: IBM Cognos 8.3 中的报表批量分发功能
publish-date=05212010