立oracle BIEE step by step.docx
- 文档编号:14894425
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:46
- 大小:1.99MB
立oracle BIEE step by step.docx
《立oracle BIEE step by step.docx》由会员分享,可在线阅读,更多相关《立oracle BIEE step by step.docx(46页珍藏版)》请在冰点文库上搜索。
立oracleBIEEstepbystep
BI创建(数据)分析、仪表盘、报表前,都需要对数据进行建模,在oraclebiee里称为创建“资料档案库”-该文件后缀为RPD,所以一般也称为创建RPD文件。
步骤:
1、从windows开始菜单里,找到"BI管理",如下图:
2、点击工具栏第一个按钮“创建”一个(脱机/离线的)RPD文件,这里我们命名为Scott.rpd,同时注意记好密码,比如Admin123
D:
\BIEE\instances\instance1\bifoundation\OracleBIServerComponent\coreapplication_obis1\repository
3、选择数据源(即创建到数据库的连接)
注1:
上图中的数据源名称,其实就是oracle连接串(当然你可以在tnsname.ora里配置,并复制到指定位置,但是我觉得这种方式比较麻烦,还不如直接指定连接串来得直接),下面是示例连接串:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
注2:
用户名这里,我们指定oracle的经典用户名scott(默认密码是tiger),安装oracledb时,如果这个用户被锁,可用dba帐号解锁
4、导入元数据,这里我们暂时只导入一张表SCOTT.EMP
5、点击导入按钮时,参照下图,填写db用户名/密码等信息
6、导入后,应该类似下面这样,但是根节点的名称太长了,我们可以在根节点上右击->重命名,改个更有意义的名称,比如localhost
7、从【物理】层,把SCOTT拖到【业务模型和映射】层
8、创建一个聚合字段(SAL_SUM),很多报表中通常会对某字段做汇总统计,这里我们对工资SAL字段,创建一个汇总字段,如下图,先创建副本
9、在创建好的“SAL副本”上右击->选择属性
10、修改新字段的名称为SAL_SUM(这样看上去可读性更强一些)
11、切换到【聚合】页,选择【默认聚合规则】为"Sum",即汇总求合
12、把【SCOTT】从【业务模型和映射】层拖到【表示】层
13、最终三个层的视图应该类似下面这样
注:
其实这三层,类似于软件开发中的经典三层结构,【物理】层表示数据的物理表结构,而【业务模型和映射】层相当于【BusinessModel】层,而最终的【表示】层,有点象M-V-VM中的【ViewModel】层,用于最终报表/分析的展现。
14、保存
注:
如果保存过程中,提示一致性检查有错误,暂时不管,直接保存即可,因为我们目前只导入了一张【主】表(BI中也称为事实表),没有其它子表(BI中也称为维度表)与之关联
上面的操作做完后,我们就得到了一个离线的rpd文件,必须把它上传到BI,变成联机才能使用,下面是让其联机的步骤:
1、登录http:
//localhost:
7001/em ,展开左侧节点中的BusinessIntellgence->coreapplication,点击“锁定和编辑配置”
2、浏览上传刚才的Scott.rpd并点击“应用”及“激活更改”
3、重新启用所有BI服务
如果您按上面的步骤操作,会杯具的发现:
重启所有服务时会失败。
并非要给大家故意挖坑,我也是实践才知道这样不行:
)
原因就是RPD模型里所有对象,都要有关联关系,通俗点讲,拖进来的表,至少要有2个,而且这二张表要有主外键关联关系。
(遇到错误,才会映象深刻!
)
所以,大家重复上面的操作,再拖进另一张表DEPT即可.
同时,可以【业务模型和映射】空白区右击->业务模型图表->整个图表
可以看到DEPT与EMP之间的关联。
保存,这时应该一致性检查应该能通过。
然后再次上传资料档案库,并重启所有服务,应该就OK了
接上回继续,RPD文件做好上传后,好戏才刚刚开始!
今天我们学习如何做一个最基础的数据分析
步骤:
1、如果BIEE安装在本机,直接登录http:
//localhost:
9704/analytics/点击右上方导航菜单中的“新建-》分析”
2、选择上节创建的RPD文件中的SCOTT主题区域
3、这里会看到如下界面,左侧的树对应的是RPD文件中最左侧【表示】层中的模型-可以把它当成“表“来看,随便在“表“的字段名上双击,就可以添加到右侧的“所选列”区域,先参照下图,随便选几列过过瘾
4、切换到【结果】视图,一切顺利的话,系统会自动查询数据库,并呈现出如下数据(注:
因为我们把EMPNO,ENAME,SAL等跟员工记录一一对应的字段选上了,所以对每个员工进行工资汇总的结果SAL_SUM,实际上就等于每个员工的SAL字段)
5、对于不需要的字段,在每列右侧有一个向下的小三角剪头,点击后会展开一个弹出菜单,选择删除,就能清除这些不需要的字段
6、参考下图,去掉刚才瞎选的字段,仅保留DEPTNO,DNAME,SAL_SUM(目的是为了做一张根据“部门分类”的”工资汇总”报表)
7、再次切换到【结果】视图,可以发现SAL_SUM已经能根据部门信息正确汇总了
8、光有表格形式的数据呈现,看上去比较单调,可以参考下图中的操作,添加一些更生动直观的图表,这里我们添加一个垂直的条形图
9、添加图表后,看上去帅气多了(注:
条形图是以Flash的方式呈现的)
10、通常把报表嵌入其它“客户系统”时,是不需要顶部的导航菜单的,可以点击工具栏上的“显示结果在仪表盘中的效果”先预览一下最终运行的样子
11、这是在仪表盘中的最终效果
12、BIEE11g还添加了一些相对比较花哨的功能,用于改进用户体验,可以参考下图,点击“编辑”按钮,对图表做些调整
13、参考下图,把“显示为滑块”勾选上,同时把“分组方式(水平轴)”中的DEPTNO拖放到“区域”下方(参考下图中的位置)
14、然后点击“完成”
15、这时,图表上方就会出现出一个滑块,而且滑块的数据来源,就是DEPTNO的值,下面的图显示的是DEPTNO=20的“工资汇总”条形图
16、可以把滑块拖动至30的位置,这里条形图会自动切换到DEPTNO=30的工资汇总(相信我,在实际运行中的效果更好,因为实际运行时,切换效果是动画的)
17、一切满意之后,可以把这次的劳动成果保存起来
18、起个名字,比如SCOTT_EMP_SAL_SUM
19、在“目录“导航菜单下,能看到刚刚保存成功的“SCOTT_EMP_SAL_SUM”,点击“打开”或“编辑”就能查看或修改
在上一节时,我们创建了一个基于部门号的工资分类汇总。
这里就引出了一个概念:
维度
专业的解释大家自行XX,这里就不班门弄斧了。
从数据的使用角度看,维度可以简单的理解成“数据分类汇总的一种依据”。
按“部门号(DEPTNO)”对“工资(SAL)”进行分类汇总,“DEPTNO"就是一种维度;按“工作岗位(JOB)”对“工资”进行分类汇总,“JOB”就是另一种维度;
维度之间也可以有层次关系,比如:
我们先按“工作岗位”汇总,然后每个相同工作岗位的员工,再按“部门”汇总。
这种场景下:
DeptNo就认为是Job的子级维度。
先按Job汇总数据,相同Job的,再按DeptNo做更详细的数据汇总,这种逐层深入的数据分析过程,在BI层里有一个专业术语:
钻取(Drill).
下面就刚才的场景(即:
按JOB->DEPTNO来层层对SAL进行分类汇总),来看看维度如何创建:
一、db表结构的创建
通过上回的学习,大家应该有一个大概印象,每种数据分类的依据,我们应该创建一张小表来与之对应(比如按部门号汇总时,DEPT部门表就认为是一张维度表)
现在我们要通过JOB、DEPTNO这二个有层级的维度对数据进行分析,所以:
得有二张表。
动手之前,插点题外话:
通常对数据进行分析比较消耗db性能(特别是复杂的分析),所以一般真正的BI分析,都会事先把数据抽取到另一张表(甚至另一个专用于BI分析的库),这样分析时,不至于影响正常的生产系统使用。
这里我不想对数据抽取展开讨论(事实上,这一块我还没学会~_~),但是为了体现这个思想,我们创建几张以“BI_”为前缀的新表来作为BI分析的数据源。
1
2
create table BI_DIM_JOBas select distinct(job)from emp;
create table BI_DIM_DEPTas select deptno,dnamefrom dept;
这样就创建了二张小表BI_DIM_JOB、BI_DIM_DEPT以对应JOB、DEPT二个维度,但通常表还得有主键:
1
2
3
4
alter table BI_DIM_JOB
add constraint PK_BI_DIM_JOBprimary key (JOB);
alter table BI_DIM_DEPT
add constraint PK_BI_DIM_DEPT_DEPTNOprimary key (DEPTNO);
加上主键后,我们再来看下主表EMP,既然JOB、DEPTNO都准备用单独的小表记录,主体表中就不再需要这些字段了,我们只是想对SAL进行分析,所以我们把EMP主表也做下处理:
1
2
3
create table BI_FACT_EMPas select empno,salfrom emp;
alter table BI_FACT_EMP
add constraint PK_BI_FACT_EMPprimary key (EMPNO);
这样就得到了一张新的(事实)主表,做为BI的事实表数据源。
哦,仔细看了一下:
这张表里没有ENAME(员工姓名),干脆,把EMPNO也当成一个维度,独立出来吧:
1
2
3
create table BI_DIM_EMPas select empno,enamefrom emp;
alter table BI_DIM_EMP
add constraint PK_BI_DIM_EMP_EMPNOprimary key (EMPNO);
看到这里,可能已经有人发现了一个重大的问题:
主表BI_FACT_EMP与这些小表之间好象没有任何数据上的关联关系?
看来,还少一张用于描述EMPNO与JOB、DEPTNO之间关系的表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
create table BI_DIM_DRILL_EMPas select job,deptno,empnofrom empgroup by job,deptno,empnoorder by
job,deptno,empno;
alter table BI_DIM_DRILL_EMP
add constraint PK_DIM_DRILL_EMP_EMPNOprimary key (EMPNO);
alter table BI_DIM_DRILL_EMP
add constraint FK_DIM_DRILL_EMP_REF_JOBforeign key (JOB)
references bi_dim_job(JOB);
alter table BI_DIM_DRILL_EMP
add constraint FK_DIM_DRILL_EMP_REF_DEPTNOforeign key (DEPTNO)
references bi_dim_dept(DEPTNO);
alter table BI_DIM_DRILL_EMP
add constraint FK_DIM_DRILL_EMP_REF_EMPNOforeign key (EMPNO)
references bi_dim_emp(EMPNO);
alter table BI_FACT_EMP
add constraint FK_BI_FACT_EMP_REF_EMPNOforeign 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时的截图
截了近一天的图,总算写完了,希望对于正在学习oracleBIEE的朋友们有所帮助
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 立oracle BIEE step by oracle