壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 316|回复: 0

如何阅读Cognos生成的SQL

[复制链接]
发表于 2012/3/9 16:27:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

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

x
当Cognos应用时直接从关系数据库读取数据时,通过 Cognos ReportStudio 查看的到的SQL形式大致如下:
with "RPT_MON_DMS3" as (
select distinct *
from "RPT_HQ"."RPT_MON_DMS"),
"期间" as (
select "RPT_MON_DMS3"."RPT_MON" "RPT_MON", "RPT_MON_DMS3"."MON_NM" "MON_NM", "RPT_MON_DMS3"."YEAR_ID" "YEAR_ID"
from "RPT_MON_DMS3"
where "RPT_MON_DMS3"."RPT_NM"='RPT_PA_INDV_CUST_NO_FCT')

select distinct "期间"."YEAR_ID" "年key", "期间"."RPT_MON" "日key", "期间"."MON_NM" "New_Query_Item"
from "期间"

SELECT {[期间]..[all].[2009].[200901]} DIMENSION PROPERTIES PARENT_LEVEL, CHILDREN_CARDINALITY ON AXIS(0) FROM [C:/Program Files/cognos/c8\./bin\../temp\dmbTemp_3320_0048_12688060120.dmc]
      上面是一段典型的Cognos生成的SQL,with后面跟着两个子查询"RPT_MON_DMS3""期间" ,后面带下划线的是一段主查询,这是一个单一SQL组成的查询语句,此处的SQL也可能由多个语句组成,但是在语句和语句之间没有明显的分隔符号,只能靠SQL语法来阅读,由于Cognos生成的SQL一般带有with关键字,而且一个SQL语句只有一个with关键字,因此可以从with关键字的出现来判断SQL语句的间隔位置,如果这样仍然不方便阅读的话,可以使用TOAD等工具的格式化功能,可能更容易阅读。
      最后一段是Cognos的MDX多维查询语句,此语句的产生,说明最终的查询结果是经过了Cognos的本地处理过程而获得的,即Cognos通过前面的一个或者多个SQL语句的查询结果放在Cognos的对应用服务器上,再通过Cognos的多维处理引擎处理,最终生成结果。一般这个MDX语句会出现在整个查询语句的最后阶段,并且该语句无法直接提交给关系数据库执行。
      通过以上方法,可以对Cognos就该报表的执行过程有一个比较确切的理解,同时,也是将来用于优化Cognos应用性能的重要手段!

该贴已经同步到 xiaoerp的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 22:07 , Processed in 0.014566 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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