COGNOS模型查询机制如何理解,新手请大家帮忙

1
大神们好~

使用中,一直存在这么一个问题:在完成一个report studio的query时,这个query是怎么关联模型的?


比如:模型的创建为

select a,b,c from table1;

query的数据项选取了a,b。筛选条件是b=1

那么,数据是怎么查出来的呢?筛选条件是直接作为where条件和模型的sql关联,还是根据模型的sql把数据都查出来,再用where b=1来筛选呢?




期待大神指教~
已邀请:
1

左右 - 数据服务专家 专注于IBM家族高级分析领域钻研 数据可视化践行者 2015-11-07 回答

感谢你邀请我回答这个问题。

首先这个问题是一个涉及filter怎样工作的最好的一个问题。
请看我按照你的例子做了一个简单模型,在这里选在a,b或c都不重要,重要的是所有被我“临幸”的列都进入了模型的xml文件中,从此没有被选上的不会参与数据库的查询。
看这个截图

2015-11-07_16h42_41.png



制作模型与发布包我就不详述了,下来你看到我建立一个简单的filter,也就是你说的where

2015-11-07_16h49_56.png



这里,你会看到一个选项,对查询结果非常重要,也直接回答了你的问题
1. before aggregate

2015-11-07_16h51_16.png

从得出的sql中你会看到,这个where直接发给数据库,将所有满足条件的统统拿出来。

2015-11-07_16h53_02.png

2. after aggregate

2015-11-07_16h53_39.png

这里的sql生成出来就不同了,首先cognos/sql做了一次计算,而你的where是建立在这个计算上的。

2015-11-07_16h54_31.png


将两段生成的sql拿出来对比,可以看到你说的where也就是这个filter的两种方式——一个是直接查询数据库,另一个计算聚合之后再查(总计)

2015-11-07_16h58_45.png



 
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2015-11-07 回答

@左右 回答的好详细啊,,这个真心不错的好文,可以写成文章啊,哈哈,帮忙推荐到首页啊。
0

lv90103 - 学的越多,会的越少 2015-11-12 回答

回复的好详细,谢谢老师分享,学习。。今天刚看到,以后经常来玩。

要回复问题请先登录注册