【BIEE】04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0
有时候,我们往往会存在这样的需求
例如:事实表的数据如下

EMP_FACT表示事实表,DIM_LEVEL是维度表
预期效果:(根据员工信息,分析各等级员工工资与员工个数)

我们在BIEE报表中新建报表,然后展示报表,展示结果如下:
图1

那么这个效果跟我们的预期效果可是差别比较大的!我们如何来改变这种差别呢?
首先我们分析上面2个表,我们需要解决2个问题,分别是:
①优秀、良好、一般按照顺序排列
②当事实表不存在【一般】级别数据记录时,展示该维度,并且对应值为0
环境准备
首先在数据库建立事实表与维度表
--新建维度表
DROP TABLE DIM_LEVEL;
CREATE TABLE DIM_LEVEL(ELEVEL VARCHAR(2) NOT NULL,
LEVEL_DEC VARCHAR(10),
DETAIL_DESC VARCHAR(100),
PRIMARY KEY (ELEVEL));
INSERT INTO DIM_LEVEL VALUES ('A', '优秀', '工资大于等于2000'); INSERT INTO DIM_LEVEL VALUES ('B', '良好', '工资大于等于1500且小于2000'); INSERT INTO DIM_LEVEL VALUES ('C', '一般', '工资小于1500');
------新建表
DROP TABLE EMP_FACT;
CREATE TABLE EMP_FACT(CUST_ID VARCHAR(40) NOT NULL ,
CUST_NAME VARCHAR(80),
SAL INT,
ELEVEL VARCHAR(2),
PRIMARY KEY (CUST_ID),
constraint FK_ELEVEL FOREIGN KEY (ELEVEL) REFERENCES DIM_LEVEL(ELEVEL));
INSERT INTO EMP_FACT VALUES ('C001', '牧云笙', 6000, 'A');
INSERT INTO EMP_FACT VALUES ('C002', '牧云勤', 10000, 'A');
INSERT INTO EMP_FACT VALUES ('C003', '牧云陆', 1700, 'B');
INSERT INTO EMP_FACT VALUES ('C004', '寒江', 9000, 'A');
INSERT INTO EMP_FACT VALUES ('C005', '穆如天彤', 10000, 'A');
COMMIT;
建立好维度之后,导入元数据到资料库中,并且建立相应连接与逻辑列
以下是已经建好的资料库截图

按顺序展示
上述环境准备好之后,做出来的报表就是【图1】那个样子了,级别是没有顺序的
现在我们需要按照顺序排序,需要在维度表新增一个排序字段
ALTER TABLE DIM_LEVEL ADD SEQ INT;
UPDATE DIM_LEVEL A SET SEQ=(SELECT CASE WHEN ELEVEL='A' THEN 1 WHEN ELEVEL='B' THEN 2 WHEN ELEVEL='C' THEN 3 ELSE NULL END
FROM DIM_LEVEL B WHERE A.ELEVEL=B.ELEVEL)
COMMIT;
1.将排序字段导入资料库

2.拖拽到模型层并且设置【级别描述】字段排序顺序列依赖SEQ

记得将字段拖到展现层哦,否则分析中没有SEQ字段!
3.分析中排序,并且隐藏

设置列属性

点击字段上的
符号,在下拉中选择【排序】→【升序排序】设置SEQ字段为升序,设置完成后会出现如下向上箭头

4.查看

再次看到的数据就是已经排序了,那这个问题可只是个小插曲,并不是本文的精髓所在,下面所说的才是最主要的问题
展示无事实的维度
我们现在只有优秀,良好两个维度,可能有人在看报表的时候就会存在一个疑问,是不是根本就没统计【一般】这个维度,维度缺失确实很容易造成别人的误解,那么我们就来看看如何让他展示呢?
说说我的基本思路:
使用union将另外一个维度与现存事实合并,即虚拟事实
Let’s do it!
打开已有分析→进入【编辑】状态

点击上图的【红色标记】

接着点击第一个【标准(”SCOTT”)】,点击旁边的

点击【复制】即可,接着再点击
,点击后,出现【粘贴】

点击【粘贴】后,出现三个【标准】,按照下面一个找到未定列的那个【标准】,将其【剪切】

【剪切后】就只剩下2个【标准】了

此时,将第一个【标准】中的【员工数】、【员工工资】全部置为sum(0)

修改完成之后,点击【结果】查看效果
结果很让人失望,报错了:

这个是排序问题造成,那么我们将union修改为union all即可解决该问题

