Oracle Essbase入门系列(二)
文章来源:2016年07月14日 16:38:06 NICE-man
本篇开始会一个三口之家的家庭财务数据库为例,讲述Essbase的功能和开发。为了说明EPM应用程序的管理和开发过程,会绕一些弯路,不使用EAS,而尽量用EPMA。
创建应用程序
首先登陆到Workspace,在左上角菜单中选择【导航】>【管理】>【应用程序库】。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009191902890-1879476961.png)
应用程序库是EPMA的一部分,通过它可以管理EPM和Essbase应用程序。打开应用程序库后,在Workspace菜单中选【文件】>【新建】>【应用程序】,接着会出现应用程序创建向导。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009191917117-1433179459.png)
在应用程序创建向导的第一步,选择应用程序类型为【Essbase (BSO)】,选中【Unicode】以支持中文,然后给应用程序和数据库命名。
创建一个名为“HomeFinancial”的应用程序,每年的家庭财务数据作为一个数据库,2013年的数据库命名为y2013。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009191933394-2027397328.png)
第二步需要选择数据库中包含的维度类型,按下表创建4个维度,维度名称同时也是1代成员名称,在Essbase中,Time和Account是两个比较特殊的维度。Time维度可使用时间相关的函数和动态时间序列;Account可使用时间平衡和开支报告属性。每个数据库中仅能有一个Time和一个Account维度。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009191947671-18254753.png)
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009191957451-1151491682.png)
下一步是定义元数据,包括维度结构、计算方法、成员属性等。在部署后,EPMA中定义的元数据会成为Essbase的大纲。此步骤的界面分成三个部分,左面列出的是树型的维度结构,右面显示维度成员的属性,下面显示的是系统消息。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192008594-932141032.png)
在树型维度结构部分,最顶级的节点代表数据库;其下一级是各维度的1代成员,同时也代表整个维度;1代成员下是维度的成员。选择树型结构中的节点,右方会显示相关属性,修改属性后别忘了点击上方的保存键。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192023622-1556970549.png)
在树型结构中,选择各维度的1代成员,如下表修改维度的Dimension Storage Type和Dimension Sort Order两个属性。Dimension Storage Type定义为存储类型是稀疏(Sparse)还是密集(Dense);Dimension Sort Order定义部署后维度在大纲中排序顺序。这两个属性会决定数据库的物理结构和计算顺序,后面会讨论到。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192036497-1870579465.png)
然后在树型结构中,右击维度成员显示菜单,菜单中可以进行删除、重命名、添加成员、排序等操作。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192051258-757714468.png)
鼠标拖动某个成员可改变其在维度中的位置。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192106811-609675022.png)
在维度模型结构中添加成员,创建如下图的维度结构。
- G1. Account
- G2. 支出
- G3. 日用品
- G3. 交通
- G3. 电器
- G3. 教育
- G3. 饮食
- G3. 公共事业费
- G4. 电单价
- G4. 电用量
- G4. 水单价
- G4. 水用量
- G3. 医疗
- G2. 收入
- G3. 工资
- G3. 其他收入
- G2. 现金流
- G3. 期初现金
- G3. 净收入
- G3. 调整
- G3. 期末现金
- G1. Home
- G2. 张大明
- G2. 王翠花
- G2. 张小明
- G1. Scenario
- G2. 预算
- G2. 实际
- G2. 差异
- G1. Year
- G2. Q1
- G3. 1月
- G4. 1月1号
- G4. 1月2号
在完成数据模型编辑后,点击【验证】,下方的消息框内会显示验证信息。若没有出现任何错误或警告信息,点击【完成】结束应用程序编辑。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192124126-618774528.png)
然后在应用程序库中就可看到多出一个名为“HomeFinancial”的应用程序图标。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192135255-1741218958.png)
至此,已经介绍了EPMA应用程序库和维度库的使用。EPMA是从EPM 9.3版开始引入的模块,它包括应用程序库、维库、数据同步、库控制作业台等多个工具,以实现对EPM各产品应用程序进行集中式的管理。通过EPMA创建的应用程序称为EPMA应用程序,而使用传统方法创建的应用程序称为标准应用程序。EPMA中提供了将标准应用程序转换为EPMA应用程序的工具,在Workspace菜单中可找到,转换的过程是不可逆的。EPMA应用程序的部署过程中用的的工具如下图。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192146663-1939897783.png)
加载元数据
现在,我们已经通过EPMA的应用程序库创建了一个Essbase应用程序。不同于EAS Console直接在Essbase Server中创建标准应用程序,EPMA应用程序仅仅是保存在EPMA中的元数据而已,它还没有部署到Essbase Server中。下面会通过完善并部署此应用程序,来介绍EPMA的几个重要工具。
回顾上一节创建的HomeFinancial数据模型,Time维度并没有包含所有的日期项,一年365天都需要手工添加会是很大的工作量,我们需要通过关系型数据库中批量的导入维度成员。现实应用中从外部系统导入维度和数据是常有的情况,例如从会计系统导入会计科目。为此,EPMA提供了接口表,配合ETL工具可方便的将外部数据导入。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192204812-809187828.png)
接口表是由EPMA在关系型数据库中自动创建的一组数据表,支持Oracle Database、Microsoft SQL Server、IBM DB2等主流数据库。首先,连接到安装EPM是用到的Oracle数据库,执行下面语句创建一个新帐户,用于存储接口表。
- CREATE USER EPMA_INTFC IDENTIFIED BY password;
- GRANT "RESOURCE" TO EPMA_INTFC;
- GRANT "CONNECT" TO EPMA_INTFC;
- GRANT UNLIMITED TABLESPACE TO EPMA_INTFC;
然后在Workspace菜单中选择【导航】>【管理】>【配置接口数据源】。打开接口数据源后,在菜单中选【文件】>【新建】>【接口数据源】,在接口数据源创建对话框中,输入接口表帐户连接信息。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192222208-560342104.png)
在下一步中,给接口数据源命名,并选中【Create Tables】,点击【完成】。EPMA会在给定的数据库帐户中建立接口表。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192234665-89990534.png)
连接到数据库,会发现EPMA_INTFC账户下创建了若干的数据表。仔细观察这些表的命名规则,以HS开头的表分为4类,这些数据表都是需要写入维度信息,然后导入到EPMA维库里;而以IM开头的数据表是系统表。数据表的用途如下表,具体表结构和每个字段的定义,参考EPMA文档。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192247796-605413890.png)
接口表中,并非每个表和每个字段都是必须,例如可用HS_Dimension_Hierarchy和HS_Dimension_PropertyArray取代HS_Dimension_Member定义维度成员和属性。而大部分使用默认值的属性,对应字段可为空值。所以,在HomeFinancial应用中,要导入Time维度成员,只需将成员写入到HS_TIME_HIERARCHY表中即可。
在数据库中执行以下SQL语句,将维度成员数据写入到接口表HS_TIME_HIERARCHY中。
- declare
- v_date date := to_date('130101','RRMMDD');
- v_order number := 0;
- v_month_str varchar(3 char);
- v_date_str varchar(6 char);
- begin
- delete from EPMA_INTFC.HS_TIME_HIERARCHY;
- for indx in 1..4 loop
- v_order := v_order + 1;
- insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder)
- values('Year','Q' || to_char(indx),1,v_order);
- end loop;
- for indx in 1..12 loop
- v_order := v_order + 1;
- insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder)
- values('Q' || to_char(ceil(indx / 3)),to_char(indx) || '月',1,v_order);
- end loop;
- for indx in 1..365 loop
- v_order := v_order + 1;
- v_month_str := ltrim(to_char(v_date,'MM'),'0') || '月';
- v_date_str := v_month_str || ltrim(to_char(v_date,'DD'),'0') || '日';
- insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder)
- values(v_month_str, v_date_str, 1,v_order);
- v_date := v_date + 1;
- end loop;
- commit;
- end;
执行PL/SQL后,HS_TIME_HIERARCHY表里应该有如下数据。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192309483-85899925.png)
接口表数据准备好后,打开EPMA维库。打开的方法有两种,一种是在应用程序库中双击应用程序图标;另一种方法是通过Workspace菜单【导航】>【管理】>【维库】,然后在菜单【文件】>【编辑应用程序】中选择应用程序。维库从左到右分成三栏,最左边是共享维度库,中间是应用程序维度结构,右边是所选成员的属性。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192322645-555938648.png)
维库界面类似于在应用程序创建向导中维度编辑界面,唯一不同的是多出了共享维度库。共享维度顾名思义是可以由多个应用程序共享使用的,企业中一些常用维度,如组织架构、会计科目等会被多个应用程序使用,使用共享维首先避免了重复创建维度的工作量,其次避免应用程序间出现的数据不一致问题。这一概念与主数据管理系统相似,事实上Hyperion在2005年通过收购Razza获得了一套主数据管理系统Hyperion Data Relationship Management(简称DRM),现在已成为Oracle主数据管理解决方案的一部分。EPMA也支持从DRM导入维度。
与共享为对应的是本地维,本地维是只属于某个应用程序的维度。应用程序的本地维可以复制到共享维度库,也可以将共享维复制到应用程序。共享维度库是EPMA应用程序相对标准应用程序的主要优势之一。
在维库中,点击Workspace菜单【文件】>【导入】>【创建配置文件】,选择由本地接口库导入到HomeFinancial应用程序,并给配置文件命名。从导入类型选项可知,除了接口表外,还支持从平面文件和DRM导入。EPMA还提供了生成平面文件的桌面客户端工具File Generator,安装EPM后可以在开始菜单中找到。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192339129-1881862848.png)
在维度映射配置中,选择只导入Time维度,处理类型选择【合并为主要成员】,重新排列类型选择【合并至底层】,选上重新排列现有成员选择框。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192349245-1106807029.png)
将导入配置文件保存后,在菜单中选【文件】>【导入】>【导入维】,选中刚创建的导入配置文件。此处,若在IM_Load_Info接口表中定义了Load ID,可选择若干接口加载ID,以筛选导入的维度成员,不选择Load ID则导入接口表中所有的成员。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192403980-288913473.png)
点击【导入】按键后,EPMA会创建作业在后台执行导入工作,界面上会显示对话框提示作业已提交。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192417817-195434158.png)
对话框上给出了作业链接,点击可打开作业控制台显示作业执行状态。作业控制台是EPMA的工具之一,使用它可查看EPMA各种作业的历史记录。作业控制台可通过Workspace菜单【导航】>【管理】>【作业控制台】打开。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192429521-711341902.png)
作业执行成功后,在维库中刷新应用程序结构,查看Time维度成员是否正确导入。顺便说一句,除了通过EPMA接口表,Oracle Data Integrator、Essbase Studio、Essbase SQL Interface都可以直接向Essbase加载数据。
部署应用程序
在部署HomeFinancial应用程序前,打开Essbase Administration Services Console(EAS Console),确认Essbase Sever是否开启对Unicode的支持。EAS Console可通过链接http://<epm_server>:9000/easconsole打开,或从下载的EPM客户端压缩包中安装。打开EAS Console首先显示登陆信息,输入EAS地址和账号后登陆。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192441229-260673305.png)
登陆后在左侧的企业视图中,右击【Essbase服务器】,在菜单中选【添加Essbase服务器】。在对话框中,添加EAS本地Essbase Server加入。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192456446-1422351750.png)
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192511391-425475640.png)
在企业视图中,展开添加的Essbase Server节点,可以看到其中已有几个安装时自带的样例应用程序。每个应用程序下都含有一个或多个多维数据库,数据库下是大纲、规则文件、分区、报表脚本等。在EAS Console中可以进行应用程序管理、大纲编辑、维度和数据导入、计算脚本编写等操作,可以说EAS Console是功能最全、最经典的Essbase管理和开发工具。使用EPMA创建的数据库部署到Essbase Server后,也可以用EAS Console编辑。但EAS Console是直接修改Essbase Server中的数据库,所有的修改都不会同步到EPMA中,所以EAS Console适用于编辑标准应用程序,最好不要修改EPMA应用程序。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192534319-715379746.png)
鼠标右键点击Essbase Server,菜单中选择【编辑】>【属性】,在安全性属性里,确保【创建Unicode模式的应用程序所需的权限】被选中,然后点击【应用】。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192545240-662122999.png)
回到EPMA中,打开应用程序库。右击HomeFinancial应用程序图标,菜单中选【验证】,然后在作业控制台中查看验证作业执行状态。若验证无问题,右击应用程序选择【部署】。部署过程同样可通过作业控制台监控。
![](https://img2018.cnblogs.com/blog/1762316/201910/1762316-20191009192552926-2001939017.png)
部署结束后,在EAS Console中可看到HomeFinancial已加入到Essbase Server中。
作者:韩小乐
-------------------------------------------
个性签名:❤祝祖国70岁生日快乐❤
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“Like”哦,博主在此感谢!