IBM Cognos 最佳实践: 在 IBM Cognos 控制器中使用集成帐号进行常规配置的指南

文档性质:技巧或技术;产品:IBM Cognos 8.4.1 FP2+ & TM1 9.4+;关注领域:性能

本文旨在提供从 TM1 数据源中查询大数据集时的性能指导。

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

简介

目的

本文旨在提供从 TM1 数据源中查询大数据集时的性能指导。

适用性

本文适用于使用 TM1 9.4 或更高版本的数据源的 IBM Cognos 8.4.1 FP2 及更高版本

例外和异常

除了目前在适用性部分提及的已知例外或异常之外,还没有发现其他例外或异常。


大型交叉连接操作对 Cognos 报表的影响

像单个交叉连接操作一样,IBM Cognos 8 在边缘处理数个成员集的嵌套。交叉连接集中元组的数量决定了产品集的大小。典型情况下,大型交叉连接集合中的大多数元组都包含 null 值。

交叉连接是成员集的笛卡尔积:

CROSSJOIN({a1, a2},{b1,b2},{c}) = {(a1,b1,c) (a1,b2,c) (a2,b1,c) (a2,b2,c)}

这类交叉连接可能很容易导致产生非常大的报表,这些报表的典型表现如下:

报表毫无原因地运行很长的时间。

报表因 RSV-BBP-0022 错误而失败。

因为绝对亲和力请求 ’asynchWait_Request‘ 而失败,所请求的会话不存在。

BIBusTKServerMain (report server) 通常会消耗大量内存,所以当进程失败时,会导致内存使用急剧下降。


提升 Cognos 报表性能的新过滤选项

IBM Cognos 有一个已实现的过滤器,位于 <install>/C8/Cognos/configuration 目录下的 QFS_config.xml 文件中,称为 “Provider Cross Join”。当使用 TM1 作为数据源时,可以设置该过滤器来帮助缓解上述问题。Provider Cross Join 通过将交叉连接应用于 TM1 提供程序并忽略没有数据的元组,最大限度地减少了 Query Studio、Analysis Studio 和 Report Studio 中从 TM1 服务器传输到 Cognos 客户端的数据和元数据。

结果将根据多维数据集的结构、基数、报表类型、查询的大小以及结果的稀疏情况之间的组合使用而发生改变。所有空单元都有可能消失,空单元可能占所有单元的 80%、50% 或只是少数的几行。没有可以应用的具体算法。通常来讲,NON EMPTY 子句的有效性很大程度上取决于多维数据集中的数据布局。多维数据集中数据的均匀分布(或以对角线形式分布)将彻底阻止过滤效果。在报表中,应对独立的坐标轴随维度的增加而增加的副作用进行预测。对于包含 9 个维度的报表,如果进行数据查询,仅对 8000 个有用单元,就有可能试图返回 3.3 亿个空值。

对于可能有数百万或数亿行的报表,从这些设置中得到的好处会更多。一些多维数据集数据分布相当稀疏,数据集中的许多成员没有实际的数据,多维数据集的数据点不包含我们正尝试检索的元素。小报表没有必要提升性能,除非小报表不利于巨大的稀疏矩阵。

例如:在大型稀疏数据集上使用小列表报表时,您可能要查找上百万的数据行,但在打开过滤器后,只需要查找 15 行即可。但是如果只使用 root 级别或更高级别的合并权限来编写报表,则不会看到性能提升,因为所有的操作都由服务器执行。如果报表只返回 200 个包含空行的单元,则应使用 GUI 局部压缩获得更好的性能。


设置 Provider Cross Join 参数

为在 Cognos 8 中利用新的 TM1 优化,同样需要修改 TM1ODP 提供程序下的配置文件 <c8 installation>\configuration\qfs_config.xml。这些参数将影响针对 Cognos BI Server 的每个 TM1 查询,它们默认情况下是关闭的。推荐在开始的时候将该参数设置为 10,000, 然后减至 1000, 再减至 10, 看哪个值最适合您的报表。过滤器对 null 值和零均有效,因为在默认情况下,TM1 不区分 null 值和零。

同时开启交叉连接和数据过滤选项时效果最好。这些是系统范围设置,目前,一旦设置好了这些设置,就无法为报告重写这些新行为。

	<parameter name="UseProviderCrossJoinThreshold" value="0"/>
	<parameter name="UseNonEmptyOnDataQueryThreshold" value="0"/>

阈值是一个数值,适配器将根据该数值要求 TM1 服务器根据在查询中采用的措施通过过滤掉空元组来减少大型交叉连接集合的大小。

举例来说,在执行报表时,就已经确定了完成查询所需的单元数量,如果单元数量超出了阈值参数,则将压缩 Null 值。

如果评估交叉连接操作时,没有指定查询措施,则将使用默认措施来过滤集合。

缺省设置 0 表示禁用优化,阈值 10,000 是一个明智的用于测试的初值。

阈值是单元的数量,适配器将根据该数量要求 TM1 服务器从 MDX 数据查询结果中忽略空单元。如果选择的阈值太小,那么大量增加的服务器和网络往返次数将影响性能。更高的阈值在移除 null 行和列时不是很有效。根据经验,建议最好采用 10,000 到 100,000 之间的值。


技巧

提供方交叉连接减少结果集后,报表可能包含 null 值和零。当一些小的交叉连接操作在本地进行,或者在查询中引用其他一些措施时,可能发生这种情况。在密集的多维数据集中,不会看到与稀疏多维数据集相同的效果。可以利用 studio 中行/列压缩特性来过滤剩下的 null 行。

修改 qfs config.xml 文件后,为了使更改生效,需要重启 BI 服务器。如果您正在测试配置设置的几个版本,在更换不同设置期间,有可能会终止 IBusTKServerMain.exe 进程。

参考资料

学习

获得产品和技术

讨论

  • 参与 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=742906
ArticleTitle=IBM Cognos 最佳实践: 在 IBM Cognos 控制器中使用集成帐号进行常规配置的指南
publish-date=07042011