此时,点击【结果】

结果一看,还是不对,级别怎么不排序了!这是由于刚才union结果集时排序自动被取消了!
选中【结果列】,增加升序排序在字段SEQ上

高高兴兴的看着等待结果的展示,点击【结果】,请看

真是见鬼了,排序了啊,为什么还是这样呢?
看来还有问题,那就继续寻找答案(是不是因为union all造成的呢?是不是两个结果集在一起就不会排序呢?),各种想法浮现出来,但是真正的问题出现在这里:(看下图标记部分)

将字段【SEQ】拖拽到【级别】前边,排序竟然成功了!

真是一路坎坷!
【BIEE】04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0的更多相关文章
- SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...
- 《BI那点儿事—数据的艺术》理解维度数据仓库——事实表、维度表、聚合表
事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth U ...
- 【BIEE】19_不齐整维和越级维
不齐整维:没有子节点的维度 越级维:层级维度出现断裂,则称为越级维 下图我们就可以清晰的看出: 首先,我们将表导入到资料库做好与事实表的关联后并建立相应维 以下是按照一般维度创建维后的结果 创建完成之 ...
- 维度表, 事实表, 数据仓库, BI...
以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...
- HAWQ取代传统数仓实践(十五)——事实表技术之无事实的事实表
一.无事实事实表简介 在多维数据仓库建模中,有一种事实表叫做"无事实的事实表".普通事实表中,通常会保存若干维度外键和多个数字型度量,度量是事实表的关键所在.然而在无事实的事实表中 ...
- HAWQ取代传统数仓实践(十六)——事实表技术之迟到的事实
一.迟到的事实简介 数据仓库通常建立于一种理想的假设情况下,这就是数据仓库的度量(事实记录)与度量的环境(维度记录)同时出现在数据仓库中.当同时拥有事实记录和正确的当前维度行时,就能够从容地首先维护维 ...
- HAWQ取代传统数仓实践(十四)——事实表技术之累积快照
一.累积快照简介 累积快照事实表用于定义业务过程开始.结束以及期间的可区分的里程碑事件.通常在此类事实表中针对过程中的关键步骤都包含日期外键,并包含每个步骤的度量,这些度量的产生一般都会滞后于数据行的 ...
- HAWQ取代传统数仓实践(十三)——事实表技术之周期快照
一.周期快照简介 周期快照事实表中的每行汇总了发生在某一标准周期,如一天.一周或一月的多个度量.其粒度是周期性的时间段,而不是单个事务.周期快照事实表通常包含许多数据的总计,因为任何与事实表时间范围一 ...
- BI中事实表和维度表的定义
一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...
随机推荐
- windows实时监测热插拔设备的变化2
//动态监测设备插拔 #include <Dbt.h> BEGIN_MESSAGE_MAP(ParticipateMeeting, CDialogEx) ON_WM_DEVICECHANG ...
- Android 系统启动过程详解
android 使用 linux 内核,一般运行在 ARM 体系架构上,android 设备启动的过程,应用层之下基本等同于linux, 从应用层第一个程序init开始有所区别,下面开始介绍. ste ...
- linux下如何实现简单刷屏【转】
转自:http://blog.csdn.net/figthter_cui/article/details/6145272 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天为了测试我的LCD有 ...
- 从jscript脚本混淆说起
转载:http://www.freebuf.com/column/144897.html 脚本病毒是一个一直以来就存在,且长期活跃着的一种与PE病毒完全不同的一类病毒类型,其制作的门槛低.混淆加密方式 ...
- C++ 图像处理类库
GIFLIB是一个 C 语言的 Gif 图像处理库.支持 Gif 图像读写. 如果需要单独处理某类图片格式,以上类库是比较好的选择,如果处理的格式种类比较多,下面的类库是比较好的选择. ImageMa ...
- 利用注册表在右键添加VisualCode快捷方式
分为两种配置,第一种是对于文件右键也就是 关联文件 第一步: Win+R 打开运行,输入regedit,打开注册表,找到HKEY_CLASSES_ROOT\*\shell分支,如果没有shell分支, ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 51nod 1133 不重叠的线段【贪心/区间覆盖】
1133 不重叠的线段 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的 ...
- SpringCloud集群(三)
一.构造步骤 1.进行其他的服务中心的域名映射 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com 2 ...
- springMVC笔记:jsp页面获取后台数据记录列表
1.读取数据库中的记录List<HashMap<String,String>> attributes; 2.Controller构造Model如下: @RequestMappi ...