COGNOS模型查询机制如何理解,新手请大家帮忙
1
大神们好~
使用中,一直存在这么一个问题:在完成一个report studio的query时,这个query是怎么关联模型的?
比如:模型的创建为
select a,b,c from table1;
query的数据项选取了a,b。筛选条件是b=1
那么,数据是怎么查出来的呢?筛选条件是直接作为where条件和模型的sql关联,还是根据模型的sql把数据都查出来,再用where b=1来筛选呢?
期待大神指教~
使用中,一直存在这么一个问题:在完成一个report studio的query时,这个query是怎么关联模型的?
比如:模型的创建为
select a,b,c from table1;
query的数据项选取了a,b。筛选条件是b=1
那么,数据是怎么查出来的呢?筛选条件是直接作为where条件和模型的sql关联,还是根据模型的sql把数据都查出来,再用where b=1来筛选呢?
期待大神指教~
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
3 个回复
左右 - 数据服务专家 专注于IBM家族高级分析领域钻研 数据可视化践行者 2015-11-07 回答
赞同来自: 何永威
首先这个问题是一个涉及filter怎样工作的最好的一个问题。
请看我按照你的例子做了一个简单模型,在这里选在a,b或c都不重要,重要的是所有被我“临幸”的列都进入了模型的xml文件中,从此没有被选上的不会参与数据库的查询。
看这个截图
制作模型与发布包我就不详述了,下来你看到我建立一个简单的filter,也就是你说的where
这里,你会看到一个选项,对查询结果非常重要,也直接回答了你的问题
1. before aggregate
从得出的sql中你会看到,这个where直接发给数据库,将所有满足条件的统统拿出来。
2. after aggregate
这里的sql生成出来就不同了,首先cognos/sql做了一次计算,而你的where是建立在这个计算上的。
将两段生成的sql拿出来对比,可以看到你说的where也就是这个filter的两种方式——一个是直接查询数据库,另一个计算聚合之后再查(总计)
梁勇 - 天道酬勤、上善若水。爱好商业智能 2015-11-07 回答
赞同来自:
lv90103 - 学的越多,会的越少 2015-11-12 回答
赞同来自: