Cognos 开发总结

清单报表

流程

  1. 后台(表结构,存储过程);
  2. cpf模型

原生开发

  • 筛选

    • 普通筛选

    建议使用当前查询的数据项(如下图),便于维护与移植。

    mark

    • 树状提示

    只有使用常规维度 (如下图)的字段,树状提示机构才能正常加载。

mark - 金额类筛选

1
2
3
4
5
6
7
8
9
  > 做如下设置,避免数据结果异常

  首先,去除`金额类字段`的`聚合函数`属性,如下图:

  ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180507/aG3hJ9Cmmj.png)

  然后,在期对应的筛选中,选择`应用程序` =>`自动聚合之后`

  ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180507/K0gblA4hDk.png)
  • 列表

    • 列表中多余的字段不能用删除剔除,从列表删除会同时从查询删除。用剪切剔除。
    • 列表
  • 权限

清单权限控制,通过模型过滤器实现,如下图:

mark

示例代码:

1
2
3
4
5
6
7
8
9
  [bi].[R_PREMMAINDOC].[COMCODE] = #sq($account.personalInfo.userName)#
  OR
  [bi].[R_PREMMAINDOC].[COUNTYCODE] = #sq($account.personalInfo.userName)#
  OR
  [bi].[R_PREMMAINDOC].[CITYCODE] = #sq($account.personalInfo.userName)#
  OR
  [bi].[R_PREMMAINDOC].[PRVNCCODE]  = #sq($account.personalInfo.userName)#
  OR
  #sq($account.personalInfo.userName)#='01'

cognos服务中 用户名即所属机构,故通过userName匹配

自定义开发

JS

清单内调用的JS全部迁移到报表外部,在清单筛选末尾的HTML项目中统一调用。

  • 翻页与页码

更改清单报表默认翻页样式

代码详见:\webapps\p2pd\report_js\page_control.js

mark

  • 日期批处理 dateAllTo(参数)

webapps\p2pd\report_js\date_control.js

1
2
置空:参数为空 或者 参数=0 ;
置昨天:参数=1

使用方法:

在浏览器控制台,切换目标文档到Cognos报表页,执行dateAllTo(参数);

Chrome 切换目标文档:

mark

Firefox 切换目标文档:

mark

若 未切换,JS未加载,将报错如下:

mark

CSS

  • 树状提示遮挡

解决 “多个树状提示,纵向排列,展开时互相遮挡” 的问题

webcontent\skins\corporate\viewer\common.css

1
2
3
4
  #upper_index .clsTreePane{z-index:100;}  /*第1个树状提示*/
  #upper_index_2 .clsTreePane{z-index:99;} /*第2个树状提示*/
  #upper_index_3 .clsTreePane{z-index:98;} /*第3个树状提示*/
  /*可以拓展,数值递减*/

PS:更改 JS、CSS 后,客户端浏览器需要清理缓存,才能生效。

多维报表

流程

  1. 后台(表结构,存储过程);

  2. mdl模型

1). iqd文件(封装sql);

2). mdl中导入iqd

1
  ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180508/6kLAJKbEI2.png)

3). 构建维度度量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  - 普通维度

  ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180508/7HEjK8Bc7a.png)

  - 日期维度

  ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180508/EJlac0aacG.png)

  - 普通度量

    > 直接拖拽生成

  - 计算度量

    ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180508/aFLDhj2Iab.png)

    ![mark](https://pic.nickhoo.com/img/blog/qiniu-blog/pic/180508/mGgbfe063E.png)
  • 添加指标描述

    mark

  1. 生成、发布mdc

mark

mark

进阶

  • 抑制不展示的层级

mark

  • 权限控制

D:\YPIC_CGNS\transformer\YPIC\权限脚本\全险种cubeAuth.mdl

刷新权限脚本,需修改:

  • OpenMDL
  • PowerCubeCustomViewListUpdate
  • SaveMDL

当机构维度发生结构性变化时,需要刷新维度缓存,再刷权限才能生效

  • 清理维度缓存

    • 脚本文件

    D:\YPIC_CGNS\transformer\YPIC\权限脚本\全险种CleanHouse.mdl

    • 手动清理

mark

需要清理维度缓存的几种情况:

  • 维度信息发生更改;
  • 模型迁移后,需要彻底清理旧的维度缓存;
  • ……

服务配置

  • win服务器

    • 定时重启
    1
    2
    3
    4
    
      echo [%date% %time%]=重启90服务>> log.log
      shutdown /r /t 10 /f
      timeout 15 > NUL
      echo [%date% %time%]=重启失败>> log.log
    • 远程重启
    1
    2
    
      net use \\ip passwd /user:administrator #注意ip前的"\\"
      shutdown /r /t 10 /m ip # /r 重启,/t 时间(秒) /m 远程主机 /f 强制……
    • 跨服务器传输文件

    目前win集群间的文件同步方式如下:

    • 主节点 通过iis启用ftp服务;
    • 从节点 配置wget定时下载主节点的文件。
  • Cognos服务

迁移升级

以 DEV ==> UAT 为例,Cognos升级前,要求后台数据库已升级完毕

清单

DEV复制模型 ==> DEV导出报表 ==> UAT导入报表 ==> UAT更新模型 ==> UAT发包

操作详情

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

导出的文件存储在Cognos服务安装目录ibm\cognos\c10_64\deployment下,toUAT-CW.zip。将此文件包复制到UATCognos服务安装目录ibm\cognos\c10_64\deployment下,并导入UAT的Cognos(操作参考导出)。

接下来,更新模型:

mark

mark

最后,重发数据包。

多维

  1. 准备要升级的iqd数据源文件、mdl模型文件;
  2. 在模型中修改数据源的用户身份;
  3. 清除所有维度的缓存(CleanHouse)
  4. 生成cube(生成cube前,会自动生成新的维度图)