Cognos报表性能调优(二)—— Report Studio设计优化

浏览: 3328

接着上篇文章,继续介绍Cognos Report Studio报表的设计优化

Report Studio中优化报表性能,总体来说,可以从以下几个方面入手。

 

–根据索引项过滤
–多维模型过滤技巧
–查询使用策略
–查询属性调整
–报表问题处理

 

–根据索引项过滤

首先,要了解两个概念, use Value和display Value ,一个是面向SQL过滤的值,一个是面向用户展示的值。

例如,在Sample中的go_sales(Query) Package。其中 对于Product Line,建议根据Product Line Code过滤,对于Order Method,根据Order Method Key 过滤。

我们在RS设计时通常会创建Prompt来提供用户选择数据过滤参数,对于用户,了解的只有名称,而在数据表中,数据是根据key值做索引的,所以 我们在设置prompt时,应该将带索引的key值设置为use Value ,而用户能明白的name项设置为display value。

 

–多维模型过滤技巧

首先,在多维模型报表设计时,避免使用关系型的过滤器。
例如使用明细过滤会降低效率。建议采用多维模型的过滤方式,例如filter函数、slicers

 

其次,是使用Supress还是过滤函数?
Supress操作在Cognos Server本地实现,大数据量情况下可能会导致性能低下。查看Generated SQL/MDX,其中没有任何过滤。抑制的处理位于本地,
通过filter函数定义数据项实现过滤,对比Generated SQL/MDX,发现在数据库进行了过滤,这样的效率大大高于本地处理。

 

再次,切片还是在报表中直接指定成员?
当只需要显示某个成员的数据时,有的做法是在报表设计界面,拖动该成员所属的级别到交叉表,然后在Query设计中使用切片,筛选出该成员数据,运行报表时我们会看到只有该成员有数据,其他成员为空,再添加Supress功能来隐藏其他空行空列。这种方法效率不高。
建议使用这样的方法,在报表页面直接拖动需要的成员到交叉表行列;或者,为了实现动态选择,可以使用Query Calculation,添加参数。[].[].[]->?Param?,还可以实现用户动态选择显示的成员。另外还有一种方法,Set Definition,可以对hierarchy或者层设置过滤。这样的效率都比前面的方法更好。

 

–查询使用策略


使用单项还是关联页面的Query来显示自由格式报表?
使用两种方式可以实现同样的效果,但是效率大不相同。

使用多个单项,会产生多个Query,分别从数据库取数。而采用一个query,关联到page,就可以自由在页面中使用query中的数据项。两种方法在前段显示时并无区别。从Generated SQL来查看区别,Query的数量不同。
另外,如果要显示用户参数,建议使用报表表达式,例如ParamDisplayValue(),比从query中拖动数据项更有效率。

还有个技巧,尽量使用一个Query,为所有报表元素提供数据。即使用一个父查询产生一个大而全的数据集,子查询取其中部分数据集做汇总和计算。
父查询利用缓存技术,减少了报表对数据库的访问次数。
该方法常用的报表案例为,交叉表和图表组合的页面,使用同一个Query查询,但是使用不同的分组、汇总。

 

–查询属性调整


类似于FM调优,对于单张报表设置相关参数。

在查询资源管理器中,选中一个查询,在左下角属性中调整参数,与FM中Set Governors参数相同,这里的参数仅对该报表起效,且可以覆盖Package的设置。

详细参数设置见 Cognos报表性能调优(一)——  FM设计优化

推荐 2
本文由 hupingzhi 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册