在SAP BW/4HANA数据仓库建设过程中,往往要从多个业务系统中获取数据,由于很多企业在进行业务系统建设时不重视主数据管理,导致同样的主数据在不同业务系统中可能存在不同的描述、不同的字段类型、不同的字段长度、不同的编码。例如,常见的组织单位主数据,可能在A系统中被称作一级组织、二级组织、三级组织,在B系统中被称作单位、部门、处室,但其代表的是同样的业务含义;在A系统中可能采用A001、B001、C001 这种字母与数字组合的形式表示组织单位编码,而在 B 系统中又采用 10000000、10010000、10020001这种数字编码形式表示组织单位编码。因此,在搭建数据仓库时无法把 A、B 两个业务系统中的数据直接拿来做跨业务系统的分析。数据仓库中模型的可复用性也主要体现在主数据上,所有跨系统的数据集成,首先要去除系统间主数据的异构性,在此基础上系统间共用一套主数据。主数据建模是SAP BW/4HANA的重要基座,基于对数据一致性、规范性等方面的要求,主数据的质量是保证企业数据仓库数据质量的第一道关卡。
为了解决主数据异构的问题,在建设数据仓库的时候,需要对这些主数据进行统一处理。进行主数据统一处理有以下几个步骤:①统一主数据编码;②统一主数据描述;③明确主数据的业务含义;④统一主数据字段类型与长度。对应到BW数据仓库建设中,就是把不同源系统中的字段统一成同一个信息对象,通过信息对象统一字段编码、字段类型、字段描述等。
确定统一编码规则后,还需要梳理源系统中主数据与数据仓库标准主数据的对应关系,将转化后的值存储在BW数据仓库中,以便进行跨系统的数据分析。此外,由于部分业务系统对录入的信息缺乏校验,数据在进入数据仓库时可能包含非法字符,因此需要在数据抽取的转换过程中对非法字符进行处理,否则无法通过BW数据仓库的主数据验证。
综上所述,数据仓库主数据设计主要包含以下几个方面。
在企业层面对主数据进行梳理,统一主数据的数据类型和编码。在系统中维护各业务系统主数据和全局主数据之间的编码映射关系,在数据仓库的数据流中进行统一的处理和应用。主数据编码映射表设计样例如表2-2所示。
表2-2 主数据编码映射表设计样例
主数据属性分为时间相关和时间无关两类,因此在设计主数据属性时需要提前明确属性的时间相关性。主数据属性设计样例如表2-3所示。
表2-3 主数据属性设计样例
主数据文本有语言相关性和时间相关性,在设计主数据文本时,需要明确是否有与语言、时间相关的细节。
主数据的层次结构设计需要确认时间相关性、版本。
在数据仓库的模型设计中,全局主数据模型只设计一套,所有业务数据模型统一调用全局主数据模型,以达到主数据共享和复用的目标,如图2-1所示。
图2-1 主数据共享和复用
在SAP BW/4HANA系统中,信息对象(InfoObject)是最小的建模单位,可以基于一个信息对象来建模,用来存储相关的主数据信息,或者出具简单的报表。信息对象还可以用来组成其他的复杂模型,定义报表,评估主数据和交易数据。
信息对象有如下几个关键特征:
(1)可以通过技术名称被唯一标识;
(2)包含技术信息和管理信息;
(3)允许建模;
(4)用于出具分析报表。
每个信息对象具有不同的技术名称,但不同的信息对象可以有相同的描述。有时无法通过信息对象的描述区分不同的信息对象,但可以通过其技术名称区分。一个信息对象不仅包含技术信息,如字段类型、长度,还可以用来存储主数据的属性、文本、层次结构等业务信息。
SAP在BI Content中提供了标准的信息对象,这些信息对象的名称通常以数字“0”开头。用户也可以自定义信息对象,但自定义信息对象的技术名称不能以数字或者特殊字符开头。
在SAP BW/4HANA中,信息对象被分为关键值(Key Figure)和特征值(Characteristic)两种类型。
在SAP BW/4HANA数据仓库建模中,关键值信息对象对应的字段用来存储需要被计算或评估的值,如报表中常用的金额及数量。特征值信息对象对应的字段用于存储与维度相关的数据,如成本中心、科目、人员编号等信息;或者日期、时间信息,如日历天(0CALDAY)、日历年(0CALYEAR)、财年(0FISCYEAR)等。
在SAP BW/4HANA数据仓库建模中,信息对象本身就是可建模的最小对象,一般包含属性、文本、层次结构三种主数据信息。除此之外,它还可以用来组成转换、复合信息提供者、Open ODS View、ADSO等复杂的建模对象,如图2-2所示。也可以在建模过程中直接使用Fields代替信息对象以减少建模的工作量。但是,使用Fields时无法使用特征值的主数据属性、文本、层次结构,也无法对DTP设置过滤器,以及基于特征创建Query变量(包括出口变量、权限变量等)。
图2-2 信息对象的使用范围
在BW资源库中,选择信息对象需要存放的信息范围,按照如图2-3所示的流程即可创建信息对象。
图2-3 创建信息对象
此时会弹出创建信息对象的对话框,如图2-4所示。根据当前所在的项目及信息范围,系统将自动给出前两个选择框(BW Project及InfoArea)的内容,一般情况下无须修改其中的内容。下面介绍其他需要填写和配置的输入框及选择框。
图2-4 创建信息对象的对话框
创建信息对象时,相关配置项如表2-4所示。
表2-4 信息对象配置项
在创建信息对象的时候,可以选择的信息对象的类型如图 2-5 所示,并且可以指定信息对象的数据类型。
图2-5 信息对象的类型
特征值信息对象的数据类型如图2-6所示。
图2-6 特征值信息对象的数据类型
关键值信息对象的数据类型如图2-7所示,详细的内容将会在后续章节中讲述。
图2-7 关键值信息对象的数据类型
通过前文所述步骤完成特征值信息对象的创建后,将得到如图 2-8 所示的新建的特征值信息对象。
图2-8 新建的特征值信息对象
接下来,将介绍一个特征值信息对象有哪些配置项,以及每个配置项的含义和用途。
General页签中包含信息对象的基本信息,如图2-9所示。
图2-9 General页签
下面介绍General页签中各选项的用途。
1)General(常规)
常规选项如图2-10所示。其中,技术名称在创建时确定,创建后无法进行修改。信息对象的描述可进行修改,根据需要可以启用短描述。
勾选 External SAP HANA View for Master Data 和 External SAP HANA View for Reporting两个选项后,会在HANA数据库中生成对应的HANA视图。但是注意,勾选这两个选项有前置条件:External SAP HANA View for Master Data需要信息对象至少具有主数据属性或文本;External SAP HANA View for Reporting需要信息对象在具有主数据属性的基础上,再勾选Usable as InfoProvider选项。
图2-10 常规选项
2)Dictionary(字典)
字典选项如图2-11所示,可以改变信息对象的数据类型、字段长度,可以选择转换例程,如常用的ALPHA转换可以对数字字符进行前导零填充。
图2-11 字典选项
字典选项中的High Cardinality(高基数)选项用来进行物理优化,会使用与标准案例不同的索引类型,通常用于包含大量属性的维度,如维度表条目比事实表多20%的情况。需要注意的是,如果勾选此选项,信息对象将不再拥有SID值和SID表。
勾选字典选项中的Case-Sensitive(区分大小写)选项后,信息对象主数据值中的小写字母将不会被认为是非法字符,并且支持中文字符。
3)Properties(属性)
属性选项用于设置信息对象是否具有主数据属性、文本、层次结构,是否权限相关,是否仅作为属性,以及进行其他一些设置,如图2-12所示。
图2-12 属性选项
勾选属性选项中的 Master Data(主数据)选项后,将会生成 Master Data/Texts 和Attributes页签,并将生成对应的Master Data View(主数据视图)及Master Data Table(主数据表),技术名称分别为“/BIC/M”+信息对象技术名称和“/BIC/P”+信息对象技术名称。
勾选属性选项中的Texts(文本)选项后,将会生成Text Table(文本表),技术名称为“/BIC/T”+信息对象技术名称,在Master Data/Texts页签中可以配置信息对象文本相关信息。
勾选属性选项中的Enhanced Master Data Update(增强的主数据更新)选项后,将为特征值的属性和文本生成入站和出站队列。但需要注意的是,如果启用了时间相关的属性或文本,则不能使用增强的主数据更新。使用增强的主数据更新后,将会为信息对象生成如下几张新表:Inbound Table for Master Data Attributes(主数据属性入站表),技术名称为“/BIC/D”+信息对象技术名称;Change Log Table for Master Data Attributes(主数据属性更改日志表),技术名称为“/BIC/E”+信息对象技术名称;Inbound Table for Master Data Texts (主数据文本入站表),技术名称为“/BIC/F”+信息对象技术名称;Change Log Table for Master Data Texts(主数据文本更改日志表),技术名称为“/BIC/G”+信息对象技术名称。
勾选属性选项中的 Hierarchies(层次结构)选项后,将为特征值生成层次结构表,启用了层次结构的特征值可在报表中展现层级关系,如组织层级的划分。在特征值中层级关系被存放在三张系统表中,它们分别是Active Data Table for Hierarchies(层次结构活动数据表),技术名称为“/BIC/H”+信息对象技术名称;层次结构SID活动数据表,技术名称为“/BIC/K”+信息对象技术名称;层次结构SID结构活动数据表,技术名称为“/BIC/I”+信息对象技术名称。
勾选属性选项中的Usable as InfoProvider(可用作信息提供者)选项后,特征值信息对象可作为信息提供者出具报表,用来展示特征值主数据表中的数据。
勾选属性选项中的Planning Mode(计划模式)选项后,特征值需要支持计划模式,且此模式的特征值不支持增强的主数据更新。
勾选属性选项中的 Authorization-Relevant(权限相关)选项后,特征值信息对象可作为权限对象存在于报表中,基于此特征值可设置权限变量,用来控制用户查看报表时的字段数据权限。
勾选属性选项中的Attribute Only(仅属性)选项后,特征值信息对象仅能作为显示属性被其他特征值使用,而不能作为导航属性使用。
4)Compoundings(组合属性)
组合属性用于设置其他特征值信息对象,如图2-13所示。其他特征值信息对象与当前信息对象共同组成特征值信息对象的唯一标识。例如,某制造行业的不同工厂会生产相同的产品,但每个产品在不同工厂中会有一些不同的属性,仅使用物料号无法确认具体的工厂物料情况,此时可以将物料和工厂两个特征值信息对象组合起来唯一标识不同工厂的物料。一旦在这里设置两个信息对象的组合关系,系统在其他用到物料的地方就会自动识别与它组合的工厂信息对象,以保证数据的一致性。
图2-13 组合属性
在Attributes页签中,可以加入其他信息对象作为属性,共同组成当前信息对象的属性表。当信息对象含有属性后,可勾选 Navigation Attribute(导航属性)选项,之后可以在CompositeProvider(复合信息提供者)中将其作为导航属性放出,作为独立的字段进行分配。在导航属性选项中可以单独为导航属性设置描述及短描述,也可以配置导航属性字段是否权限相关。勾选导航属性选项后,将生成Attribute SID Table(属性SID表),技术名称为“/BIC/X”+信息对象技术名称。
1)信息对象属性配置
将其他信息对象作为属性加入当前值信息对象,如图2-14所示。
图2-14 将其他信息对象作为属性加入当前信息对象
加入导航属性后有如图2-15所示的配置项。
图2-15 导航属性配置项
勾选Time-Dependent(时间相关)选项后,将会生成Time-Dependent Master Data Table (时间相关的主数据表)和Time-Dependent Attribute SID Table(时间相关的属性SID表)。需要注意的是,如果所有属性都被设为时间相关,那么原来的Master Data Table(主数据表)、Attribute SID Table(属性SID表)将不复存在,如图2-16所示。时间相关的主数据表技术名称为“/BIC/Q”+信息对象技术名称,时间相关的属性SID表技术名称为“/BIC/Y”+信息对象技术名称。若信息对象既有时间相关的属性,又有非时间相关的属性,则两种主数据表和属性SID表将同时存在。
图2-16 所有属性都为时间相关时主数据表不存在
勾选Part of Index(作为索引)选项后,可将该属性作为索引,提高数据检索速度。
2)Transitive Attribute(传递属性)
假如信息对象的属性也具有属性,可以通过传递属性使用“属性的属性”。传递属性的配置如图2-17所示。
图2-17 传递属性的配置
传递属性配置成功后,可以在属性界面看到传递属性状态,如图2-18所示。
图2-18 传递属性状态
在此页签中可进行以下配置。
1)Read Access(读取访问)
定义特征值信息对象显示的值的取数来源。在此处可以定义特征值信息对象的主数据值如何存储,以及如何从数据库读取,读取类型分为以下三种。
(1)Generic Access(一般访问方式),数据通过标准主数据表进行存储并显示。
(2)Local Implementation(本地实施),信息对象的取值有特殊的需求,通常需要通过程序实现。
(3)SAP HANA View(视图),数据以HANA视图作为来源,本地不进行存储。
通常情况下,选择一般访问方式即可,对主数据读取有特殊需求时可以选择另外两种方式,但本地实施需要一定的ABAP或AMDP编程能力,而HANA视图的形式需要注意性能问题,如有复杂逻辑和较大的数据量,则可能导致主数据读取性能较差。
2)Texts(文本)
如果特征值信息对象启用了文本,可在此处确定文本的长度,文本长度在20个字符以内可选择Short Text(短文本),文本长度在40个字符以内可选择Medium Text(中文本),文本长度在60个字符以内可选择Long Text(长文本)。如果长文本依旧无法满足特征值信息对象对应的文本要求,则可以勾选Long Text is Extra Long(长文本超长)选项,此时特征值的长文本可以支持最多1333个字符。
此外,还可以设置信息对象的文本是否语言相关(Language-Dependent)或时间相关(Time-Dependent)。需要注意的是,勾选语言相关选项后将会在文本表中新增一个语言字段作为主键;勾选时间相关选项后会在文本表中新增一个结束时间字段作为主键,还会生成一个开始时间字段。由于这些选项会对表结构产生影响,所以在信息对象中已存在大量数据的情况下要谨慎使用,一旦勾选并激活后将无法取消勾选,除非清除信息对象中的所有数据。
3)Configure Authorization(配置授权)
勾选此选项后,将决定维护主数据时是否进行权限检查。
在此页签中可对层次结构的属性进行配置。
1)Hierarchy Type(层次结构类型)
在此可以选择层次结构的类型是标准还是本地实施(Local Implementation)。如果是标准的层次结构,可通过SAP层次结构数据源维护数据或手动维护层次结构;若是本地实施类型,则需要通过程序进行层次结构的维护。选择本地实施类型时,需要在Remote Hierarchy Properties(远程层次结构属性)中指定一个Remote Hierarchy Class(远程层次结构类),用来进行层次结构的维护。需要注意的是,选择本地实施类型后,Hierarchies 页签中的其他可维护项目将不可配置,全部逻辑需要在程序中完成。
若选择标准类型,则可以进行如下配置。
(1)Version-Dependent(版本相关),如果勾选此选项,则特征值的层次结构将支持不同的版本。
(2)Time-Dependent(时间相关),如果勾选此选项,则层次结构将与时间相关。
(3)Time-Dependent Properties(时间相关属性),在此可以设置整个层次结构是时间相关的,或者仅层次结构的结构是时间相关的,如果仅结构是时间相关的,还可以勾选 Use Temporal Hierarchy Join(使用时间层次结构连接)选项,如图2-19所示。
图2-19 时间相关属性设置
2)Miscellaneous(其他)
Miscellaneous包含以下两个选项。
(1)Intervals Permitted in Hierarchy(层次结构中允许有间隔),勾选此选项后,间隔将被允许作为层次结构中的节点。
(2)Reverse+/-Sign for Nodes(反转符号),勾选此选项后,可以在层次结构中决定节点的数据在Query中展示时是否需要反转符号。
3)External Characteristics in Hierarchies(层次结构中的外部特征)
在此处可以将其他的信息对象作为层次结构的节点加入进来。
BI Clients又称业务浏览器,在此页签中主要配置信息对象在报表展现中的一些设置,这些设置将会在使用当前特征值进行展现的所有报表中生效。
1)General(常规)
(1)Display(显示)。利用此选项可以确定特征值信息对象在报表中的显示形式,可以根据实际需要选择显示或不显示键值、文本,文本的类型(短、中、长文本)及其与键值相结合的方式。
(2)Description(描述)。利用此选项可选择特征值信息对象采用现实描述还是短描述。
(3)Selection(选择)。利用此选项可确定是否及如何在查询中限制信息对象的值,可以设置为无选择限制、每个单元格唯一限制或每个查询唯一限制。
(4)Include Initial Value in Sort Sequence(在排序序列中包含初始值)。如果勾选此选项,则初始值(#)将被包含在排序列表清单中。
2)Query Filter Value(查询筛选值)
(1)Selected Filter Values for Query Definition。在此可以设置定义查询(Query)时过滤器中可以选择的值,可以是特征值信息对象主数据表中的值,或者仅选择查询所在的信息提供者中的值。
(2)Selected Filter Values for Query Execution。在此可以设置执行查询(Query)时过滤器中可以选择的值,可以是特征值信息对象主数据表中的值,或者仅选择查询所在的信息提供者中的值,或者仅发布导航值。
(3)Representation of Filter Values During Query Execution。在此可以设置查询(Query)执行后过滤器的值如何展示。
3)Geographical(地理特征)
在此项中,可以配置特征值信息对象的地理特征及其获取方式,如经纬度等。
在此页签中可以进行货币转换、设置特性的固定计量单位和固定值、指定特征值主数据验证的ADSO、读取访问日志记录等相关配置。
在此页签中可以进行特征值属性在运行时的相关配置,如数据加载、Query展现、SAP HANA中的操作等。
关键值信息对象用来存储在BW中进行分析的数据,一般包括金额、数量、时长、长度、百分比等。下面介绍关键值信息对象有哪些配置项。
此页签中的配置项与特征值信息对象一致,技术名称在创建信息对象时唯一指定,创建成功后无法修改,它是区分关键值信息对象的唯一标识。描述可以根据实际情况修改,还可以根据需求决定是否启用短描述。
1)Dictionary(字典)
关键值选型如表2-5所示。
表2-5 关键值选型
2)Aggregation(聚合)
在聚合方式选项框中,可选择Maximum(最大值)、Minimum(最小值)、Summation (累加)、No Aggregation(无聚合)四种方式。选择聚合方式后,当相同维度存在多条记录时,关键值信息对象对应的字段可按照选定的方式进行聚合。当选择前三种聚合方式时,还可以选择异常聚合来对关键值进行聚合。
异常聚合可以实现更加复杂的聚合方式,如平均值、中值、第一个值、最后一个值、方差、计数等方式。选择异常聚合后,有时还需要设置一些参考特征值来辅助计算。例如,一个模型中存有某公司各部门人员多个月的绩效考核等级,那么这个模型中有公司代码、部门代码、人员编号、日历年月四个特征值信息对象,以及绩效考核评分、人员计数器两个关键值信息对象。
假如在上述模型中要对每个部门的人员数量进行统计,那么可以创建一个员工人数的关键值信息对象,但是在维度不减少的情况下,无法对人数进行简单的合计。此时可以使用异常聚合的功能,参考日历年月、部门代码两个特征值信息对象,对其下所属的人员计数器进行计数,则可以得到每个部门的人数。类似地,还可以实现许多其他特殊情况的聚合。
3)Currency/Unit(货币/单位)
在此处可以设置关键值信息对象的单位,通过Fixed Unit可以设置常用的金额或数量单位,如果无法找到合适的单位,还可以通过Currency InfoObject特征值信息对象来绑定相关的单位。
4)Properties(属性)
(1)High Precision(高精度)。如果设置了此选项,则在分析引擎中对数值数据使用浮点值。
(2)Stock Coverage(库存覆盖率)。如果设置了此选项,则当前关键值信息对象将被视为库存覆盖率关键值,用于计算库存覆盖计划或预期需求的期间数。
(3)Non-Cumulative(非累计值)。如果设置了此选项,则当前关键值信息对象将被改为一个非累计值关键值信息对象,此关键值本身将不再存储数据而是带有一个附加关键值,这个附加关键值会存储数据,记录的是非累计值的增量变化,非累计值的结果为附加关键值计算得到的结果。关键值信息对象的开发界面中会多出一个Non-Cumulative页签,在该页签中可以设置非累计值关键值信息对象的结果是依照一个附加关键值计算得到的,还是使用两个关键值信息对象分别代表流入及流出计算得到的。
(4)Attribute Only(仅属性)。如果设置了此选项,则当前关键值信息对象仅能用作不同特征值信息对象的显示属性,而不能用作导航属性。
BI Clients页签主要用于配置关键值信息对象在报表中展现时的效果。
1)Display(显示)
在此处可以设置关键值信息对象在业务浏览器中显示时的缩放倍数,如模型中存储的金额单位是元,而在业务浏览器中展现时需要显示万元,那么可设置缩放倍数为10000。
2)Description(描述)
在此处可以设置关键值信息对象在业务浏览器中展示的字段采用描述还是短描述。
3)Decimal Places(小数位)
在此处可以设置关键值信息对象在业务浏览器中展示的数值小数的位数。