Essbase学习笔记

Essbase Classic Edition包括以下组件:
服务器端
Essbase Analytic Services:Essbase 的核心引擎和计算内核;
Essbase Administration Services:Essbase 系统管理员界面,用于构建Essbase 数据模型(Outline)、装载和计算数据,并用于数据库调优;同时包括MaxL 和EssCmd 脚本工具,用于采用命令行脚本或自动化执行管理任务;
Essbase Deployment Services:部署服务(不包括高并发选件-HighConcurrency Option)
Essbase API
客户端包括
Spreadsheet Add-In:用于与MS Excel 整合的插件
Essbase Runtime Client:客户端运行环境,用于其它第三方工具连接Essbase 数据库
Essbase Classic Edition常用选件
Essbase SQL Interface:用于Essbase 直接通过SQL 访问关系型数据库;Essbase Partition:包括Essbase 支持的三种分区模式,复制分区、透明分区
和链接分区;
Essbase 混合分析(Essbase Integration Services)
混合分析将关系数据库与Essbase 数据库集成,将关系数据的容量和扩展性与多维数据库的抽象分析能力结合在一起。混合分析不需要在Essbase 中存储低级成员和数据,实际上就排除了框架的容量限制并为大量数据提供了快速分析能力。


Essbase 根据请求的类型,采用不同的方式处理:
管理服务请求,如登录和退出,启动或停止应用和数据库,查看用户安全信息等,由Essbase 代理服务器(ESSBASE)处理。
客户端对数据的请求,如数据加载,计算电子表格报表,数据加锁开锁等,由应用服务器(ESSSVR) 处理。
Essbase 启动
命令行方式
进入Command 模式,然后输入Essbase,系统提示输入口令,输入正确口令即可。
通过控制面板=>服务
启动Essbase Service 服务。只需在Command 方式下键入Essbase –Service install 即可将服务添加至“控制面板―》服务”中,这样就可以避免每次启动Essbase 输入密码;通过Essbase–service remove 可以将服务从“控制面板―》服务”中删除。


EssBase 基础
基本概念
维(Dimension):在数据库轮廓结构(Essbase Outline)中,维是最高级别的归并级。数据库轮廓将其成员以书写上的凹进方式逐级列出构成树型结构,用以表达某种归并关系。
Essbase具有两种维:标准维和属性维。
标准维表达的是商业计划的核心组件,常常是和部门的业务功能有关。其中,时间,账号,产品线,市场以及部门等,都是标准维的实例。维在大多数数据库中是静态的;数据库的维,很少有随着应用的不同经历而有变化的情形。
属性维是一种特别类型的维,通常是和标准维联系在一起的。通过属性维,可以对标准维的成员进行组合与分析。这种分析是根据成员的属性(即特征)进行。例如,你可以对同一产品的不同包装的赢利加以比较。属性维必须与标准维有关联。Hyperion Essbase 并不存储关于属性维的数据,不分配内存,而仅仅在用户需要时才动态地计算这些数据,属性维总是离散且与标准的sparse关联。
成员是维度的一个具体的成分,例如,Product A, Product B, 和Product C 就可以是Product维的成员。每个成员具有唯一的成员名。每个维可以拥有无限多个成员。HyperionEssbase可以存储与某个成员相关的数据(这类数据称之为存储成员),或者只是在使用者需要时才动态地计算出所需要的数据。所有的分析数据库开发都从创建数据库大纲开始,数据库大纲主要是定义成员间的结构关系,组织数据库中的数据,定义各部分的归并和数学关系。


Dense 维与Sparse 维
数据是以包含数值的单元格形式存储在多维数据库中。标准维根据数据的分布,可分为Dense维(密集维)和Sparse维(稀疏维),以用最小的内存和磁盘来加速数据获取。
Dense维主要是通过数据块的形式统一存储,会占用相对较多的存储空间,因此当该维数据比较密集、分布比较均匀时,方才用dense维。
Sparse维主要通过索引的形式来找到较为分散存储,这样就不会使太多的空块占用宝贵的存储空间,一般是数据较少,分布较不均匀的为sparse维。
大部分多维数据库都是sparse的,Because not every product is sold in every market,
Market and Product are chosen as sparse dimensions。
A sparse dimension is a dimension with a low percentage of available data positions filled。
A dense dimension is a dimension with a high probability that one or more data
points is occupied in every combination of dimensions。


维度成员间关系
Generation:鉴别成员的分支。Generation用一种特殊的观点描述了成员的在Outline中的层次定位。代的数字定义了成员与它的维的距离分支。Generation从维的顶端至下开始递加, number至少为2;
Level:定义成员的分支。level 从维的叶子开始至Root 递加,Root Level值的不同依赖于分支的深度。Number从0开始,叶子为level0;


OutLine 中的维度
量度维:用于识别OLAP 量度,一个outline 中一般只设置一个量度维,量度维下面可以有多个量度,其标识是Accounts;
时间维:用于标识时间维度,一个outline 中一般只设置一个时间维度,用于计算一些跟时间相关的量度,其标识是 Time;
属性维:以标准维为基础来汇报和合计数据,不占存储空间,其标识是Attribute;标记该维的几点注意:
(1)应标记一个稀疏维作为attribute维;
(2)在存储outline 以前,必须要将每个attribute 维与标准维联系;
(3)attribute维在outline中必须是最后一个维;
(4)attribute维可以设置类型(boolean、numeric、text、date)。


存储相关概念
Block:各维度作为边所组成的一个立方体就是block块,而其中的每个小块称之为cell;
Dense维中成员的数量决定了block块中cell 的数量,Sparse维中成员的数量决定了block的数量,他们共同组成了一个多维库。


两种存储模式
Aggregate storage is the Essbase database storage model that supports large-scale, sparsely distributed data that is categorized into many, potentially large dimensions。 Selected data values are aggregated and stored, typically with improvements in aggregation time。 Aggregate storage is an alternative to block storage (dense-sparse configuration)。


Aggregate Storage
支持快速聚合,针对多维和离散数据进行优化
每个应用只支持一个DataBase
成员只支持 ~操作符,没有公式
不支持计算脚本
不支持Data mining、unicode 等


Block Storage
由DenseSparse 维构造块,针对金融应用优化
支持多个DataBase


分析服务应用2 种内部结构来存取数据:数据块和索引系统。


Essbase 数据库开发
基本步骤
Hyperion Essbase 数据库的开发,都是以创建数据库轮廓结构(Outline)为主。其开发主要步骤如下:
创建Essbase应用(ASO或BSO),建立数据库;
创建Outline,定义各成员在Hyperion数据库中的结构关系;
定义各个维成员之间的归并关系和数学关系;
建立Rule文件进行Member Loading和Data Loading;
建立计算脚本,执行计算;
预览Cube数据,根据情况调整Memory分配
Hyperion Essbase利用成员概念表达数据的层系。每个维由一个或多个成员构成。成员又可以拥有自己的成员。在生成某个维时,要告诉Hyperion Essbase 应如何归并它的成员的值。在数据库轮廓的树形结构中,归并(consolidation)是在树的某个分支上进行,其结果是该分支的一组成员。例如,很多商业活动都是按月统计数据,再根据月数据得到季度统计,最后得到全年统计数据。很多商业活动也常常是先按邮正编码,再按城市,最后按省(州)汇总数据。任何维都可以用于归并数据,以产生所需要的报告。例如,在随同Hyperion Essbase 数据库系统而配发的样本BASIC 数据库中,年(Year)维就由5 个成员构成:四个
季度(Qtr1,Qtr2,Qtr3,Qtr4)数据外加一个全年总计数据。而Qtr1又由四个成员构成:
一至三月(Jan,Feb,Mar)的月数据外加整个一季度的总计数据。类似地,Qtr2,Qtr3,Qtr4 也具有同样的成员结构。


