创建一个CUBE很简单,就是在需要的信息范围下,右键点击创建信息块即可,首先弹出的是需要输入的技术名称及描述,还可以选择从某个信息块复制,然后点击创建,就进入以下界面:
在上图的左边,是构成CUBE的信息对象目录,右边则是一个信息快的结构。
首先注意的是左图上方的几个小按钮,分别表示“信息源”、“信息对象”、“信息块(CUBE)”、“信息对象目录”及“所有信息对象”,一般来说根据需要选择自己需要的信息对象,如果我选择了某一目录后,则其下所有的信息对象会在左边呈现,如下图:
这样,我们就可以从左边选择需要的信息对象,拖动到右边对应的目录下,即开始自己的创建CUBE之旅了。
总体浏览一下这个CUBE的结构,首先是CUBE的状态,包括版本、保存状态等相关信息,一般情况下我们都是不会关心的。第二个是设置,这个地方表示这个信息块是什么类型的信息块,除了标准信息块,其他我自己也不知....;第三项就是比较关键的家伙维度了,系统首先已经给出了一些默认的维度了,包括数据包、时间及单位;一个个来看,第一个数据包,这个是跟数据加载有关的,系统记录的数据上载的ID等相关信息,
第二个是时间维度,一般来说,我们拖动一些系统自带的0CALDAY,0CALMONTH等信息对象进去就OK了,你拖其他自定义信息对象系统也不会睬你;接下来的是单位维度,这个不用我们自己考虑,当我们拖动关键值进入CUBE的时候,系统会根据关键值中的单位自动生成这样的维度。而接下来就是我们*发挥的维度了,如下图:
右键点击维1,出现属性、这里可以设置这个维度的属性,如下
点击属性进入上图的对话框,其中描述更改维度描述,下方的两个选项都是跟CUBE数据查询效率相关,第一个“行项目维”表示当此维度只包含一个信息对象时候,勾选此项目不生成Dimension表,CUBE直接用SID与信息对象相连,提高系统访问效率;而第二个选项,则是当维度值达到一定数量(SAP说法是记录表的20%)时候,根据数据库索引等方式,提高系统查询效率;
剪切和删除略过不谈,信息对象直接输入就是加入需要的信息对象,点击后出现对话框,根据范围查找或者直接根据技术名查找即可。还可以根据需要插入其他维度,在维度编辑完成后,如果维度中信息对象带有导航属性,则可以在导航属性栏中设置是否带有导航属性,如下图所示,在勾选框中勾上√,则在查询中即可以以导航属性作为一个维度一样的来筛选数据了。
在设置好维度后,我们接下来可以设置我们CUBE的关键值字段了,选择合适的关键值信息对象拖入关键值中即可,如下图,其中可以看看每个关键值后面的属性,其中的“数据..”表示的关键值的数据类型,QUAN表示数量,CURR表示金额,而最重要的就是累计值与非累计值了,其中累计值就表示关键值是由自身的加减得到的,而非累计值则是存在流入流出的概念,其值等于流入-流出,这样实际在加载数据的时候,其本身并不需要加载数据,而只需要加载其相应的流入及流出信息对象即可,例如下图的数量总计库存。这个在库存模型中是最重要也是最困扰人的地方。
以上如果一切搞定,则可以检查激活CUBE,这样CUBE就算建立成功了。
接下来,可以仔细端详一下CUBE中有哪些需要机关了,那么就要让“管理”这个管家一同带我们走入。先粗略了解一下CUBE的表结构,其中CUBE中首先存在的两张事实表F表与E表,其中F表为数据初始加载时候的数据,这样的数据中存在着加载的时候的数据包(DTP包)信息,正是由于这个数据包(P)维度的存在,会导致F表中的数据量很大,所以当我们确认每包数据没有问题后,我们就可以做压缩的动作,压缩后系统将数据包维度去掉,这样大大减少了Fact表的数据量,并且将数据从F表转移到E表;而对于CUBE每个维度,BW会建立一个Dimension表,Dimension表中包含DIMID及组成信息对象的SID,最后事实表与信息对象通过DIMID关联。
下面通过实际来看看CUBE中数据的奥妙,选中CUBE右键点击“管理”,首先看到的“内容”标签页
其中上方即为CUBE所包含的信息对象,其中的“维”栏指的是每个信息对象数据哪个维度。而信息块内容则是指当前CUBE中的数据,他包含压缩前和压缩后的所有数据;实际表格指的就是F表,点击实际表格后,就可以看到如下:
其中表名即为/BIC/F+CUBE名称;第三个按钮“选择性删除”,就是根据某些条件删除数据,例如某一些数据是不需要的数据,可以通过此办法删除,但是一般需要慎重,因为删除后即不可恢复。
第二标签页为“性能”,顾名思义,这一屏是为CUBE性能考虑而设计的,见下图
其中上半部分为创建和删除索引下半部分为创建统计。其中第一部分检查、删除及创建、修正索引为对F表中的数据进行索引创建,索引可以提升查询速度,所以很重要,但是在加载数据的时候,请务必先删除索引在添加索引,否则很容易在大量数据加载时候产生死锁(Dead Lock);所以在处理链中向CUBE加载数据时候,一般都是加载前删除CUBE索引,而加载成功后再创建索引;第二部分为压缩后的聚集索引,即为E表的索引。而其中的数据库统计,按照SAP的解释,即为系统做一个统计以便了解CUBE、信息对象以及查询等的使用频率等,为系统的优化做一个依据,见其解释如下:
BW statistics provides you with the following options that allow you to uate data from both the OLAP processor and warehouse management. You are able to
· get an overview of how InfoProviders, InfoObjects, InfoSources, source systems, queries, and aggregates are used
· determine the system performance and improve it
· improve the way in which aggregates are selected and used and reduce the cost of updating them
CUBE的第三个标签页“请求”,此页主要记录了数据加载的信息,包括每个信息包的执行时间以及数据量等信息,而其中被压缩的数据包在“信息块的压缩状态”中会打上√,如果“聚集”被压缩,则在“汇集的压缩状态”中也会打上相应的√;在“请求的数据集市”栏下,如果该CUBE被作为数据集市(即作为其他信息提供者的数据源)且该信息包数据被抽走,则会标记上一个 ,如果是加载后的数据包没有做压缩等处理,则可以选中点击删除将一整包数据删除。
接下来的屏幕为“滚动”(rollup)界面,这个界面目前我所知道的作用为点击集合生成聚集(Aggregate),在生成聚集后,系统会根据相应维度生成一个数量相对CUBE事实表数据量比较小的表,当查询访问CUBE时候,系统会先判断聚集中维度是否满足条件,如果满足则直接访问聚集而不用再次访问CUBE,提升查询速度。
生成聚集可以由系统根据查询中维度使用频率自动生成或者自己直接指定生成,其中自动生成的界面如下:
上图中其中的绿色状态便是根据系统提供的一个使用频率较高的几个维度组合生成的聚集;生成的方法是选中待生成的聚集然后激活保存即可。
“折叠”(应该翻译为压缩更为贴切,SAP的汉化真的不敢恭维),这一屏的作用就是前文多次提到的压缩的概念,在“请求标识”中输入标识序列,则将该序列前所有的数据包都压缩,如果勾选“使用零排除”,则会将关键值为0的记录排除,但是这个功能只对累计的关键值有效,而对于非累计的,由于是根据其他信息对象流入流出计算而得,所以并没有作用;执行压缩后的数据会自动存入E表,并且将原先的数据包序列全部变为0,这样如果再想删除已经压缩的请求包数据,是不可能实现了,这样实现了数据的固化,也大大提高了查询的效率。
最后一屏“重新建造”是3.5的遗留产物,不了解也不必要在继续了解了,所以不谈。