建筑是用石头写成的史书。
那么,模型就是用字段搭就的艺术。
但是,一个字段能表达的业务含义是有限的。
一个字段可以用字段的名称、字段数据类型、字段长度来传达它所代表的业务含义。比如,科目、客户、产品等等。最直观的表达来自于字段的名称本身。但是,单靠字段去描述在现象世界中复杂的众多对象显得有点单薄,也不足以区分不同对象之间的比较细微的差别。
在搭建模型之前,我们是不是可以对搭建模型的基础材料做些加工和扩展呢?磨刀不误砍柴工,有了更好的原材料,会使我们后面的工作事半功倍。
01
从字段到对象
SAP BW/4HANA可以直接使用字段作为基本构成要素,进行数据模型的创建,这给快速创建数据模型提供了极大的方便。但是,如果我们要建设的是一个具有数百个数据模型的系统,往往需要处理数千、甚至数万个字段。不同系统中可能会有重名、但是业务含义不同的字段。如何处理这些字段是建模工作的一个难点。
为了准确地描述一个业务对象。SAP BW/4HANA在建模伊始就引入了对象的概念。这种对象也是BW/4HANA建模的基本组成单位,是字段的升级版本,称为信息对象(InfoObject)。
信息对象是SAP BW/4HANA系统中对现实生活中的的业务评价对象的抽象与模拟,比如客户、销售额等,在SAP BW/4HANA中都体现为一个信息对象。一个信息对象不仅可以定义它的名称、类型、长度等信息,还可以有不同长度、不同语言版本的描述说明,可以有多个属性来描述这个对象,也可以定义这个对象在使用过程中的行为方式,等等。比如,产品可以有规格、颜色、型号等不同属性。对于同一个产品,可以有中文名称,也可以有英语、日语等多种语言的名称。
最简单的信息对象定义可能就只有一个字段,但是信息对象也可能是一张表,甚至是很多张表。
信息对象分为以下四种类型。
1.特性
2.关键值
3.单位
4.XXL(超大)信息对象
02
特性和主数据、维度是一回事吗?
特性是业务评价中涉及的评价对象,多是非数值型的内容,比如公司、产品、客户、财年、会计期间、地区等。特性是与数据集(数据模型)中的关键值(指标)相对而言的。若干个特性与关键值组成具有业务含义的一条记录,特性对关键值进行界定和说明,关键值只有与一系列的特性相联系,才有了具体的含义。
从前面对于特性的定义和所举的示例中,大家都会联想到与特性相似的另外两个概念,一个是主数据,另一个是维度。那么,它们是一回事吗?
在BW/4HANA系统中,特性的编辑界面如图 1所示。
图1. 特性编辑界面:常规
每个特性可以最多包含主数据、描述、层级结构三部分内容。在编辑界面的属性(Properties)部分有相应的选项。根据配置选项不同,特性的编辑界面的选项卡会动态变化,在最多的情况下,特性编辑界面包括了“常规(General)”选项卡、 “主数据/文本(Master Data/Texts)”选项卡、“层级结构(Hierarchies)”选项卡、“属性(Attributes)”选项卡、“BI客户端(BI Clients)”选项卡、“扩展(Extended)”选项卡、“运行时属性(Runtime Properties)”选项卡7个配置子界面。
通过深入了解这些配置选项,大家就会对上面的问题有确定的答案了。
03
关键值就是度量、指标吗?
关键值是指业务评价中的数值部分,用来存储需要分析的数值,如金额、数量、天数、分钟数等。除了在数据库中物理存储的关键值,还可以在BI客户端中定义一些派生的关键值,派生的关键值是由数据模型中的关键值经过计算得到的,比如人均销售收入、百分比偏差、边际贡献等。
在BW/4HANA系统中,关键值的编辑界面如图 2所示。
图2. 关键值编辑界面:常规
关键值的编辑界面包括“常规(General)”选项卡、“库存覆盖(Stock Coverage)”选项卡、“非累计值(Non-Cumulative)”选项卡等多个部分。这些配置选项详细定义了关键值的技术定义、业务含义,以及在计算、汇总、变化值与存量值的关系、展现和单位转换等方面的各种行为模式。
此外,单位信息对象可以对关键值进行界定。金额类型的关键值总是分配一个货币单位;而数量类型的关键值总是分配一个数量单位。超大信息对象(XXL超大信息对象)可以用来保存特性的附加信息。它用来处理特别长的文本和非结构化的数据。它们也会参与建模,也提供了不同的配置选项。
这些信息对象封装与屏蔽了大量的技术细节,用户只需要通过图形界面进行简单配置就可以完成对信息对象的创建,而不需要进行代码的编写和数据库层面的操作,这样用户就可以专注于应用逻辑层面的系统设计了。这些信息对象的配置选项众多。并不是所有的项目都会用得到,要结合实际建模的场景和需求循序渐进地进行理解和学习。
04
如何选择使用字段或者信息对象建模
BW/4HANA中的所有数据模型,可以使用字段来定义模型的结构,也可以使用信息对象来定义模型的结构。与字段建模比较,信息对象建模需要额外工作,但也提供了诸多优点。在选择这两种建模方式时,主要是权衡字段建模带来的灵活性与信息对象建模带来的功能或性能方面的提升。
一般而言,建议使用信息对象创建核心主数据对象模型。在使用各种OLAP功能时,这些模型提供了在性能方面的优势。然而,在数据仓库输入层,一般不需要OLAP功能,处理的数据量也较小,使用字段建模可以提高系统的灵活性和数据仓库的适用范围。关于字段与信息对象在建模中的选择与使用,书中结合不同的建模工具的特点有详细的专题讨论。
-End-
本文作者:陈永杰
著有《SAP大数据完全解决方案》等多本有影响力的SAP图书