创建Essbase 应用
启动Administration Console
登录连接Essbase Server,默认用户名admin,密码为password,输入启动Administration Service 的机器名或IP。
创建应用及数据库
建立数据模型(Outline)
创建Rule 文件
维度数据加载完成,接下来 data loading。因为指标的统计是对最细节的数据作计算,所以我们所写 sql 语句,只需包含最底层的数据即可。member 装载与 data 装载的相同点都是从数据源(关系数据库)中取得数据,但是 member 装载后的数据表现出来就是一个 outline的组织,也就是保存在*.otl 文件中。而 data 装载后,将会以 fact 的方式存进 cell 里,也就是保存在*.pag 文件中。关于 cell 的概念,简单的理解是通过各个维所能确定的最终的数据的集合,也就是各个 dense 维的不同 member 的组合数便是 cell 的个数,计算公式为:假设有 n个 dense维,先求得每个维的每层的member 数目的乘积,再把这n 个维各自求得的乘积相乘,所得数目就是cell的个数。另外相对的是sparse维的计算,各个不同的sparse维的
不同 member的组合数便是block的个数,每个block里面会对应着数个cell,而block是存在*.ind文件中的。我们可理解成从block名作为index连接到对应的cell中,这样就可以取得我们所要的最小的数据-fact。也就是说我们可以这样理解:.pag文件中包含许多block,而 block里存放着若干个cell,cell就是最小数据fact的最小存放单元。
进行指标维的设计时,我们因为不需要从源数据中取得 member 值,所以在指标维对应的 rule 文件中,不必设genernation来对指标维进行member的装载。
数据的装载:没有进行数据的装载,则 outline 里只是存储着维的设计框架,并没有形成 cell,也就不会有具体的 fact。数据装载将先把数据存放在内存中,所以要消耗较大的资源。
验证并装载


权限控制
通过用户和组实现权限控制, 可控制到达各个application的dabase, 通过Database filters,可以控制到特定的成员的 cell值。
没有必要创建为每个用户创建同样权限级别的过滤器,一旦创建了一个过滤器,就可将其分配到多个用户或用户组中。然而,每一个数据库只能有一个过滤器分配到用户或者用户组。
没有定义cell权限的,将继承其数据库的存取级别。
过滤器可由一个或多个控制条件组成,这样即可确定成员的权限。


所有的安全信息,包括用户、组、密码、权限、过滤、应用、数据库及其相应的存储目录都存放在ARBORPATH\bin \essbase.sec文件中。


Essbase 调度
当我们建立Application 和Database并加载了成员和数据后, 对于后续的Database更新或 Cube的部署,就需要建立自动调度生成建立cube的机制。实现该过程主要有两种方法:
用 Essbase 命令行[ESSCMD]进行调度
Essbase分析服务包括MaxL和 ESSCMD,二者都是交互或批处理执行的命令行接口。MaxL比ESSCMD 改进的地方是它是多维存取语言[multi-dimensional access language]。
用 EssbaseAPI 进行调度
ESSBASE 优化方法
完善数据源
1 合并重复记录(Consolidation)
2 尽可能提供Upper Level 数据(Summary)
3 若需在维度中建立层次结构(Level),应确保该维度中不出现相同成员(member)。
4 确保在整个轮廓(Outline)中无相同成员(member)。
在数据库大纲中的纬度的位置和存储属性影响2 个方面的性能: 计算的运行速度和获取
数据的时间。
调整轮廓(Outline)
深入理解Dense 和Sparse 维


维可以设置成 Dense 或者 Sparse 属性。Sparse 维之间的有数据的组合将生成一个数据块(Block),而在块内是所有Dense维的数据组合。Block存放在Ess*。pag文件中,Block块间的信息组成index, index存放在Ess*。 ind文件中。 想要真正准确的对各个维设置 Dense或者 Sparse,必须通过仔细分析数据的特点。因此,最好的办法是做以系列试验,验证各种维的Dense和Sparse的组合情况,可以在每次试验后记录块密度和块数, 得到(块密度)/(块数), 比较后取出比值最大的组合


