RS交叉表自动汇总后百分比列显示错误之解决方案
可以说在从事Cognos开发的过程中,仅仅对数据展现而言,大多数用户使用最多的工具便是Report Studio了,此工具可以帮助我们快速的构建一些可供用户自主选择的数据报告。当然我个人认为没有什么开发工具是完美的,又或许是有一些高端的功能是普通人发现不了的,今天我们就来说一下在RS的一个常规交叉表中显示百分比的问题.
一:环境配置
操作系统 : Win10 专业版
模型 :FM发布的DMR模型
Cognos Version:Cognos10.2.1
DB type :SQLserver 2008R2
二:问题描述
2.1:设计过程
用RS新建一个交叉表,从模型中拖入了对应的行和列,然后选中省份,在菜单栏选择总计,结构如下图所示,即展示每一年每一个省份的相关数据和占比,
占比我们基于现有的数据项随便的写一个公式,没有任何业务意义,如下图所示
占比公式:订单笔数/订单金额

2.2:运行结果
从下图可以看出,运行后汇总行除了占比列之外其他的度量值汇总是正确的,但是2014年和2015年的占比是错误的,从下面的计算可以看出来正确结果
2014年总的占比为:4,502,953 /443,688,319.35 =1.01%
2015年总的占比为:8,960,473 /891,635,581.05 =1.00%
总结可以得出,自动的总计是把百分比按照度量值得标准,把所有百分比的列的数值汇总了而已,而实际的汇总是:年订单笔数/年订单金额

三:解决方案
3.1:方法1:更改数据项引用位置
3.1.1:查看默认查询结构
如下图所示,我们找到我们交叉表对应的查询,数据项如下图所示,都来自我们的星型模型层-订单分析

3.1.2:更改默认查询结构
更改上图中的 年,省份,订单笔数,订单金额的引用位置,这里我们可以改为物理层(table)或者是视图层(view),这里说的视图层只是
基于物理层创建了一个查询主题,赋予字段以中文名称,方便开发人员理解,具体如下图所示,确保年,省份,订单笔数,订单金额 都更改引
用为视图层

然好我们再创建一个数据项'汇总'表达式如下图所示

3.1.3:重新拖入布局
根据3.1.2中的查询项,更换原来的年,省份,订单笔数,订单金额,然后把汇总数据项放在省份下面,然后给省份添加自动汇总,如下图所示

运行查看结果,从下图可以看出,我们自己添加的汇总生效了,接下来就是删除自动汇总保留我们自己手工添加的汇总即可,解决了交叉表占比汇总错误的问题

3.2:方法2:重新发布数据模型
3.2.1:还原模型
把模型还原到初始的状态,即数据项全部来自模型层,即下面的状态

3.2.2 设计报表格式
新建汇总数据项和3.1中的操作一样,把汇总放到省份下面,如下图所示,然后保存报表

3.2.3 重新发布FM
到Frame Work设计界面,重新发布报表引用的数据包,以非动态的模式发布,如下图所示

3.2.4 运行查看效果

四:问题分析
1:要解决此问题必须不能使用RS中的自动汇总必须我们自己添加一行自定义汇总,如上图中的最后一行数据,其实SQL默认的生成了
类似于group by '汇总'的sql语句
2:首先结论1 是必须的,如果我们的FM数据包是动态模式发布的,那么我们必须更改数据项的引用层为物理层或者视图层
3:首先结论1 是必须的,如果我们的FM数据包是非动态模式发布的,那么我们无需更改数据项的引用层,发布层和数据层,物理层都可以
4:动态模式发布的数据包查询的时候生成的是本地MDX查询,非动态模式发布的数据包查询的时候生成的是本地SQL
RS交叉表自动汇总后百分比列显示错误之解决方案的更多相关文章
- Json序列化,date类型转换后前端显示错误的解决方案
1.前台使用Jquery解决 (1)如果我们前台使用Jquery来解决这个问题的话,那么我们首先想到的是我们如何解析这个过程呢,当然我们就想到了自己写一个JavaScript脚本来解析这个过程,当然这 ...
- 微擎转移服务器后,出现 require()错误,解决方案
微擎中切换服务器后出现该问题,有可能是导致配置的问题
- easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案
在onLoadSuccess 中加入如下代码就OK啦 $('#dg3').datagrid({ onLoadSuccess:function(data){ if(data.total==0){ var ...
- Ueditor富文本编辑器--Ctrl V 粘贴后原有图片显示错误
最近负责将公司官网从静态网站改版成动态网站,方便公司推广营销人员修改增加文案,避免官网文案维护过于依赖技术人员.在做后台管理系统时用到了富文本编辑器Ueditor,因为公司有一个阿里云文件资源服务器, ...
- Idea根据表自动生成实体
Idea根据表自动生成实体: 首先说下这种方式有个缺点,就是如果表里面有日期.时间类型,那么需要手动的设置映射类型 第一步:在Idea中配置好数据库: 在Idea窗口右边,点击Database按钮 配 ...
- 基于querybuilder的可根据现有数据表自动生成Restful API的dotnet中间件
AutoApi 基于SqlKata Query Builder的可根据数据表自动生成Restful API的dotnet中间件 项目地址 Github Gitee 支持的数据库 MySql AutoA ...
- [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供)
[问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供) \[|A|=\begin{vmatrix} 1 & x_1^2-ax_1 & x_1^3-ax_1^2 &am ...
- WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次 悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...
- mybits根据表自动生成 java类和mapper 文件
mybits根据表自动生成 java类和mapper 文件 我这个脑子啊,每次创建新的工程都会忘记是怎么集成mybits怎么生成mapper文件的,so today , I can't write t ...
随机推荐
- 为了增强团队的协作和高效开发,提升代码质量,TGideas团队一起制订的代码规范。主要包括五部分内容:PC规范、移动端规范、性能优化、CP规范、其他项目规范
http://tguide.qq.com/main/index.htm
- 【数论】【扩展欧几里得】Codeforces Round #484 (Div. 2) E. Billiard
题意:给你一个台球桌面,一个台球的初始位置和初始速度方向(只可能平行坐标轴或者与坐标轴成45度角),问你能否滚进桌子四个角落的洞里,如果能,滚进的是哪个洞. 如果速度方向平行坐标轴,只需分类讨论,看它 ...
- [BZOJ3928/4048]Outer space invaders
[BZOJ3928/4048]Outer space invaders 题目大意: 有\(n(n\le300)\)个物品,第\(i\)个物品会在\(a_i\sim b_i\)时刻出现,且离你的距离为\ ...
- mysql反向解析导致连接缓慢
Content 0.序 1.问题 2.原因 3.解决办法 0.序 本文主要是记录Mysql安装在 VMWARE下,本地连接Mysql速度很慢的原因及解决办法. 1.问题 本地的一个网站使用mysql数 ...
- 使用清华大学开源软件镜像AOSP的“每月更新初始化包”更新指定版本的Android源码
参照官方教程:Tsinghua Open Source Mirror 1. 下载了repo工具 mkdir ~/bin PATH = ~/bin:$PATH curl https://storag ...
- gcc 内联汇编
http://www.cnblogs.com/zhuyp1015/archive/2012/05/01/2478099.html
- linux驱动移植的重要数据结构
转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201304/14-2538.html 对于嵌入式 Linux 系统来说,有各种体系结构的处理器和 ...
- java线程的一些基础小知识
--------------------------------------------------------------------------------------------------线程 ...
- VS2010 打包生成exe文件后 执行安装文件出现 TODO:<文件说明>已停止工作并已关闭
一.VS2010 打包生成exe文件后 执行安装文件出现 TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了 ...
- Android.mk中引用第3方动态库
Android.mk 文件内容: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOC ...