立-oracleBIEEstepbystep

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

BI创建(数据)分析、仪表盘、报表前,都需要对数据进行建模,在oraclebiee里称为创建“资料档案库”-该文件后缀为RPD,所以一般也称为创建RPD文件。步骤:1、从windows开始菜单里,找到BI管理,如下图:2、点击工具栏第一个按钮“创建”一个(脱机/离线的)RPD文件,这里我们命名为Scott.rpd,同时注意记好密码,比如Admin123D:\BIEE\instances\instance1\bifoundation\OracleBIServerComponent\coreapplication_obis1\repository3、选择数据源(即创建到数据库的连接)注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.EMP5、点击导入按钮时,参照下图,填写db用户名/密码等信息6、导入后,应该类似下面这样,但是根节点的名称太长了,我们可以在根节点上右击-重命名,改个更有意义的名称,比如localhost7、从【物理】层,把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、登录,展开左侧节点中的BusinessIntellgence-coreapplication,点击“锁定和编辑配置”2、浏览上传刚才的Scott.rpd并点击“应用”及“激活更改”3、重新启用所有BI服务如果您按上面的步骤操作,会杯具的发现:重启所有服务时会失败。并非要给大家故意挖坑,我也是实践才知道这样不行:)原因就是RPD模型里所有对象,都要有关联关系,通俗点讲,拖进来的表,至少要有2个,而且这二张表要有主外键关联关系。(遇到错误,才会映象深刻!)所以,大家重复上面的操作,再拖进另一张表DEPT即可.同时,可以【业务模型和映射】空白区右击-业务模型图表-整个图表可以看到DEPT与EMP之间的关联。保存,这时应该一致性检查应该能通过。然后再次上传资料档案库,并重启所有服务,应该就OK了接上回继续,RPD文件做好上传后,好戏才刚刚开始!今天我们学习如何做一个最基础的数据分析步骤:1、如果BIEE安装在本机,直接登录点击右上方导航菜单中的“新建-》分析”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_SUM19、在“目录“导航菜单下,能看到刚刚保存成功的“SCOTT_EMP_SAL_SUM”,点击“打开”或“编辑”就能查看或修改在上一节时,我们创建了一个基于部门号的工资分类汇总。这里就引出了一个概念:维度专业的解释大家自行百度,这里就不班门弄斧了。从数据的使用角度看,维度可以简单的理解成“数据分类汇总的一种依据”。按“部门号(DEPTNO)”对“工资(SAL)”进行分类汇总,“DEPTNO就是一种维度;按“工作岗位(JOB)”对“工资”进行分类汇总,“JOB”就是另一种维度;维度之间也可以有层次关系,比如:我们先按“工作岗位”汇总,然后每个相同工作岗位的员工,再按“部门”汇总。这种场景下:DeptNo就认为是Job的子级维度。先按Job汇总数据,相同Job的,再按DeptNo做更详细的数据汇总,这种逐层深入的数据分析过程,在BI层里有一个专业术语:钻取(Drill).下面就刚才的场景(即:按JOB-DEPTNO来层层对SAL进行分类汇总),来看看维度如何创建:一、db表结构的创建通过上回的学习,大家应该有一个大概印象,每种数据分类的依据,我们应该创建一张小表来与之对应(比如按部门号汇总时,DEPT部门表就认为是一张维度表)现在我们要通过JOB、DEPTNO这二个有层级的维度对数据进行分析,所以:得有二张表。动手之前,插点题外话:通常对数据进行分析比较消耗db性能(特别是复杂的分析),所以一般真正的BI分析,都会事先把数据抽取到另一张表(甚至另一个专用于BI分析的库),这样分析时,不至于影响正常的生产系统使用。这里我不想对数据抽取展开讨论(事实上,这一块我还没学会~_~),但是为了体现这个思想,我们创建几张以“BI_”为前缀的新表来作为BI分析的数据源。12createtableBI_DIM_JOBasselectdistinct(job)fromemp;createtableBI_DIM_DEPTasselectdeptno,dnamefromdept;这样就创建了二张小表BI_DIM_JOB、BI_DIM_DEPT以对应JOB、DEPT二个维度,但通常表还得有主键:1234altertableBI_DIM_JOBaddconstraintPK_BI_DIM_JOBprimarykey(JOB);altertableBI_DIM_DEPTaddconstraintPK_BI_DIM_DEPT_DEPTNOprimarykey(DEPTNO);加上主键后,我们再来看下主表EMP,既然JOB、DEPTNO都准备用单独的小表记录,主体表中就不再需要这些字段了,我们只是想对SAL进行分析,所以我们把EMP主表也做下处理:123createtableBI_FACT_EMPasselectempno,salfromemp;altertableBI_FACT_EMPaddconstraintPK_BI_FACT_EMPprimarykey(EMPNO);这样就得到了一张新的(事实)主表,做为BI的事实表数据源。哦,仔细看了一下:这张表里没有ENAME(员工姓名),干脆,把EMPNO也当成一个维度,独立出来吧:123createtableBI_DIM_EMPasselectempno,enamefromemp;altertableBI_DIM_EMPaddconstraintPK_BI_DIM_EMP_EMPNOprimarykey(EMPNO);看到这里,可能已经有人发现了一个重大的问题:主表BI_FACT_EMP与这些小表之间好象没有任何数据上的关联关系?看来,还少一张用于描述EMPNO与JOB、DEPTNO之间关系的表:12345678910111213createtableBI_DIM_DRILL_EMPasselectjob,deptno,empnofromempgroupbyjob,deptno,empnoorderbyjob,deptno,empno;altertableBI_DIM_DRILL_EMPaddconstraintPK_DIM_DRILL_EMP_EMPNOprimarykey(EMPNO);altertableBI_DIM_DRILL_EMPaddconstraintFK_DIM_DRILL_EMP_REF_JOBforeignkey(JOB)referencesbi_dim_job(JOB);altertableBI_DIM_DRILL_EMPaddconstraintFK_DIM_DRILL_EMP_REF_DEPTNOforeignkey(DEPTNO)referencesbi_dim_dept(DEPTNO);14151617181920altertableBI_DIM_DRILL_EMPaddconstraintFK_DIM_DRILL_EMP_REF_EMPNOforeignkey(EMPNO)referencesbi_dim_emp(EMPNO);altertableBI_FACT_EMPaddconstraintFK_BI_FACT_EMP_REF_EMPNOforeignkey(EMPNO)referencesbi_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,并把原来的对象全清

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功