前一段时间,完成了在报表开发中的任务,将一年来的 Cognos 开发经验小小的做了下总结。
Cognos 这个 BI 有着 IBM 软件基本都具备的特点:大!没错,整个 Cognos 环境相当庞大,当然它的功能也相当强大, 但伴随而来的,它非常难用,最起码相比国内的报表,比如帆软,润乾什么的,它在开发上逊色很多,但是却成熟稳定。 Cognos的开发周期比较长,你需要先建模,发布,然后才能建立报表,如果你想修改模型,那你需要再次发布,再逐个 更新报表,你其实也可以直接在报表中直接使用sql语句建立模型,但也失去了许多高级特性。
- Cognos 在使用 SybaseIQ 作为数据库时,经常不能够,经常不能查出刚更新的表和数据,对于刚入库的表,你可以
在数据源中配置
AutoPreCommit=Yes
,但对于刚更新的数据,你只能牺牲性能,在报表中关闭高速缓存了。 - 慎用查询提示页面,有时你漏传参数导致的异常可能会被提示页面的默认参数所隐藏而不易被发现,这使得你在使用 SDK 时尤其危险。
- 删除一个查询时切记先断开该查询的所有引用,否则在查询时出现查询引用不存在的异常,使你不得不直接修改报表 源代码来手动断开引用。
- 如果想删除一个报表元素,而不希望删除与之绑定的查询或者查询项,可使用剪切代替删除命令。
- 尽量使用 块 布局报表,而不是使用表格,表格容易在你导出报表为 Excel 时引起布局混乱。
- 设计查询时尽量减少分组的数目,以提高查询速度。
- 交叉表的无数据内容标签不会生效。
- 建议不同的开发人员使用不同的用户去开发报表,以便于追踪报表修改记录以及处理误操作引起的责任判定。
- 尽量不要把不同功能的模块混合在一张报表中实现。
- 报表模型中数组的参数格式为
a,b,c,d
而报表视图中的参数格式为[a,b,c,d]
- 在设计报表模型时,如果某个存储过程引用了错误的数据源,可直接在存储过程定义对话框中修改;如果某个查询引用 了错误的数据源,要修改,只能删掉查询重新添加或者在源代码中修改。
- Cognos 在导出为 Excel 时,不支持导出图表的基线 (Baseline)。
- Cognos导出 CSV 时,列表的同一个单元格中,只支持导出第一个项。
- 报表元素的生成变量设置在导出CSV时无效。
- 在折线图和面积图的数据点上显示数据值会极大的影响报表的打开速度,是一个非常鸡肋的功能。
- 对于需要实时查询的报表业务,最好禁用报表调整缓存,Cognos 的缓存机制存在严重问题,会导致你在数据更新比较频 繁的情况下,同一查询返回的数据存在很大差异。