合理选择DENSE 维
可参照如下步骤进行:
在充分了解数据的基础上,确定DENSE维,比如在我们的项目中一般日期维和地市维设置为Dense维,成员数比较多的设置为Sparse维。
用部分真实样本数据进行数据装载(LOAD DATA)测试。
查看数据库信息,根据 Block size、Block DENSITY、load data time 等信息重新设置DENSE维。通常情况下,BLOCK Size在 8-64K间(100K)较好。
相同成员的情况下,维度设置成dense维的结果是,block size 大,block num 少,反之,block size 小,block num 多。
原则上,块密度/块数 的值越大越好。
仅从存储角度看,平面维比层次维更优。


调整维度次序
DENSE维在前,SPARSE维在后。
DENSE维中,按ACCOUNT、TIME、OTHER 次序排列。
在 SPARSE 维中,按维度成员数多少升序排列。在DENSE维中,按维度成员数多少降序排列。


调整Flat Dimension
Flat Dimension:指那种有很多member,但是很少层次关系,Hierarchy的结构是一个很扁平的结构。这种结构对Performance有着负面的影响。对于这种结构,可以考虑增加他的层次结构,或者在calc script中增加SET CALCHASHTBL命令行利用Hash 表的能力。


数据加载优化
有一种提高数据加载性能的方法,即按稀疏维对输入数据进行排序。这种方法之所以有效,是因为通过在稀疏维之间对数据进行排序,可确保由于加载数据而创建的每个数据块仅被访问一次。
增量加载数据: 数据增量加载, 从而可以增量的创建数据块, 利用Intelligent Calculation,这样不需要每次计算所有数据块,每次只要计算新增加的数据块就可以了。


使用动态计算(dynamic calc)


 
调整内存分配
配置索引、数据和物理(文件系统)高速缓存
数据高速缓存是RAM 中的一个扩展的物理块数据页存储库,而物理(文件系统)高速缓存则是 RAM 中的一个压缩物理数据块页存储库。索引高速缓存是 RAM 中的一个索引地址页存储库。 DB2 OLAP 数据高速缓存中的数据块没有压缩,而物理数据高速缓存(或OS 文件系统高速缓存)中的数据块则是经过压缩的。如果服务器上运行了很多多维数据库,应该注意所有数据库设置的缓存数的总和不要超过服务器的内存总数(看服务器还是否需要运行其他服务)。


选择合适的数据压缩算法
DB2 OLAP 文档建议,当平均块密度大约或低于 2-3%时,行程长度编码(RLE)压缩比默认位图压缩(Bit-Map)更有效。磁盘上的块越小,每次磁盘所读取的块就越多,并且可以在RAM 中保留的压缩块也就越多。
调整方法:
Allocate 1 MB of memory for the multidimensional database index cache。
Allocate 20 percent of the remaining memory for the multidimensional data cache。
Leave the remaining memory as spare memory


系统参数设置(ARBORPATH/BIN/essbase.cfg)


ESSBASE 数据备份与恢复
数据备份
数据备份是数据维护的关键部分。ESSBASE 有两种方法:归档备份和导出数据备份。
归档是最常用的备份方法,即对数据文件进行精确的复制。
对数据归档,可在你选择的第三方工具中使用 BEGINARCHIVE 和 ENDARCHIVE 命令。BEGINARCHIVE 命令将数据库锁定为只读模式,并提供用于备份的文件清单。用户可保持登录状态,但在归档过程中不可修改数据。
注意:如果在备份数据时未使用BEGINARCHIVE命令,请确保在备份期间所有的应用已被关闭,并且所有的用户均已注销。否则,你将冒破坏数据的危险。


归档数据步骤:
1. 在 ESSCMD 中发布BEGINARCHIVE命令。
BEGINARCHIVE 执行如下操作:
将被修改的数据提交到磁盘。 
将数据库转换到只读模式。 
以共享和只读模式重新打开数据库文件。 
创建一个包含需备份文件清单的文件。缺省情况下,该文件被命名为archive.lst。 
在归档过程中,如果用户试图修改数据,将出现错误信息。在 ENDARCHIVE 命令被执行前,没有用户可以更新数据。即使数据库被关闭或重启,只读模式也要持续到ENDARCHIVE命令被执行。
2. 手工将需要备份的文件拷贝指定位置,或使用第三方备份工具,将列在app/database/archive.lst 中的文件备份。确信备份Hyperion Essbase 使用的每一个磁盘卷上的数据。 
通过在ESSCMD 中发布ENDARCHIVE 命令,完成归档处理。
ENDARCHIVE执行以下操作: 
将数据库置为读写模式。
以独占、读写模式重新打开数据库文件。 
注意:必须执行ENDARCHIVE命令把数据库置回到读写模式,不管是否关闭或重启过数据库。ENDARCHIVE命令不重启数据库。
在发布BEGINARCHIVE命令后,试图中止归档时,如果收到“不能中止”的信息,很可能系统正处在最后阶段,正在向驱动器与项目并且已到达操作不能终止的状态点。


通过导出进行备份。导出数据到ASCII 文本格式。
可使用导出代替归档备份数据。导出工具将数据拷贝到指定的 ASCII 文本文件,不压缩数据。导出的文件仅包含数据,不包括控制、轮廓、安全信息。导出文件的最大尺寸是2G。
要导出数据,在Hyperion Essbase Application Manager中选择Database > Export,或在ESSCMD 中发布EXPORT命令。可使用EXPORT工具指定导出的数据量:所有数据。 
仅 Level 0 blocks。 
仅装载数据(load data)。
推荐方法:推荐使用归档方法进行备份。然而,当你遇到如下情形之一时,可以使用导出工具。 
跨平台迁移数据。 
仅备份数据的某一部分。例如,level 0 blocks。 
创建文本格式的导出文件,而不是二进制格式。


数据恢复
从归档文件恢复
当介质出现故障时(faulty disk,disk failure,或head crash),需要考虑从归档文件中进行恢复。注意:不要移动、复制、修改或删除以下任何文件:ESSxxxxx.IND, ESSxxxxx.PAG, databasename.IND, databasename.ESM, databasename.TCT。否则会导致数据破坏。停止essbase服务,然后将备份的文件拷贝到数据库所在位置。


从导出的ASCII数据文件中恢复
用 ESSCMD 命令LOADDATA 或使用菜单DATABASE->LOADDTA 执行数据加载,选定从文件加载方式,然后指定 ASCII 文件所在的物理路径即可。注意如果备份的只是部分数据(level 0 blocks)恢复后需要重新计算。


Essbase 开发 Cube 建议
在构建Cube的过程中, 如果约定一些规范,对以后的开发和维护工作会带来很大便利,通过过去的工作,建议在构建Cube时遵循如下建议规范:
1. 一个App 对应一个Database
2. 理论上,一个App可以对应多个Database,但是当我们只看一个Database的信息时,Olap Server会把Database所在的整个App都装入内存,很耗费资源。基于此理由,建议一个App 对应一个Database;
3. 构建App 和Database的命名尽可能与事实表名称相一致,便于见名知意。
4. 构建规则文件的名称尽量与维表名相一致,并利用编号来确定其装载次序。
5. 对于日期维,建议每个 Database 对应一个日期维,对于其它维度,尽可能放入一个 Database,便于公用。
6. Dense 和 Sparse 维的设置。一般情况下日期维和地市维设置维 Dense 维,对于成员数很多的维度设置为Sparse维。
7. 日期维规则文件需要与事实表相关联过滤日期数据,数据规则文件的SQL需要按维度作Group分组汇总。
8. Essbase 中同一 database(主题)中所有成员名称不可重复,包括同一维度中不同层次成员之间、同一主题中不同维度之间。ESSBASE 中所有维度成员(包括不同维度之间)及别名中是不允许出现同名,应注意加前缀。经常出现重复的成员名称有:未知、为空、其它。
9. 对于“未知、为空、其它”等不同维度之间的成员重复,建议改为“××未知、××为空、××其它” 。其中××为维度名称。 10. 对于不同层之间的成员重复,建议在上层成员名称前加上该层名称。例如“受理渠道维”中“部门层”和“受理单位层”都包含“营业部” ,则改“部门层”成员名称为“部门-营业部” ;
11. Shared members must be in the same dimension。 Data can be shared by two or more members。
12. 数据成员[列]接受数字及其修饰,不接受空格、分隔符和#MI and #MISSING。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值