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

乔帮主 发表于 2014-8-8 15:58:59

报表设计调优含Report Stuido和 Framework

报表设计调优 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属性分别设置为Identifier、Attribute、Fact。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文件,修改以下代码可以更改数据库查询的执行策略。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解决方案:建立B或D的别名表或者快捷键,从而打开闭环回路。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》
页: [1]
查看完整版本: 报表设计调优含Report Stuido和 Framework