创建应用程序
首先登陆到http://localhost:28080/workspace/ ,在左上角菜单中选择【导航】>【管理】>【应用程序库】。
应用程序库是EPMA的一部分,通过它可以管理EPM和Essbase应用程序,所有创建的planning和合并应用程序库都在这。
打开应用程序库后,在Workspace菜单中选【文件】>【新建】>【应用程序】,接着会出现应用程序创建向导。
在应用程序创建向导的第一步,选择应用程序类型为【Essbase (块存储BSO)】,选中【Unicode】以支持中文,然后给应用程序和数据库命名。
创建一个名为“Test_APP”的应用程序,数据库起名APP。下一步,
第二步需要选择数据库中包含的维度类型,按下表创建4个维度,维度名称同时也是1代成员名称,在Essbase中,Time和Account是两个比较特殊的维度。Time维度可使用时间相关的函数和动态时间序列;Account可使用时间平衡和开支报告属性。每个数据库中仅能有一个Time和一个Account维度。
点击Account 的选择按钮,输入名称,同理输入其他维度,这里我们只创建简单的3个维度来测试。
下面是具体类型的说明
维度 | 名称 | 类型 | 其他类型 |
Account | Account | Account | 无 |
Time | Year | Time | Period |
Entity | Entity | Entity | Country |
下一步是定义元数据,包括维度结构、计算方法、成员属性等。在部署后,EPMA中定义的元数据会成为Essbase的大纲。此步骤的界面分成三个部分,左面列出的是树型的维度结构,右面显示维度成员的属性,下面显示的是系统显示控制台。
在树型维度结构部分,最顶级的节点代表数据库;其下一级是各维度的1代成员,同时也代表整个维度;1代成员下是维度的成员。选择树型结构中的节点,右方会显示相关属性,修改属性后别忘了点击上方的保存键。
在树型结构中,选择各维度的1代成员,如下表修改维度的Dimension Storage Type和Dimension Sort Order两个属性。Dimension Storage Type定义为存储类型是稀疏(Sparse)还是密集(Dense);Dimension Sort Order定义部署后维度在大纲中排序顺序。这两个属性会决定数据库的物理结构和计算顺序,后面会讨论到。
然后在树型结构中,右击维度成员显示菜单,菜单中可以进行删除、重命名、添加成员、排序等操作。
鼠标拖动某个成员可改变其在维度中的位置。
在完成数据模型编辑后,点击【验证】,下方的消息框内会显示验证信息。若没有出现任何错误或警告信息,点击【完成】结束应用程序编辑。
输入essbase将要创建的信息,点击部署。
然后在应用程序库中就可看到多出一个名为“Test_APP”的应用程序图标。
至此,已经介绍了EPMA应用程序库和维度库的使用。EPMA是从EPM 9.3版开始引入的模块,它包括应用程序库、维库、数据同步、库控制作业台等多个工具,以实现对EPM各产品应用程序进行集中式的管理。通过EPMA创建的应用程序称为EPMA应用程序,而使用传统方法创建的应用程序称为标准应用程序。EPMA中提供了将标准应用程序转换为EPMA应用程序的工具,在Workspace菜单中可找到,转换的过程是不可逆的。EPMA应用程序的部署过程中用的的工具如下图。
加载元数据
现在,我们已经通过EPMA的应用程序库创建了一个Essbase应用程序。不同于EAS Console直接在Essbase Server中创建标准应用程序,EPMA应用程序仅仅是保存在EPMA中的元数据而已,它还没有部署到Essbase Server中。下面会通过完善并部署此应用程序,来介绍EPMA的几个重要工具。
回顾上一节创建的HomeFinancial数据模型,Time维度并没有包含所有的日期项,一年365天都需要手工添加会是很大的工作量,我们需要通过关系型数据库中批量的导入维度成员。现实应用中从外部系统导入维度和数据是常有的情况,例如从会计系统导入会计科目。为此,EPMA提供了接口表,配合ETL工具可方便的将外部数据导入。
接口表是由EPMA在关系型数据库中自动创建的一组数据表,支持Oracle Database、Microsoft SQL Server、IBM DB2等主流数据库。首先,连接到安装EPM是用到的Oracle数据库,执行下面语句创建一个新帐户,用于存储接口表。
CREATE USER EPMA_INTERFACE IDENTIFIED BY Admin123;
GRANT "RESOURCE" TO EPMA_INTERFACE;
GRANT "CONNECT" TO EPMA_INTERFACE;
GRANT UNLIMITED TABLESPACE TO EPMA_INTERFACE;
GRANT DBA TO EPMA_INTERFACE;
然后在Workspace菜单中选择【导航】>【管理】>【配置接口数据源】,会报一个信息 找不到接口数据源,请新建数据源。打开接口数据源后,在菜单中选【文件】>【新建】>【接口数据源】。
输入数据源信息,
在下一步中,给接口数据源命名,并选中【Create Tables】,点击【完成】。EPMA会在给定的数据库帐户中建立接口表。
在数据接口出现我们创建的数据源。
连接到数据库,会发现EPMA_INTERFACE账户下创建了若干的数据表。仔细观察这些表的命名规则,以HS开头的表分为4类,这些数据表都是需要写入维度信息,然后导入到EPMA维库里;而以IM开头的数据表是系统表。数据表的用途如下表,具体表结构和每个字段的定义,参考EPMA文档。
表名 | 用途 |
HS_Dimension_Member | 维度成员和成员属性 |
HS_Dimension_Hierarchy | 维度父子层次结构 |
HS_Dimension_PropertyArray | 维度成员属性 |
HS_Dimension_Property | 维度属性 |
IM_Dimension | 登记接口表,自建的接口表需在此表中登记 |
IM_Load_Info | 通过Load ID可筛选导入的数据批次 |
IM_Dimension_Association | 定义维度表间的关联关系 |
接口表中,并非每个表和每个字段都是必须,例如可用HS_Dimension_Hierarchy和HS_Dimension_PropertyArray取代HS_Dimension_Member定义维度成员和属性。而大部分使用默认值的属性,对应字段可为空值。所以,在Test_APP应用中,要导入Time维度成员,只需将成员写入到HS_TIME_HIERARCHY表中即可。
在数据库中执行以下SQL语句,将维度成员数据写入到接口表HS_TIME_HIERARCHY中。
create or replace
package app as
v_date date := to_date('20130101','YYYYMMDD');
v_order number := 0;
v_month_str varchar(3 char);
v_date_str varchar(6 char);
procedure createdata ;
end app ;
create or replace
package body app is
procedure createdata is
begin
-- vsql :='delete from HS_TIME_HIERARCHY';
-- execute immediate vsql;
-- commit ;
execute immediate 'delete from HS_TIME_HIERARCHY';
commit;
for indx in 1..4 loop
v_order := v_order + 1;
insert into 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 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 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 createdata;
end app;
执行PL/SQL后,HS_TIME_HIERARCHY表里应该有如下数据。
接口表数据准备好后,打开EPMA维库。打开的方法有两种,一种是在应用程序库中双击应用程序图标;另一种方法是通过Workspace菜单【导航】>【管理】>【维库】,因为默认的应用维度可能不是Test_APP, 我们需要在菜单【文件】>【编辑应用程序】中选择应用程序。
维库从左到右分成三栏,最左边是共享维度库,中间是应用程序维度结构,右边是所选成员的属性。
维库界面类似于在应用程序创建向导中维度编辑界面,唯一不同的是多出了共享维度库。共享维度顾名思义是可以由多个应用程序共享使用的,企业中一些常用维度,如组织架构、会计科目等会被多个应用程序使用,使用共享维首先避免了重复创建维度的工作量,其次避免应用程序间出现的数据不一致问题。这一概念与主数据管理系统相似,事实上Hyperion在2005年通过收购Razza获得了一套主数据管理系统Hyperion Data Relationship Management(简称DRM),现在已成为Oracle主数据管理解决方案的一部分。EPMA也支持从DRM导入维度。
与共享为对应的是本地维,本地维是只属于某个应用程序的维度。应用程序的本地维可以复制到共享维度库,也可以将共享维复制到应用程序。共享维度库是EPMA应用程序相对标准应用程序的主要优势之一。
在维库中,点击Workspace菜单【文件】>【导入】>【创建配置文件】,选择由本地接口库导入到HomeFinancial应用程序,并给配置文件命名。从导入类型选项可知,除了接口表外,还支持从平面文件和DRM导入。EPMA还提供了生成平面文件的桌面客户端工具File Generator,安装EPM后可以在开始菜单中找到。
在维度映射配置中,选择只导入Time维度,处理类型选择【合并为主要成员】,重新排列类型选择【合并至底层】,选上重新排列现有成员选择框。
将导入配置文件保存后,在菜单中选【文件】>【导入】>【导入维】,选中刚创建的导入配置文件。
此处,若在IM_Load_Info接口表中定义了Load ID,可选择若干接口加载ID,以筛选导入的维度成员,
不选择Load ID则导入接口表中所有的成员。
点击【导入】按键后,EPMA会创建作业在后台执行导入工作,界面上会显示对话框提示作业已提交。
对话框上给出了作业链接,点击可打开作业控制台显示作业执行状态。作业控制台是EPMA的工具之一,使用它可查看EPMA各种作业的历史记录。作业控制台可通过Workspace菜单【导航】>【管理】>【作业控制台】打开。
作业执行成功后,在维库中刷新应用程序结构,查看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地址和账号后登陆。
登陆后在左侧的企业视图中,右击【Essbase服务器】,在菜单中选【添加Essbase服务器】。在对话框中,添加EAS本地Essbase Server加入。
在企业视图中,展开添加的Essbase Server节点,可以看到其中已有几个安装时自带的样例应用程序。每个应用程序下都含有一个或多个多维数据库,数据库下是大纲、规则文件、分区、报表脚本等。在EAS Console中可以进行应用程序管理、大纲编辑、维度和数据导入、计算脚本编写等操作,可以说EAS Console是功能最全、最经典的Essbase管理和开发工具。使用EPMA创建的数据库部署到Essbase Server后,也可以用EAS Console编辑。但EAS Console是直接修改Essbase Server中的数据库,所有的修改都不会同步到EPMA中,所以EAS Console适用于编辑标准应用程序,最好不要修改EPMA应用程序。
鼠标右键点击Essbase Server,菜单中选择【编辑】>【属性】,在安全性属性里,确保【创建Unicode模式的应用程序所需的权限】被选中,然后点击【应用】。
回到EPMA中,打开【导航】/【管理】】/【应用程序库】。右击Test_APP应用程序图标,菜单中选【验证】,然后在作业控制台中查看验证作业执行状态。
若验证无问题,右击应用程序选择【部署】。部署过程同样可通过作业控制台监控。
部署结束后,在EAS Console中可看到Test_APP已加入到Essbase Server中。