基于单事实表framework建模的经验与教训

    在开发过程中往往客户会提出一些看似简单的需求,比如手工贴数文件的报表展示,每个月大概只有几百条增量数据,在这里你需要自己设置表结构,与客户所提供的表样所匹配。。。大多数初学者在这个时候建模都喜欢采用单张事实表建模,认为这样比较方便。。。其实单张事实表建模确实会使你在开发过程中方便不少,但是在后期维护的时候却会有很多头疼的遗留问题。最突出的就是:假如某个查询维度,最开始客户要求显示的只是子项,比如‘机构1,机构2,机构3....’现在客户要求显示‘全部机构,机构1,机构2,机构3......’(在客户不允许使用复选框的情况下)那么你无外乎有以下几种解决方法:

    一,手工添加一个查询,在后台写死SQL'select  '机构1'  as 机构名称 , '全部机构' as 全部机构名称  from dual union select '机构2' as 机构名称 , '全部机构' as  全部机构名称'  from dual, 然后再用这个查询项的机构名称字段与全量查询的机构名称字段关联一次,然后再union一次全量查询,这种方法比较笨,无形中增加了一倍的查询量,而且把机构名称写死在查询里,如果下次客户新增了一家分公司机构的话,那你又要手工修改查询了,如果类似的需求修改出现在许多查询维度上面,那工作量就更大了。

   二,建模的时候添加一张配置表,分公司号,分公司名称,全部机构名称,事实表里面存分公司号。这样的话下次新增机构在配置表里更新一下就可以了,前端关联方法和方法一差不多。这种方法貌似规范,其实也挺麻烦。

   三,理想方法,手工添加一个查询,在后台写死‘select '机构1,机构2,机构3,...... as 机构名称  from dual ’,这个查询返回一个字符串,调用RS中的某个函数,该函数可以解析字符串,以逗号分隔字符串,然后返回一个数据项LIST,在主查询中的限制条件中使用'机构 in  函数(?机构名称?)',遗憾的是这个函数我一直没有在cognos8中找到,不指定cognos10中有没有这个函数,所以我称这个方法为理想方法。。。。如果哪位大侠知道怎么调用这个函数,欢迎您指出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值