最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[部署调优] 报表设计调优含Report Stuido和 Framework

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-8 15:58:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
报表设计调优
1 Report Stuido设计调优1.1 手写SQL定制报表查询
通过Tabular SQL对象的使用,可以任意组织需要的SQL语句,定制报表的查询,查询结果会以查询项的形式在报表中被使用。具体操作步骤如下:
1.      选中报表模型对象。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
2.        在左下方的属性栏中点击Generated SQL属性,弹出报表模型对应的Native SQL。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
3.        在Generated SQL窗口中选择Convert to SQL,弹出SQL编辑窗口,在此进行SQL语句的组织,组织好的SQL语句可以通过Validate按钮进行校验。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
4.        返回的SQL结果将以查询项的形式在报表定制中被使用。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
注:在SQL语句的编写中除了可以使用本地数据库支持的标准数据库函数外,还可以接受FRAMEWORK中支持的宏函数,例如:#prompt(‘P_DATE’,’date’)#。此中调优策略虽然支持非常灵活的SQL语句组织,但是由于已经不是通过工具自动生成SQL,因此在业务人员定制报表时,须熟练掌握数据库SQL语句。
1.2 报表函数的使用
在报表函数的使用上,尽可能使用应用数据库能够解析的本地数据库函数,函数列表中的通用函数,在处理时会将函数放在报表服务器进行运算,从而增大了报表服务器的性能开销。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
注:可以通过GeneratedSQL查看使用函数是否是提交给本地数据库进行运算。
1.3 过滤条件顺序调整
根据数据库优化策略,可能需要将过滤条件的顺序进行调整,可以在Filters窗口中进行设置。这里只有将过滤条件的Usage属性设置为Required,才会在Generated SQL中看到对应的where子句过滤条件。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
注:因表关联而自动生成的where子句会自动组织在where子句的最后,该顺序不能调整。
1.4 查询字段、查询表顺序调整
根据数据库的优化策略,可能需要将查询字段的顺序进行调整,可以在Data Items窗口中进行设置。查询SQL语句中,From关键字后面的表顺序是按照select关键字后出现的字段顺序进行设置的。在为表顺序进行设置时,属性为Identifier或Attribute的字段比属性为Fact的字段在为表排序时的优先级要高,即,先以Identifier、Attribute字段的出现顺序为表进行排序,如果没有上述两类字段,才以Fact字段的出现顺序为表进行排序。
注:在Framework中将字段的usage属性分别设置为IdentifierAttributeFact
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
1.5 聚合前后设置过滤条件
将过滤条件的Application属性设置为After aggregation或Before aggregation可以调整过滤条件在聚合前或是聚合后生效。After aggregation生成过滤条件的SQL语句使用的是关键字having,而Before aggregation生成过滤条件的SQL语句使用的是关键字where。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
1.6 自动分组汇总设置
Tabular Model对象的属性Auto Group & Summarize可以设置当前SQL语句的查询中是否加入distinct、sum、group by这样的关键字。默认情况下,该属性设置为Yes,可以根据查询情况关掉此开关项,减少SQL语句的复杂度。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg
1.7 字段排序设置
在Tabular Model的数据项(Data Item)对象中有预排序(Pre-Sort)的属性设置,可以在此设置排序,查询生成的SQL语句中会出现Order By的关键字。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
在Query的数据项(Data Item)对象中有排序(Sort)的属性设置,也可以在此设置排序,查询生成的SQL语句中同样会出现Order By的关键字。如果在Tabular Model中也对该数据项的预排序属性进行设置,则以Query中的数据项排序属性为准。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg
1.8 自动排序设置
在Query的Auto-sort属性中可以为查询设置是否自动排序。如果选择是,则会在生成的SQL语句中自动加入Order By关键字,排序字段将自动根据数据项的属性进行设置(如果查询字段的usage属性为Attribute、Identifier则排序,如果为Fact则不排序);如果选择否、则不排序;如果选择最小,则根据数据项的排序属性进行排序设置。默认值为最小。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
注:如果进行了报表分组操作,则所有分组的字段会自动进行排序。
1.9 报表Processing设置
在Query的Processing属性中可以为查询设置SQL的处理设置。cognos Report Studio会将报表的所有设置首先转换为Cognos SQL提交给报表服务器,服务器在进行必要处理后,会将SQL语句转换为应用数据库本地执行的SQL语句,进行数据库处理。为提高报表的处理速度,要尽可能的将报表的处理运算放在数据库进行,以保证其运行速度。将该属性设置为Database only会将报表页面生成的Cognos SQL不经报表服务器处理全部转换为数据库能够执行的本地数据库SQL,如果将该属性设置为LimitedLocal,则将报表页面生成的CognosSQL先进行必要的报表服务器运算,然后再将剩余的部分提交给数据库进行本地SQL的处理。默认值为Framework中为Datasource对象的设置的queryProcessing属性。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg
注:虽然数据库的运算效率较高,但并不是所有的报表页面请求都可以完全提交给数据库进行,一些报表的特殊处理必须由报表服务器进行。
1.10 外连接设置
在Query的Outer JoinAllowed属性中可以为查询设置是否允许外连接操作。由于外连接会带来数据库查询的性能压力,因此可以根据查询情况适时调整外连接的操作设置。如果将该属性设置为Allow,则允许外连接查询;如果将该属性设置为Warning,虽然也会允许外连接查询,但是在校验报表时会警告查询存在外连接;如果将该属性设置为Deny,则拒绝外连接查询。默认值为Framework中Edit Governors下的Outer joins属性设置。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg
1.11 向量乘积设置
在Query的Cross ProductAllowed属性中可以为查询设置是否允向量乘积操作。所谓向量乘积,指查询中的数据项来自于没有建立任何关联关系的查询主题。如果将该属性设置为Allow,则允许向量乘积,查询结果为查询主题间建立笛卡儿乘积的结果;如果将该属性设置为Warning,虽然允许向量乘积查询,但是在校验报表时会警告查询存在向量乘积;如果将该属性设置为Deny,则拒绝向量乘积查询。默认值为Framework中Edit Governors下的Cross-Product joins属性设置。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
1.12 使用With子句
在Query的Use SQL WithClause属性中可以为查询设置是否使用With子句。部分数据库例如Oracle支持With关键字,当查询中嵌套子查询时,可以通过With子句的使用,减轻报表服务器对CognosSQL的处理,从而提升报表的运行性能。如果将该属性设置为Yes,则允许使用With关键字,查询中生成的Native SQL将出现With子句;如果将该属性设置为No,虽然拒绝使用With关键字。默认值为Framework中Edit Governors下的Use WITH clause when generatingSQL属性设置。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg
1.13 报表服务器本地缓存设置
在Query的Use LocalCache属性中可以为查询设置是否使用本地缓存。如果将该属性设置为Yes,则启用服务器的本地缓存,服务器将为查询结果保存在session中,当用户在浏览器内再次打开同一张报表时,查询结果将取自缓存,从而减轻了数据库的负载压力;如果将该属性设置为No,则禁用服务器的本地缓存,查询结果全部取自数据库的实时数据。默认值为Framework中Edit Governors下的Allow usage of local cache属性设置。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
1.14 汇总项设置
在Dimention的Overall属性中可以为报表设置是否进行单元格的汇总计算。如果将该属性设置为Yes,则在报表页面进行页面分组操作后当点击汇总计算的时候会在报表的最后一行生成一行汇总计算,在大数据量查询的情况下,进行汇总计算会增大报表的运行性能开销。如果将该属性设置为No,则不进行最后一行的汇总计算。默认值为Yes。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image036.jpg
1.15 数据库查询的策略设置(First Rows设置)
在Query的属性中点击GenerateSQL会在Native SQL中看到在select关键字后有“/*+ FIRST_ROWS */”这样的数据库查询执行策略。可以通过配置文件的修改更改此处的数据库查询执行策略。在CRN_ROOT\bin\路径下打开Cogdm*.ini这样的文件(根据不同的数据库类型选择不同的配置文件),以Oracle数据库为例,打开cogdmor.ini文件,修改以下代码可以更改数据库查询的执行策略。
[Directives Session ORACLE9.2.0]
First_Row_Text="FIRST_ROWS"
2 FrameworkManager设计调优2.1 手写SQL定制查询主题
右键点击查询主题的菜单项Edit Definition…可以进入SQL语句编写框,调整查询主题的SQL语句。默认情况下,这里的SQL语句为Cognos SQL类型。如果需要编写应用数据库可以直接运行的本地SQL需要将这里的SQL类型进行设置。点击右上方的Options按钮,选择SQL Settings标签页,选择SQL Type为Native。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image038.jpg
注:如果查询主题中的查询项引自另一查询主题,则该查询主题的SQL Settings属性设置会继承原查询主题的此项设置。
2.2 函数列表指定
在菜单项Actions中选择Specify Package Function List…指定报表定制中可以使用的数据库函数列表。将除应用数据库意外的其他数据库类型从Selected function sets中选到Available function sets中,避免在报表定制中,错误使用数据库函数。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image040.jpg
2.3 表关联设定
在建立表关联(Create Relationship)时,尽量避免使用外关联关系(包括左外关联、右外关联、全外关联)。外关联的使用会使数据库的查询压力骤增,从而影响前端报表的生成。在星型结构、雪花型结构的数据仓库模型中,尽量按照一对一、一对多的关联关系设定维表与实事表之间的关联,Cognos ReportNet Server会依照这里的关联关系自动优化提交给数据库的SQL语句。如果关联关系中出现了环状连接关系,可以通过别名表或是快捷键的方式解决环状连接问题,具体原理请参照下图。
环状连接一:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image041.gif
解决方案:建立多个B的副本,可以是别名表或者是快捷键。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif
环状连接二:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif
解决方案:建立BD的别名表或者快捷键,从而打开闭环回路。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image044.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image045.gif
环状连接三:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image046.gif
解决方案:建立A的副本,可以是别名表,或者是快捷键。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image047.gif
2.4 EditGovernors查询性能设置
在菜单项Project中选择Edit Governors,可以设置查询的查询性能。部分设置已经在前面的《ReportStudio设计调优》中提到,这里就不再做解释。主要针对其他四项性能设置加以说明。
2.4.1 Reporttable limits设置
该属性设置报表中运行SQL所涉及的TABLE数量,如果超过设定值则提示错误,默认值为0,没有限制,单位个。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image049.jpg
2.4.2 Dataretrieval limits设置
该属性设置报表中运行SQL返回结果的数量,如果超过设定值则提示错误,默认值为0,没有限制,单位行。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image051.jpg
2.4.3 Queryexecution time limits设置
该属性设置报表中运行SQL的执行时间,如果超过设定值则提示错误,默认值为0,没有限制,单位秒。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image053.jpg
2.4.4 Largetext items limit设置
该属性设置报表中运行SQL返回大文字块的字符数量限制,如果超过设定值则提示错误,默认值为0,没有限制,单位字。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image055.jpg
附录
参考文档:
l  《Cognos ReportNet(TM) Installation andConfiguration Guide
l  《Cognos Configuration User Guide
l  《Cognos ReportNet (TM) User Guide
l  《Query Studio User Guide
l  《Cognos Report Studio User Guide
l  《Cognos ReportNet(TM) Administration andSecurity Guide
l  《Framework Manager User Guide

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-6 20:38

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表