现在是开始着手搭建数据模型的时候了。
BW/4HANA提供的信息对象犹如智能建筑材料,这些建筑材料有很多配置选项,可以根据需求智能地进行变形。搭建的数据仓库模型也一样,BW/4HANA提供了多种搭建数据模型的系统对象。
我们先来认识功能最强大的样板房——数据存储对象。数据存储对象是BW/4HANA系统中存储数据和整合数据的核心对象。
说它是样板房,是因为它是实实在在、摸得着、看得见的,它产生实际的数据库表,实实在在地存储数据。说它是智能拼接的,因为它提供了丰富的选择。你只负责提要求,只专注于概念模型和逻辑模型的设计,它来负责生成实际的物理模型。
01
空间与功能的一体化设计
数据存储对象是具有实际物理数据存储的数据仓库模型。在创建数据存储对象时,系统提供了大量的选项与属性设置,数据存储对象可用于数据仓库的不同逻辑层。根据数据存储对象的配置选项不同,系统在后台生成可以生成一张或者多张数据库表。生成的不同数据库表有各自的功能定位,数据库表和功能的设计是一体化的。
数据存储对象的编辑界面,如图 1所示。
图1 编辑数据存储对象:常规
在“常规(General)”选项卡下,用户可以设置数据存储对象的基本信息、配置建模属性、配置数据分层属性。
在“明细(Details)”选项卡中,可以看到数据存储对象中包含的所有字段和信息对象,可以对这些字段和信息对象的属性进行详细配置和分组管理。
在“设置(Settings)”选项卡下,可以进行数据存储对象分区与索引的高级设置。
大家可以多多尝试数据存储对象的不同设置,有时还会惊喜地发现系统出现了其他选项卡。
02
数据存储对象的建模属性
以建模属性(Modeling Properties)为例,系统根据企业级数据仓库不同数据层对数据模型功能的不同需求,提供了创建数据存储对象的不同建模选项。
常见的数据存储对象的是标准数据存储对象(Standard DataStore Object)。一般情况下,数据存储对象由三张表组成,即活动数据表(已激活数据)、更改日志表和输入数据表(待激活数据)。通常,加载到数据存储对象中的数据总是写入输入表中的。
在数据到达输入表后,还会有数据激活的操作动作,将数据进一步写入到活动数据表。数据进入活动数据表之后,报表端才可以看到这些数据。
在数据激活的过程中,系统会自动对输入表中的新数据和原有活动数据表中的老数据进行比对,确定更新后新的活动数据表的内容。根据具体的激活过程操作不同,系统提供三个选项:
(1)写更改日志(Write Change Log):选择此选项,系统会将新增、更改和删除的数据写入更改日志表中,并能支持数据操作回滚。对外提供数据时,更改日志表提供了增量数据序列。
(2)支持快照(Snapshot Support):有些源系统只能提供全量数据加载方式。在这一选项下进行数据激活操作时,系统会自动识别出删除记录存储到更改日志中,确保DSO的更改日志能提供增、删、改的完整的增量数据。
(3)惟一的数据记录(Unique Data Records):选中这一选项,在数据激活操作过程中,系统不进行关键字字段组合是否重复的检查,会明显提升激活数据的速度。
除了标准数据存储对象外,系统还提供以下不同的数据存储对象类型:
● 抽取层数据存储对象(Staging DataStore Object):
● 数据集市数据存储对象(Data Mart DataStore Object):
● 直接更新的数据存储对象(Direct Update DataStore Object):
此外,还有一些特殊选项,用于支持特定的应用场景,包括支持库存计算(Inventory-Enabled)、计划功能(Planning-Enabled)和数据写入接口(Write Interface-Enabled)等。大家可以在书中找到这些选项的详细解释。对这些建模选项要结合实际数据处理需求和项目实战经验进行理解,才能更好地掌握。
03
从样板间到样板别墅
对于大型的企业数据仓库建模,可能会遇到单个数据模型数据量特别大的情况。对于数据量特别大的建模需求,可以启用数据存储对象中的分区和索引功能,建模工具会自动在数据库创建相应的分区和索引;也可以使用BW/4HANA提供的语义组建模方式,批量地创建多个结构相同或者相似的数据存储对象,并在这些对象之上创建联合视图,方便数据查询。如果说,数据存储对象是一个个的样板间的话,语义组就像一个样板别墅,包含了多个样板间,并进行整体管理。
语义组是以一个特定的DSO为模板,生成语义上相同或者相近的一组DSO的建模工具。为了方便进行查询和分析操作,语义组会将组内的所有DSO联合起来,自动生成一个复合提供者。从结果看,语义组最后生成的是一组定义相同或者相近的DSO以及这些DSO组成的一个复合提供者。也就是说,语义组本身不是一种信息提供者,而是一种批量建模工具。
语义组只是在数据量上特别大的情况下才需要使用的。它的优化思路和单个数据存储对象的分区比较像。不同的是,分区是将单个数据库表分成多个区;语义组是创建数据结构相同或者相近的多个表。二者相比,各有适应的应用场景。在管理和运维方面,分区比较简单,设置好分区规则后系统自动管理,没有太多额外的工作量。而语义组的优势在于它的构成方式可以更加灵活,组成语义组的DSO可以有不同的建模属性,可以有不同的数据结构。
BW/4HANA系统里语义组的编辑界面如图 2所示。
图2. 完成语义组编辑界面
系统不仅支持基于现有DSO作为参考结构生成新的DSO组件,也可以使用“添加(Add)”按钮将现有的DSO添加到语义组里。作为成员的DSO数据结构可以和参考结构不完全一样。
-End-
本文作者:陈永杰
著有《SAP大数据完全解决方案》等多本有影响力的SAP图书