针对企业经营分析的数据模型优化研究
2022-10-11冯秀荣
冯秀荣 刘 海
(1.之江实验室交叉创新研究院 浙江杭州 311121;2.天枢数链(浙江)科技有限公司 浙江杭州 310012)
引言
如今,数据已是除土地、劳动力、资本、技术外的第五大生产要素,无论传统企业还是互联网企业,都纷纷希望借助大数据技术,让数据为企业发展做出更科学决策。企业经营分析是利用会计核算、统计核算、业务以及其他方面提供的数据信息,采用一定分析方法,依靠计算机技术,分析企业经营活动的过程及其结果,从而加强对企业运行情况的把握,监控运行过程的问题,发现商业机会以及提炼经营管理知识,以便充分挖掘人力、物力、财力潜力,合理安排生产经营活动,提高经济效益的一门经营管理科学和活动。企业经营分析系统是以企业内部各业务系统的数据以及外部可获取的符合企业需求的各类数据为基础数据源,构建统一的企业级数据中台,利用OLAP(On-Line Analytical Processing)、ETL(Extract-Transform-Load)及数据挖掘技术,帮助企业的管理决策层了解企业经营的现状,发现企业发展的优势和劣势,助力预测未来趋势;帮助企业细分市场和客户,指导营销、客服部门开展有针对性的营销和高效的客户关系管理;对决策的执行情况和结果进行客观准确的评估。企业经营分析系统不仅是对企业经营分析活动的信息化支撑,更重要的是对企业经营管理活动的信息化支撑,是企业经营管理信息化的具体实现。企业经营分析系统实现了一个从数据到信息再到知识的转化过程,是一项较为完整的从技术到管理的活动。企业经营分析系统根据使用对象的不同,构建不同的数据模型。一般而言,面向业务运营人员的数据模型,数据颗粒度比较细,需要针对某个具体问题进行深入多维度数据分析或者数据挖掘,形成专题分析报告,以便了解新产品发展情况或产品优化效果,助力产品用户规模、用户体验或产品营收达到预期。面向管理决策层的数据模型,数据颗粒度相对较粗,基本以日为最小统计周期(个别情况会涉及以小时为统计周期)的汇总性指标,数据指标多且多为综合性衍生指标。本文提出的数据模型优化方法主要针对面向管理决策层用户的数据模型。
企业经营分析相关内容
(一)企业经营分析指标体系
企业经营分析指标体系是指由若干个反映企业经营发展总体数量特征相对独立又相互联系的统计指标所组成的有机整体。本文以一般互联网企业为例,如图1所示,企业经营分析主要从业务域、财务域、管理域、研发域及市场域五大领域构建企业经营分析指标体系。其中业务域包含企业各个业务线条一系列反映业务发展的相关指标,比如新增用户数、累计用户数、用户活跃率、用户留存率等。财务域主要围绕财务三大报表(资产负债表、利润表和现金流量表)以及公司管理决策层的关注重点开展指标体系设计,主要包含收入类、成本费用类、绩效类、现金流量、资产负责、资本开支等方面的指标。管理域主要从员工管理、项目管理、知识产权管理及服务管理等方面展开。研发域主要从研发质量和系统能力两方面展开分析。市场域主要从业务的市场规模、行业发展等方面开展分析。跨域的综合性分析指标也很重要,比如人均产值、人均人工成本、ARPU等。
(二)互联网企业经营分析特点
互联网企业的经营分析有以下特点:企业经营分析指标易变性。在企业经营分析中,经营分析内容往往围绕企业年度战略开展,但随着业务的快速发展及市场的瞬息万变,企业战略往往会随之调整。因此,经营分析内容也将随着战略的变化而调整。企业经营分析指标多样性。企业经营分析涉及企业经营的方方面面,包括业务域、财务域、管理域、研发域及市场域等多个主题,每个主题下面还分N个子主题。企业经营分析指标数量多。因企业经营分析涉及的领域很多,每个领域都有自己的子分析指标体系,企业经营分析往往还会涉及跨主题综合性分析指标。企业经营分析指标其涉及的分析指标也非常多,从几十个到几百个不等。企业经营分析指标多维性。与业务系统记录数据和简单查询数据不同,企业经营分析需要将企业各类数据通过OLAP技术进行统一建模,通过复杂计算和逻辑处理,形成满足各类分析需求的多维指标体系。
基于OLAP的关系数据模型
(一)OLAP技术
关系型数据库有两种数据处理模式,分别是联机事务处理OLTP(On-Line Transaction Processing)和联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,用于业务,例如银行交易。OLAP是数据仓库的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,主要用于分析。联机分析处理的概念最早由关系数据库之父E.F.Codd于1993年提出。Codd认为,联机事务处理已不能满足终端用户对数据库查询分析的要求,SQL对大容量数据库的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量的计算才能得到结果,而查询的结果并不能满足管理决策者提出的需求。因此,Codd提出了多维数据库和多维分析的概念,即OLAP。联机分析处理的主要特点是直接仿照用户的多角度思考模式,预先为用户组建多维的数据模型。例如对销售数据的分析,时间周期是一个维度,产品类别、分销渠道、地理分布、客户群类也分别是一个维度。一旦多维数据模型建立完成,用户可以快速地从各个分析角度获取数据,也能动态地在各个角度之间切换或者进行多角度综合分析,具有极大的分析灵活性。
(二)数据建模方法
数据仓库建模方法主要有范式建模、多维建模。范式建模由Bill Inom提出的数仓理论,将事物抽象为“实体”(Entity)“属性”“关系”(Relationship)来表示数据关联和事物描述,也叫ER实体关系模型。ER实体关系模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式,且该建模方法需要满足3NF。多维建模法由数据仓库大师Ralph Kimball提出,它是数据仓库工程领域最流行的建模方法。多维建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。多维建模是面向分析的,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
无论范式建模,还是多维建模,都是关系型数据库建模范畴。关系型数据库使用一系列二维表来表达数据以及数据之间的联系。关系型数据库的优点有:容易理解,二维表的结构非常贴近现实世界;使用方便,通用的SQL语句使得操作关系型数据库非常方便;易于维护,数据库的ACID(Atomicity、Consistency、Isolation、Durability)属性,大大降低了数据冗余和数据不一致的概率。关系型数据库不足之处是数据需要预先定义结构,也就是说关系型数据库必须定义好字段和表结构之后,才能够添加数据,例如定义表的主键、索引、外键等。表结构可以在定义之后更新,但是如果有比较大的结构变更,就会变得复杂。在过往的企业经营分析系统中,基于原有的数据建模方法,一旦有新增指标,要么重构数据模型,要么建立更多数据模型,这会导致因数据模型过多,使得使用和维护数据模型变得很复杂,从而增加使用错误的数据解决问题的风险。本文针对关系型数据库建模方法的局限性,提出一种度量维度化的数据模型,解决因业务频繁变化指标频繁变更导致数据模型过多带来的管理和使用困扰。
度量维度化的数据模型
传统的经营分析系统在构建数据模型时,主要根据业务需求建立各类数据模型。如果有新业务需求,数据开发工程师会先判断原有模型是否能满足新需求的要求。如果能满足,则直接采用原有数据模型进行需求开发。如果原有数据模型不能满足新业务需求,则要么重构原有数据模型,要么新建一个数据模型。一般工程师会采用新建新数据模型的方式来解决新需求,因为重构数据模型会涉及历史数据迁移问题而变得更加复杂。长此以往,数据模型会越来越多,多则几百个甚至更多,如图2所示。数据模型一旦过多,管理和使用数据模型会变得很困难。工程师在处理业务需求时,面对如此多的数据模型,而且很多数据模型具有很大的相似性但又有区别,都不知道应该采用哪个数据模型合适。老工程师一直跟进数据模型,对数据模型比较熟悉,如果有新业务需求,他们就大概知道用哪个模型。新工程师刚接手工作,由于经验不足,即使有说明文档也难以操作,也很容易根据自己的理解给出错误的数据解决方案。因此,为解决数据模型过多,导致使用和管理数据模型困难等问题,本文引入度量维度化数据模型,如图3所示。
一个数据模型中包含维度(Dimension)和度量(Measure)。维度就是观察数据的角度,即从哪个角度去分析问题。维度一般是一个离散的值,比如时间维度上每一个独立的日期或地域,因此统计时,可以把维度相同记录的聚合在一起,应用聚合函数做累加、均值、最大值、最小值等聚合计算。度量即分析指标,是被聚合的统计值,也是聚合运算的结果,它一般是连续的值。
度量维度化是指将数据模型中的所有度量根据一定的逻辑规则映射到一个新维度中,称之为指标维度,记为an+1,存放所有度量名称,如图3所示。度量区域形成一个新的也是唯一的度量,用来存放指标维度对应的值,记为value。一般来说,报表层面的分析维度基本比较稳定,易变的是分析指标。度量维度化后,如果有类似分析维度的新业务需求,无需新建数据模型,只需要在原有的数据模型上追加新需求的数据内容即可。因为新数据需求的新增度量指标直接存放在指标维度里,所以新增业务分析指标可以在同一模型下无限扩展。
度量维度化数据模型实证分析
度量维度化数据模型在某互联网企业经营分析系统中进行了较好的实践。
(一)度量维度化数据模型应用
本文引入某企业具体数据模型的简化案例,如表1所示。由于数据模型及数据的保密性要求,本文引入的实践案例进行了脱敏处理,数据模型及其数据均为实验数据,不是企业真实内容。数据开发工程师根据数据主题来构建各类数据模型,比如营收数据模型、用户模型、市场模型等。如果需求想获取某个业务各省营业收入、营业成本等内容,工程师只要从营收模型进行需求开发即可。如果领导既想获取营收相关数据,又要获取该业务在各省的用户发展情况时,按主题开发的数据模型不能解决同时满足营收和用户的数据需求,这时需要重新构建一个既包含用户又包含营收的数据模型。如此以往,数据模型会越来越多。而引入度量维度化模型后,如表2所示,将营业收入、营业成本、活跃用户数、新增用户数、离网用户数、市场份额等各类分析指标均存放在indicators维度中,分析指标对应的值则存放在indicators_value中。这样,如果以后有分析维度基本一致的新需求时,就不需要再新建模型,可以无限制在原有模型上追加新需求。
表1 数据模型简化实例
表2 度量维度化数据模型简化实例
实际上企业经营分析的指标非常多,有些多达几百个。为了更好地运用度量维度化数据模型,本文引入一张指标字典表,如图3中的表TableMetadata。表TableMetadata存放数据模型中或者企业经营分析系统中所有分析指标。表TableMetadata包含10个字段,分别为自增序列、指标类型、指标名称、指标解释(或处理逻辑)、指标统计维度、指标数据来源、指标状态、备注、指标建立时间、指标更新时间等。数据开发工程师或数据分析人员能够快速了解数据模型中各分析指标的含义、统计逻辑、数据来源、指标状态、指标创建时间及指标更新时间等信息,便于准确理解指标的情况,运用数据模型正确解决各类数据需求。分析字典表简化实例如表3所示。
表3 指标字典简化实例
值得注意的是,数据模型中尽量存放基础指标,通过若干个基础指标综合运算而得到的指标不建议存放在数据模型中,但综合指标的相关解释和定义可以存放在指标字典表中,以便了解综合指标是怎么来的,想表达什么业务问题。比如家庭宽带综合ARPU=当年家庭宽带业务收入/月份数/平均家庭宽带客户数,其中,平均家庭宽带客户数=(期初值+期末值)/2。从公式可以看出,家庭宽带综合ARPU涉及到的基础指标有财务域的当年家庭宽带业务收入和业务域的家庭宽带客户数等指标,属于跨域综合性分析指标。又比如人均产值=当年运营收入/平均考核人数*(12/月份个数),其中,平均考核人数=∑每月考核人数/月份个数。这里,人均产值既涉及财务域的分析指标也涉及管理域的分析指标,属于跨域综合性分析指标。这类指标可以在开发经营分析报表时,直接利用前端报表开发工具通过调用基础指标利用公式函数计算而得。
(二)度量维度化数据模型实践效果论证
在企业经营分析系统中,ODS层是从业务系统同步过来最基础的原始数据,一般不做特殊处理,度量维度化模型一般不应用在此层。DW层根据业务基本属性进行了一定点汇聚,形成各类事实表和维度表,度量维度化模型基本也不应用在此层。ST层是面向经营分析需求的报表层,之前所述的各类面向管理决策层的数据需求均从ST层输出,因此,度量维度化模型应用在此层最合适不过。部署度量维度化数据模型后,企业经营分析系统该企业经营分析系统中ST层的数据模型数量减少了三分之二,如图4所示。一旦有类似分析维度的新需求,如果原有模型内容不能满足,只需要在原有数据模型中直接追加相应的新增分析指标即可,无需再新建数据模型。
数据历史承接性良好。度量维度化数据模型不仅是数据模型数量的变化,在历史数据的变迁上有良好的承接性。比如之前某个业务指标叫a,但是由于业务内容的变化,现在该业务指标变为b,他们之间数据是具有历史继承性的,在做长时间趋势分析时需求将两个指标的数据连接起来才更具有分析价值。如果是传统的数据建模,他们应该是会分布在不同的数据模型中,而且两者之间的关系无从得到较好的体现。但是部署到度量维度化模型中后,两者之间的关系可以用指标字典来维系,而且两者同时存放在同一数据模型中,数据调用更简便。
降低出错率,提升工作效率,提升用户体验。数据模型大幅减少,数据模型更加聚焦后,数据开发工程师能快速定位需求对应的数据模型。经实践证明,数据需求开发效率大幅提升,数据结构错误率大幅减少,不仅提升了开发工程师的使用体验,更提升了管理决策层对数据使用的用户体验。
度量维度化数据模型对传统企业数据化转型的借鉴意义
在5G、云计算、物联网盛行的时代,石油、天然气、汽车、基础设施和制药等较为传统的企业也积极加入数字化转型的浪潮中。尽管度量维度化数据模型诞生于互联网企业,但其建模思想在助力传统企业转型上也有很好的借鉴价值。传统企业与互联网企业相比,指标相对稳定。但根据最近二十年实践经验发现,传统企业也需要紧随时代潮流,进行变革和创新,酝酿出更多有市场竞争力的产品。新产品、新模式、新业态意味着评估标准也需要突破传统模式。度量维度化数据模型可以把各类业务、各种产品、不同指标融合到模型中,适应不同评估模式,指标的获取根据需要灵活运算、自由切换。
传统企业构建基于度量维度化数据模型企业经营分析系统,架构示意图如图5所示,主要分为三层架构。
最底层为企业各个业务系统,主要负责生产企业业务数据。传统企业应提高业务线信息化程度,建立稳定的业务系统,扎实业务底层基础。
中间层是数据平台。数据平台将孤立的各业务数据,通过关键值(keyword)关联在一起,存储到离线数据平台中。数据平台另一个主要的功能就是将数据根据不同的颗粒度进行分层,以便适应不同层级的业务需求。一般将业务数据分层四个层级,分别为业务操作数据层ODS(Operational Data Store)、数据维度层DIM(Dimension Data Layer)、数据明细层DWD(Data Warehouse Detail)以及数据汇总层DWS(Data Warehouse Service)。
顶层围绕企业战略,将核心指标从粗到细逐层展开,形成以企业当前战略为核心的指标层次结构,利用度量维度化数据模型构建企业经营分析系统。尽管企业的战略会随市场行情调整,但是度量维度化模型提供了各类基础指标,根据不同的战略需要,可进行指标间自由组合运算,适应各种战略需求。
实际上,构建以数据平台为基础的企业经营分析系统是一件投资大、周期长、见效慢的事情,互联网企业天生具备数字化基础,搭建企业经营分析系统相对比较容易实施,但想要成功部署到传统企业,会面临诸多利益相关者的阻力。如何尝试用数据分析的过程去优化管理决策,让管理层逐渐看到数据价值,通过数据分析助力企业生产经营是一个较大的考验。
结论
在快速成长的互联网企业中,由于业务尚未完全定型,或者新业务层出不穷,业务分析指标也随着业务的发展而不断变化。也许数据模型刚建好,业务需求已经发生很大变化,数据模型已经不能完全适应新的业务需求。传统的数据建模方式,面对不断变化的业务需求,往往通过构建更多点数据模型来满足。而改良后的度量维度化数据模型具备较好的抗燥性,只要分析维度基本一致,无论需求怎么变化,新增分析指标均可直接追加到原有数据模型中,无需重构数据模型。因此,改良后的数据模型特别适用于基本分析维度不变,分析指标频繁变化的情况,这将大大减少数据模型数量,便于数据模型的使用、维护和管理,减少运维成本、沟通成本,减少数据出错率,提升工作效率,从而快速响应业务需求,助力企业经营发展。