Cognos 开发总结

清单报表

流程

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

原生开发

  • 筛选

    • 普通筛选

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

      mark

    • 树状提示

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

    mark

    • 金额类筛选

      做如下设置,避免数据结果异常

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

      mark

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

      mark

  • 列表

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

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

    mark

    示例代码:

    [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

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

使用方法:

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

Chrome 切换目标文档:

mark

Firefox 切换目标文档:

mark

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

mark

CSS

  • 树状提示遮挡

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

    webcontent\skins\corporate\viewer\common.css

    #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

    mark

    3). 构建维度度量

    • 普通维度

    mark

    • 日期维度

    mark

    • 普通度量

      直接拖拽生成

    • 计算度量

      mark

      mark

    • 添加指标描述

      mark

  3. 生成、发布mdc

    mark

    mark

进阶

  • 抑制不展示的层级

    mark

  • 权限控制

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

    刷新权限脚本,需修改:

    • OpenMDL
    • PowerCubeCustomViewListUpdate
    • SaveMDL

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

  • 清理维度缓存

    • 脚本文件

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

    • 手动清理

    mark

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

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

服务配置

  • win服务器

    • 定时重启

      echo [%date% %time%]=重启90服务>> log.log
      shutdown /r /t 10 /f
      timeout 15 > NUL
      echo [%date% %time%]=重启失败>> log.log
      
    • 远程重启

      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前,会自动生成新的维度图)