Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
YaoYao
Product and Topic Expert
Product and Topic Expert
当我们谈到数据分析领域,就永远绕不开“模型(model)”这个词。“模型(model)” 作为大量数据的结构化组织形式,被广泛应用于各类数据仓库以及数据分析软件中。

SAP 分析云作为 SAP 商务套件中的商务数据分析平台,自然也在”模型“概念的基础上,提供了丰富且灵活的数据建模功能,帮助企业更简单的完成大量复杂业务的数据分析和洞察。然而,一些数据从业者在刚刚接触 SAP 商务套件时,会对于SAP 分析云中”模型“的概念感到困惑,主要由于:

  1. 因为SAP 分析云的脱胎于SAP BPC的诞生背景以及以计划预算分析为主要商业分析业务的业务背景,SAP 分析云中对于”模型“的定义,与其他商务分析软件略有不同。

  2. 2021年 SAP 分析云的更新中,引进了一个新的模型概念:新模型(New Model)。新模型与 SAP 分析云中原有的”经典账户模型(Classic Account Model)“的区别和联系也需要时间进行了解。


因此,本篇文章旨在从多维数据模型的原理入手,由浅入深解析”经典账户模型“和”新模型“背后的逻辑以及异同,帮助初识 SAP 分析云的数据从业者更熟练的使用 SAP 分析云进行数据建模。本文将依次解读:

  1. 多维数据建模的基本逻辑:以星型模型为例

  2. 星型模型在 SAP 分析云中的体现:经典账户模型 (Classic Account Model)

  3. 新模型(New Model) 的引入和优点








  1. 多维数据建模的基本逻辑:以星型模型为例




什么是多维数据模型?在理解多维数据模型之前,我们首先梳理一下常见的数据处理两大类别:

  • 联机事务处理 OLTP (On-line transaction processing)

    • 以增删改为主要操作的交易型业务系统。主要用于记录某类业务事件的发生和变动。比如记录一次购买订单数据。





  • 联机分析处理OLAP(On-Line Analytical Processing)

    • 以查询为主要操作的分析型业务系统。主要用于支持复杂的分析操作并提供决策支持。比如查询上个月总额订单数量。




因此,我们可以知道,大部分商务分析型软件使用的分析技术,都可以被分类为OLAP类型的应用。其中,“多维数据模型(Multidimensional Model)“作为OLAP中最经典的模型结构,更是被广大数据分析从业者熟识。那么,回到我们最开始的问题,什么是多维数据模型?

OLAP的主要特点,是通过限定用户查询数据的角度,返回基于一定限制条件的结果。这种基于多种角度(维度)预先组建的数据模型,就被称为”多维数据模型“。在这里,”“ 指的是用户分析数据的角度。比如,”上个月总订单数量“中”月“就是时间维度。再比如,”所有女性订单数量“中“女性”就是性别维度。将分析数据构建成多维数据模型后,用户可以快速的从各个维度获取数据,动态且灵活的切换或者组合各个维度进行综合分析。这就是多维数据模型模型被广泛应用的魅力所在。

在进行多维数据模型建模时,一般需要对复杂的数据进行结构化的重新梳理,将维度(分析角度)和交易数据(事实表)拆分出来单独管理,形成多维度的星型模型或者雪花模型。下面举一个星型多维数据模型的例子:


在这个例子中,用户购买产品的交易数据被划分为维度表(Dimension table)事实表(fact table)

  • 四个维度表:分别记录时间维度,地域维度,产品维度,用户维度

  • 一张事实表:用于与四张维度表相关联,并记录交易的数量和金额。像数量和金额这类可以被累加,平均等计算的项目,被称为多维数据模型中的度量(measures)。


将交易数据按照这种方式进行拆分后,我们就完成了多维数据模型的建模。在用户分析时,用户可以任选一个或者几个维度分析用户交易的数量和金额。

总结一下:多维数据模型把数据拆分为事实表和维度表,其中事实表用以记录度量(measures),维度表用以记录维度(dimensions)






 

        2. 星型模型在 SAP 分析云中的体现:经典账户模型 (Classic Account Model)


SAP 分析云在设计之初,便充分吸收多维数据建模的原理和概念,在产品中提供了“建模器”模块。在2021年以前,SAP 分析云中只有一种模型的类型,便是 ”经典账户模型(Classic Account Model)“。经典账户模型是SAP 分析云在多维模型的基础上,根据用户的常用业务场景进行了一些改造和优化,使模型更贴合用户的真实业务场景。下面我将列举经典账户模型与传统星型模型的不同点,方便从业人员快速理解SAP 分析云中经典账户模型的建模逻辑。

  1. Version(版本)和Date(日期)作为默认维度。


当我们选择新建一个”经典账户模型“时,我们会进入到建模页面,此时模型类型是默认的“计划”类型(即有预算计划功能)。大家可以发现,这个模型的结构和我们之前介绍过的星型模型结构非常相似:

  • 模型中间的卡片代表了模型与度量相关的基本信息,可以理解为星型模型中的事实表。

  • 模型已经有两个默认的维度表:Version和Date。可以理解为星型模型中的两张维度表。



 

 

