背景
最近笔者参与并完成了数据中台从0到1的建设,当然数据中台如何定义争论也很多,这里笔者此篇文章不去讨论,但数据仓库是数据中台能否解决数据复用、数据共享、数据服务和数据快速迭代等这些相对通用问题的关键一环,这是不可否认的。此篇文章来讲述在构建数据中台过程中数据仓库维度建模部分时,会犯的一些错误,其中重点讲述一些对理解业务过程的常见错误以及正确地理解何为业务过程,因为业务过程准确理解和识别是维度建模进行的关键步骤。
现有较为流行数据中台构建方法论是一般沿用阿里系那套(当然也有其他大厂做,方法论类似)做法,其中数据仓库构建部分也是使用OneData数仓建模方法论。这里关于OneData数仓做一点说明,其不是除Innmon 3NF范式建模、Kimball维度建模以及Valut建模方法之外新数仓建模方法论,OneData建模方法论本质上是Kimball维度建模方法论结合平台系统,划分数据域,标准化了建模流程、固化了建模动作验证并保证模型元素(数据域,业务过程、来源表、表和指标中文和英文名称、计算口径等)唯一性的一种实践。如定义数据域、原子指标、业务限定、统计周期、派生指标和衍生指标等,在数据仓库模型的基础上进行“拖拉拽”生成相关指标,并平台层面验证相关指标的一致性和唯一性(所属数据域,业务过程、来源表、中文和英文名称、计算口径等一致性且不重复)。下面给出来引用《大数据之路》书中的名词术语解释:
关于原子指标、业务限定、统计周期、派生指标和衍生指标定义上述都有讲不再展开,这里重点解释一下数据域,数据域的定义是来自阿里出版《大数据之路》中的概念。解释一下,因为业务过程是收集或生成KPI指标的,其对应的事实表是用来做数据分析的。所以,数据域指面向业务分析,将业务过程或者维度进行抽象的集合。基于OneData建模方法论是需要划分数据域(至于如何划分数据域,笔者会写文章进行分享),在假设划分好数据域的前提下,OneData或Kimball维度建模方法论大致流程如下:
由上述流程可见,业务过程是很重要的概念,是数仓建模工程师向业务部门人员在进行业务调研与需求分析步骤中,主动了解业务、学习业务和理解业务与收集需求的关键点,因为业务人员更关注自己部门职能的关键业务运营动作,如营销域:素材上传、素材打标签、创建广告、广告曝光等业务过程,而不关心业务系统中哪张表,业务系统底层怎么实现等具体细节问题。
识别业务过程常见错误
这里给出在重构数据仓库构建总线矩阵时,识别业务过程的两种不合理的思路:
上述两种方法都只是对维度建模及业务过程的理解片面而导致的,维度建模不是不顾整体模型设计,为产指标而做指标;业务过程不是架构部门和数据仓库工程师按照现有ODS层表清单来硬拍的。正确方式是在深入业务调研或访谈,倾听业务用户在说些什么,因为他们争吵着要分析的绩效指标是由业务过程来收集或生成的。
业务过程本质
在设计一个维度模型时,遵循 Kimball方的读者通常会复述四个关键决策:识别业务过程、粒度、维度和事实。尽管这听上去很直接,但团队通常会在第一步就犯错误。由于业务过程这个词看起来在不同的背景下具有不同的含义,因此他们会力求表述清晰。因为在设计一个数据模型时,业务过程声明是首先需要处理的一个基础,所以我们希望在此背景下消除这种混乱的情况。
关于业务过程,这里给出Kimball官方给出的定义:
“Business processes are the operational activities performed by your organization, such as taking an order, processing an insurance claim, registering students for a class, or snapshotting every account each month. Business process events generate or capture performance metrics that translate into facts in a fact table. Most fact tables focus on the results of a single business process. Choosing the process is important because it defines a specific design target and allows the grain, dimensions, and facts to be declared. Each business process corresponds to a row in the enterprise data warehouse bus matrix.”
大致翻译如下:
“业务过程是组织执行的经营活动,例如接受订单、处理保险索赔、注册学员上课或每月对每个帐户进行快照。业务过程事件生成或收集度量,这些度量转化为事实表中的事实。大多数事实表关注单个业务过程的结果。选择过程是很重要的,因为它定义了一个特定的设计目标,并允许声明粒度、维度和事实。每个业务过程对应于企业数据仓库总线矩阵中的一行”
在设计一个维度模型时,对于一个维度建模者来说,业务过程是一个事件或活动,它会生成或收集指标。这些指标就是组织的绩效测量值。业务过程通常具有以下关键特征:
其他几点相关好理解,重点对第二点业务过程收集或生成KPI指标进行说明,如果一个业务过程没有收集或生成一个组织当前或将来最关心的KPI指标,其也没数据分析意义继而也不是业务用户关心活动事件,也不算一个业务过程,更没有在数据仓库总线矩阵存在的必要。在识别过程时,可以参考上述几点特征作为判断一个业务动作是否为业务过程的标准。
总结
业务过程是受到业务系统支持的,会生成或收集组织的绩效指标(KPI),由用户动作、运营动作或系统动作触发的事件。注意,业务过程是企业的业务活动中一个不可拆分的行为事件,如下单、支付、退款都是业务过程。