Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(4)创建多维钻取分析

  在上一节时,我们创建了一个基于部门号的工资分类汇总。 这里就引出了一个概念:维度

  专业的解释大家自行百度,这里就不班门弄斧了。从数据的使用角度看,维度可以简单的理解成“数据分类汇总的一种依据”。

  按“部门号(DEPTNO)”对“工资(SAL)”进行分类汇总,“DEPTNO"就是一种维度;按“工作岗位(JOB)”对“工资”进行分类汇总,“JOB”就是另一种维度;

  维度之间也可以有层次关系,比如:我们先按“工作岗位” 汇总,然后每个相同工作岗位的员工,再按“部门”汇总。这种场景下:DeptNo就认为是Job的子级维度。

  先按Job汇总数据,相同Job的,再按DeptNo做更详细的数据汇总,这种逐层深入的数据分析过程,在BI层里有一个专业术语:钻取(Drill).

  下面就刚才的场景(即:按JOB -> DEPTNO来层层对SAL进行分类汇总),来看看维度如何创建:

一、db表结构的创建

  通过上回的学习,大家应该有一个大概印象,每种数据分类的依据,我们应该创建一张小表来与之对应(比如按部门号汇总时,DEPT部门表就认为是一张维度表)

  现在我们要通过JOB、DEPTNO 这二个有层级的维度对数据进行分析,所以:得有二张表。

  动手之前,插点题外话:通常对数据进行分析比较消耗db性能(特别是复杂的分析),所以一般真正的BI分析,都会事先把数据抽取到另一张表(甚至另一个专用于BI分析的库),这样分析时,不至于影响正常的生产系统使用。
这里我不想对数据抽取展开讨论(事实上,这一块我还没学会~_~),但是为了体现这个思想,我们创建几张以“BI_”为前缀的新表来作为BI分析的数据源。

create table BI_DIM_JOB as  select  distinct(job) from emp;
create table BI_DIM_DEPT as select deptno,dname from dept;

  这样就创建了二张小表BI_DIM_JOB、BI_DIM_DEPT以对应JOB、DEPT二个维度,但通常表还得有主键:

alter table BI_DIM_JOB
  add constraint PK_BI_DIM_JOB primary key (JOB);
alter table BI_DIM_DEPT
  add constraint PK_BI_DIM_DEPT_DEPTNO primary key (DEPTNO);

  加上主键后,我们再来看下主表EMP,既然JOB、DEPTNO都准备用单独的小表记录,主体表中就不再需要这些字段了,我们只是想对SAL进行分析,所以我们把EMP主表也做下处理:

create table BI_FACT_EMP as select empno,sal from emp;
alter table BI_FACT_EMP
  add constraint PK_BI_FACT_EMP primary key (EMPNO);

  这样就得到了一张新的(事实)主表,做为BI的事实表数据源。

  哦,仔细看了一下:这张表里没有ENAME(员工姓名),干脆,把EMPNO也当成一个维度,独立出来吧:

create table BI_DIM_EMP as select empno,ename from emp;
alter table BI_DIM_EMP
  add constraint PK_BI_DIM_EMP_EMPNO primary key (EMPNO);

  看到这里,可能已经有人发现了一个重大的问题:主表BI_FACT_EMP与这些小表之间好象没有任何数据上的关联关系?

  看来,还少一张用于描述EMPNO与JOB、DEPTNO之间关系的表:

create table BI_DIM_DRILL_EMP as select job,deptno,empno from emp group by job,deptno,empno order by job,deptno,empno;

alter table BI_DIM_DRILL_EMP
  add constraint PK_DIM_DRILL_EMP_EMPNO primary key (EMPNO);

alter table BI_DIM_DRILL_EMP
  add constraint FK_DIM_DRILL_EMP_REF_JOB foreign key (JOB)
  references bi_dim_job (JOB);

alter table BI_DIM_DRILL_EMP
  add constraint FK_DIM_DRILL_EMP_REF_DEPTNO foreign key (DEPTNO)
  references bi_dim_dept (DEPTNO);

alter table BI_DIM_DRILL_EMP
  add constraint FK_DIM_DRILL_EMP_REF_EMPNO foreign key (EMPNO)
  references bi_dim_emp (EMPNO);

alter table BI_FACT_EMP
  add constraint FK_BI_FACT_EMP_REF_EMPNO foreign key (EMPNO)
  references bi_dim_drill_emp (EMPNO);

  好了,天下太平,主表BI_FACT_EMP 与 从表 BI_DIM_DRILL_EMP 通过EMPNO关联,而 BI_DIM_DRILL_EMP 再进一步通过EMPNO、JOB、DEPTNO分别与BI_DIM_EMP、BI_DIM_JOB、BI_DIM_DEPT关联,完全符合数据库范式。

  光看上面的sql脚本,比较容易晕,为了更直观的说明各表的关系,这里给一张关系图:

二、创建RPD 模型及维度

2.1、 先用“BI管理”工具,联机打开当前RPD,并把原来的对象全清空掉,再按前几次学到的知识,把刚刚新创建的"BI_"打头的表,全添加进来,弄好后,大概是下面这个样子

注意图中二个黄色的字段:SAL_SUM、EMPNO_COUNT,这是我手动新添加的二个聚合字段,SAL_SUM是对SAL的SUM聚合,而EMPNO_COUNT是对EMPNO的COUNT聚合,参见下图:

 2.2、 在scott上右击->新建对象-》逻辑维-》具有基于级别的层次的维

在弹出的界面中,输入名称:BI_EMP_DIMs

然后在BI_EMP_DIMs上右击-》新建对象->逻辑级别

输入EMPNO(即创建最底层的维度)

 然后把BI_DIM_DRILL_EMP下的EMPNO拖动到刚创建的维度EMPNO下,如下图:

完成后,类似下图:

在EMPNO维度上右击-》新建对象-》父级别

 命名为DEPTNO 

完成后,可以看到DEPTNO与EMPNO已经呈现出父子层次关系

同样,把BI_DIM_DRILL_EMP中的DEPTNO拖动刚创建的维度DEPTNO上,如下图:

在DEPTNO维度上,再继续创建父级维度JOB

同样把BI_DIM_DRILL_EMP上的JOB拖动到新创建的维度JOB上,最终的维度层次如下图:

2.3、创建维度关键字:在JOB上右击->新建逻辑级别关键字(如下图)

保存默认,不作任何修改,直接点击“确定”

类似的,在DEPTNO,EMPNO二个子级维度上,也创建关键字,然后点击保存,最终的样子如下图:

注:保存成功后,每个维度下的字段前,会有一个类似“手*枪”的小图标

2.4、把整个维度BI_EMP_DIMs拖动到【表示】层中的BI_FACT_EMP上,如下图:

如果这时点击保存,会弹出如下错误:

解决方法:在EMPNO上右击-》属性(如下图)

点击+号

在弹出的界面中,展开SCOTT下的BI_DIM_DRILL_EMP表,双击EMPNO(即设置BI_DIM_DRILL_EMP的EMPNO字段为维度EMPNO的显示列)

类似的,把BI_DIM_DRILL_EMP的DEPTNO设置成维度DEPTNO的显示列,把BI_DIM_DRILL_EMP的JOB设置成维度JOB的显示列,再次点击保存,应该就能成功了。

模型和维度终于弄好了,已经成功80%,革命胜利在望!

三、创建钻取分析

登录,切换到管理菜单,点击“重新加载文件和元数据”,以便让刚才修改过的RPD生效

创建一个分析,从左侧的主题区域里,可以看到刚才创建的各种模型,我们选JOB和SAL_SUM、EMPNO_COUNT这三列,如下图:

切换到结果标签,如下图,注意JOB列标题及该列数据,都以A链接的形式呈现,为了方便以后修改,这里我们先保存一下,文件命名为SCOTT_EMP_DRILL,同时点击工具栏的小图标(如下图),预览下在仪表盘中的效果

这是仪表盘中的呈现效果,可以在JOB标题上点击一下

这里,BIEE会根据维度的层次关系,自动“下钻”到下一个维度(即DEPTNO),如下图:

DEPTNO维度下,还有最底层维度EMPNO,还可以继续下钻,如下图(注意一下每次钻取后,SAL_SUM、EMPNO_COUNT这二列的值会自动更新)

当然,维度不止这一种玩法,还可以直接把整个维度放到分析结果中,如下图,如果双击BI_EMP_DIMs把整个维度加入所选列

为了美观,我们把列名“汉化”一下

把列标题改成“工资”,其它几列也类似处理

现在看起来舒服多了

可以点击分组数据前的+号展开,这样就以另一种类似树状的方式进行钻取了

最后,为了让分析结果看起来更fashion一点,给它加个动态图表。不过做这个之前,有一个细节得先处理一下,“人数(EMPNO_COUNT)”是“个位数”级别的(<10),而“工资汇总(SAL_SUM)”是“千位数”级别的,如果二个条形柱显示在同一张图中,"人数"的柱状图高度几乎接近于0,根本看不出来,所以有必要把“人数”的数值放大一些,以保持跟SAL_SUM接近(至少同一个数量级)

把人数放大1000位以后,结果看上去还比较满意

下面是钻取过程中,图表动态变化的几张截图:

下钻到DEPTNO维度时的截图

下钻到最底层EMPNO时的截图

截了近一天的图,总算写完了,希望对于正在学习oracle BIEE的朋友们有所帮助

时间: 2024-07-28 17:45:11

Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(4)创建多维钻取分析的相关文章

Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(2)RPD资料档案库创建

BI创建(数据)分析.仪表盘.报表前,都需要对数据进行建模,在oracle biee里称为创建"资料档案库"-该文件后缀为RPD,所以一般也称为创建RPD文件. 步骤: 1.从windows开始菜单里,找到"BI 管理",如下图: 2.点击工具栏第一个按钮"创建"一个(脱机/离线的)RPD文件,这里我们命名为Scott.rpd,同时注意记好密码,比如Admin123 3.选择数据源(即创建到数据库的连接) 注1:上图中的数据源名称,其实就是ora

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤   说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance.  Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含

探索Oracle之数据库升级六 11.2.0.4.3 Upgrade12c(12.1.0.1)

探索Oracle之数据库升级六11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言:       Oracle 12c发布距今已经一年有余了,其最大亮点是一个可以插拔的数据库(PDB),这是在之前版本没有的:但是如果我们要将以前版本的数据库升级到12c来,那么也应顺其自然的将其变成一个pdb,那么我们的工作不仅包含了数据库软件的升级,同时也包含如何将一个NO-CDB的数据库plug to CDB none. 二.升级要求:   三.升级前准备:          3.1.查看

探索Oracle之数据库升级四 11.2.0.4.0 PSU 11.2.0.4.3

探索Oracle之数据库升级四11.2.0.4.0 PSU 11.2.0.4.3   一.  检查当前数据库PSU号: [oracle@db01 ~]$ cd/DBSoft/Product/11.2.4/db_1/OPatch/ [oracle@db01 OPatch]$ ls crs docs emdpatch.pl jlib ocm opatch opatch.bat opatchdiag opatchdiag.bat opatch.ini opatch.pl opatchprereqs o

商业智能(BI,Business Intelligence)。

商业智能(BI,Business Intelligence).商业智能的概念最早在1996年提出.当时将商业智能定义为一类由数据仓库(或数据集市).查询报表.数据分析.数据挖掘.数据备份和恢复等部分组成的.以帮助企业决策为目的技术及其应用.目前,商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具.商务智能系统中的数据来自企业其他业务系统.例如商贸型企业,其商务智能系统数据包括业务系统的订单.库存.交易账目.客户和供应商信息等,以及企业所处行业和竞争对手的数据.

解决oracle客户端可以连接11g rac vip,但是不能连接scan ip问题

local不用动,remote_listern按我说的设置一下,应该就可以了! # Public Network - (eth0) 10.4.56.39    syquadb1 10.4.56.40    syquadb2 # Public Virtual IP (VIP) addresses - (eth1) 10.4.56.41    syquadb1-vip 10.4.56.42    syquadb2-vip # Private Interconnect - (bond0:eth2 et

oracle-Oracle BIEE技术Oracle BIEE能做鼠标悬停提示的那种效果吗?

问题描述 Oracle BIEE技术Oracle BIEE能做鼠标悬停提示的那种效果吗? 请问下各位大神,Oracle BIEE能做鼠标悬停提示的那种效果吗? 解决方案 自己来回答,请参考这篇文章http://blog.csdn.net/windfo/article/details/6222111 解决方案二: Oracle BIEE 没用过,关注一下,期待哪位大神出手 解决方案三: 估计够呛,我上次提这个问题.管理员直接给删掉了.

【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)

RAC在LINUX上使用NFS安装前准备(六) 介绍                                   回到顶部 下载软件 l  Oracle Enterprise Linux 5.7 l  Oracle 11 g版本2(11.2)和修改和数据库软件 回到顶部 操作系统安装 本文使用Oracle Enterprise Linux 5.7. 一般的图形操作系统安装指南在这里. 更具体地说,它应该是一个服务器安装的2 g交换(最好是3-4G),Linux禁用防火墙和安全. Orac

visual studio-安装过sql2014 business intelligence 之后,模板里面只有analysis

问题描述 安装过sql2014 business intelligence 之后,模板里面只有analysis 安装过sql server 2014 business intelligence 之后,打开VS 2013 模板里面只有analysis,正常还应该有其他的功能的,安装的时候一开始说缺少vs2103 shell(集成),下载之后安装,用sql server 2014 business intelligence 又修复了一下,提示安装成功,但是打开就是这个样子 查了下网上的应该是这个样子