在这里, SAP 分析云在空的星型模型的基础上,增加了两个默认维度表:VersionDate

  • 基本上所有计划预算分析都离不开时间维度,通过增加默认的时间维度表,既加快了用户的建模流程,也强制性的确保了数据模型的数据质量。

  • SAP 分析云提供了完善的端到端计划预算管理功能。在预算管理流程中,数据版本(version)是必不可少的一个维度。因此,所有”计划“类型的模型,都会有默认的”version“ 维度表。如果将模型转换为”分析“类型的模型,”version”维度表则会消失。


 

      2. ”账户(Account)维度”概念的引入

下面,我们根据上一章中星型模型的例子,新建“Customer”,“Region”和“Product”三个维度表。新建维度等操作不在本文的讨论范围内,请参考官方教程


 

 

下面,我们需要引入一个在星型模型中没有的概念:账户(Account)维度

SAP 分析云脱胎于 SAP BPC (Business Planning and Consolidation),最早的业务场景是计算预算管理。在BPC 的数据模型中,账户(Account)维度是用于定义会计科目表(charts of accounts)中的各个项目,是非常重要的财务概念。因此,SAP 分析云中为了方便与BPC等其他SAP 组建的集成,也在星型模型的基础上,沿用了“账户(account)维度”的概念。那么,账户这个概念是如何在星型模型中使用的呢?

在上述的例子中,我们已经完成了四个维度表的搭建,下一步,我们应该在模型中的增加“金额”和“数量”两个度量。在 SAP 分析云中,所有的度量都需要被封装在“账户”类型的维度中。也就是说,与一般的星型模型中度量是被包含在事实表中不同,SAP 分析云的“经典账户模型”增加了一个特殊类型的维度:账户维度,用以封装所有的度量和计算。

因此,我们新建了一个“账户”类型的维度,添加了“金额(amount)”和“数量(quantity)”作为维度的成员。就相当于把两个度量添加到模型里。


返回到模型主页面,我们就完成了这个多维数据模型的搭建。由于“账号”维度的存在,“账号”维度和数据基础共同代表了模型中“事实表”的部分,剩余的分支则代表了“维度表”,与传统的星型模型略有不同:


由于”账户“概念的引入,模型建成后的数据导入,也要适配”账户“这个概念。用于导入”经典账户模型“的数据表中,度量的名称需要展示在账户维度下,而数据中只能有一列值来对应每个度量对应的数值。以下给出我们需要将数据准备成的格式,既能完成数据导入:


 

 

总结一下:SAP 分析云的”经典账户模型”在星型模型的基础上,一是增加了两个默认维度更贴合业务场景,二是使用了 SAP BPC中的账户维度概念,使用”账户“类型的维度封装了”度量“。







          3. 新模型(New Model) 的引入和优点


从上文的介绍中,我们了解到,SAP 分析云中的“经典账户模型”在多维数据模型的基础上进行了一些改动。这些改动在用户进行财务分析和计划时,能够帮助用户更快的完成数据集成,也更贴合财务计划的业务场景。

然而,“经典账户模型”也存在一些明显的限制:

  • 大部分 SAP 套件(比如SAP Business Warehouse,SAP Data Warehouse Cloud)以及非 SAP 的数据仓库均采用经典的星型模型作为基础进行数据的存储。因此由于“经典账户模型”中“账户”这个特殊的度量包装概念,导致 SAP 分析云 在对接上述系统时,需要花费大量的时间和人力对原始数据进行额外的处理


 

  • 经典账户模型中,由于所有的度量均封装在“账户”这个统一的维度下,用户难以单独对某一个度量进行一些复杂的运算,用户也难以在模型中针对某一度量进行汇率的转换。


因此,SAP 分析云在2021年中,推出了一种新的模型:新模型(New Model)。新模型进一步回归了多维数据模型中星型模型的概念,用户可以不借助”账户“来包装”度量“,而直接新建”度量“。这种模型为用户提供了更多的可能性和灵活性。

依然使用上面的例子,这次我们建立一个”新模型“。“新模型”的具体操作请参考官方指南。

  • 依然按照”经典账号模型“的方式,添加product,customer和region三个维度

  • 与”经典账号模型”不同,这里我们直接添加“quantity”和“amount”两个度量,并显示在屏幕左侧。

  • 新模型的视图,与传统的多维星型模型非常相似。中间是包含度量的事实表,周围是各个维度表。



使用了“新模型”后,数据的准备也产生了相应的变化:原始数据中,我们可以直接使用度量的名称作为列名。以下列出“新模型”中,数据源的格式:


 

注意到,之前使用”经典账户模型“需要8条数据来记录,在“新模型”中,只需要4条即可完成记录。进一步缩小了原始数据的数据量,从而提升了数据查询的速度。

总结一下:


SAP 分析云引入了“新模型”类型的模型后,使得模型的概念更加接近于传统意义上的多维数据模型,不仅使对接其他数据源变得更加容易,也使自定义计算度量变得更加便捷。使用新模型的数据事实表,每一条记录代表了更多的信息,从而提升了查询速率。


 




总结:


至此,我们详细的梳理了SAP 分析云中模型这个概念,并将此与传统定义上的多维数据模型进行了比较。SAP 分析云中的“经典账户模型”和“新模型”是多维数据模型中星型模型的不同呈现方式。用户应根据自己的业务场景,选择合适的数据模型。

本文没有讨论新模型的细节创建过程以及与经典账户模型之间的迁移关系,这部分内容可以参考官方帮助手册,以及其他参考资料:

官方帮助手册:

新模型

经典账户模型迁移到新模型: