构建信息立方体的原则

来源:互联网 发布:数据融合算法有哪些 编辑:程序博客网 时间:2024/04/29 05:43

 SAP BW的各信息提供者中可以说最重要的就是信息立方体,因为它是分析报表最主要的基础。而对于信息立方体模型,最重要的莫过于维度设计,它不只决定着查询的性能,而且会影响到数据上传的时间。一个好的设计方案,不只能提高查询的访问速度,而且可以大大降低把数据更新到信息立方体的时间。
R/u'B,^(x&z+|6xz7OA13959863在信息立方体的设计中,如果能够遵循下面的这些基本的原则,那么你就可以构建一个相对高效的信息立方体模型:
-Cc-I#k P&] Y139598631> 不要把查询用不到的CHARACTERISTIC放到信息立方体中。ITPUB个人空间P ]u(e1V3s
        如果一个CHARACTERRISTIC不会被查询用到,而且你也不能确定它一定会在以后的查询中用到,那么就不要把它放到信息立方体中。因为信息立方体中每多包含一个特征,它的查询性能和数据上传性能就会降低一分。对于一个多层的数据仓库架构来说,我们常常把这种特征放到中间层的DSO中。这样一方面不会影响到信息立方体的性能,另一方面,当后续开发的查询用到这个特征的时候,我们可以重新把它加入到信息立方体中,然后从DSO上传数据到信息立方体。由于它的信息已经存在于DSO中了,我们不需要重新从源系统抽取数据,避免影响到业务系统。ITPUB个人空间&T+c(}}7@O#/O
2> 对于NAVIGATIONAL属性和特征,前者有利于数据上传性能,而后者有利于报表性能。
L ` ysz.Xzc4VgBr13959863        这个很好理解。但是它们还代表了不同的历史事实性。对于特征来说,它代表的是业务发生时候的历史事实。而NAVIGATIONAL属性代表的是当前事实或者某个指定时间的历史事实。比如如果你把物料甲的物料组建模为一个特征,那么基于它的报表显示的是业务发生时候的物料组。不管物料甲的物料组在这笔业务后有没有被修改过,报表数据都是基于这笔业务产生时候的物料组显示的。如果你把物料组建模为属性,那么非时效属性对应的是当前的物料组分派,也就是说不管物料甲在一笔业务发生时候的物料组分配是什么,报表数据都是基于当前分配的物料组的。而时效属性则对应于某个指定时间的物料组分配。
:Z du9{0RXul7S139598633> 尽量减小维度表。
yD$o bCZ ?4p P13959863        对于普通的维度,它的索引类型是BIT-MAP索引,降低维度表的大小可以大大提高BIT-MAP索引的性能,进而大大提高报表性能。另外合理的维度设计可以大大减少数据上传过程中维度ID的生成次数,提高数据上传性能。
o8fKc8tUg3Din139598634> 减少维度数,但是减小维度表更重要。特别是当两者冲突的时候。ITPUB个人空间{&@lxO"/}O.@ X
5> 对于高CARDINALITY的特征来说,比如销售订单号,我们应该使用LINE ITEM维度。ITPUB个人空间r Km_s{
       普通的维度是一个扩展了的星形结构,中间是事实表,事实表首先关联到维度表,然后经过维度表关联到主数据表。而对于LINE ITEM维度来说,它没有中间层的维度表,事实表直接和主数据表关联。这样执行SQL的时候,可以减少一个JOIN。
.Fj-pFMer139598636> 对于高CARDINALITY的维度来说,我们应该使用B-TREE索引。ITPUB个人空间eF}&p{W
       普通维度的默认索引时BIT-MAP,如果一个维度表太大,那么BIT-MAP索引的性能会大大降低。 这时候我们应该选择使用B-TREE索引,也就是将一个普通维度改为HIGH-CARDINALITY 维度。
oN8/6fB }o139598637>  如果一个信息立方体的特征数小于等于13, 那么你可以去掉推荐架构中的维度表这一层。将所有的特征建模为一个LINE ITEM维度。ITPUB个人空间TvUTP-{ i k,t5z

原创粉丝点击