分享

谈谈数据中台数据分层建模和数据指标体系建设

 数据治理精英馆 2021-12-24

    一、概述

    数据资产是数据管理和应用领域经常被提到的概念,数据中台的目的就是将数据转变为数据资产。数据资产是由企业拥有或控制,能够为企业带来经济利益的数据资源。可明确作为“资产”的数据资源,表现为以下两种形式:可帮助现有产品实现收益的增长;数据本身可产生价值。数据资产一定是有价值的数据,没有价值的数据不能称为数据资产。

    什么样的数据能成为数据资产呢?比如,大型集团集采平台基于供应商数据、采购业务数据、物资数据做出推荐系统,这个推荐系统提升了采购体验,提高了采购效率,降低了采购成本,这些整合后的供应商数据、采购业务数据、物资数据就是数据资产。但是,现在一些企业没有统一的定义数据的标准,没有统一的数据存储规范,只是粗放地收集数据,把数据散乱地存放在服务器里,这些数据不能被组织和利用,就不能成为数据资产。因此我们需要一套标准的指标体系和模型体系来定义和存储数据,标准化输出数据能力,让数据成为资产。

    二、数据指标体系

    1、数据指标的定义

    指标是公司在经营和生产管理过程中衡量某一个目标或事物的数据,包含指标名称和定义、计算单位、计算方法、维度和指标数值等要素。通过指标的拆解定义一套没有歧义、标准一致的数据指标体系,只有增长指标才能指导企业如何行动,从而实现企业价值增长。

    2、数据指标的重要性

    要想发挥数据中台的核心作用,要做的第一件事就是梳理公司的数据指标体系。在实际项目中,当梳理公司的指标时,我们会发现每个部门对同一个指标的定义有可能是不一致的,甚至一个部门内的人员对同一个指标的理解都有可能不同,由于每个部门职责不同,他们通常只会站在本位角度上定义指标,而每个人看待和理解这个世界的角度也是不同的,所以他们通常会站在自己的角度上定义指标。

    通常各部门根据自身业务需要,都有一部分的量化指标,但不够全面,也缺乏方法论指导,对于企业整体数据分析应用能力提升的指导作用有限;由于缺乏整体考量而设置的指标体系,以及错误的指标分析方法,会产生错误的分析结果,进而影响运营层面、产品改进方面的决策。另外,如果标准不统一,就很难进行部门间的横向对比。比如部门A提交的年交易额是10万元,部门B提交的该年交易额是50万元,如果没有统一的标准,我们就无法衡量50万元的交易额比10万元的交易额的价值高。一个指标的开发过程涉及业务部门、管理部门、技术部门等,沟通成本很高,只要一个环节理解不对,指标的计算结果就会不准确。因此,为公司建立一套清晰、没有歧义的指标体系是数据中台需要承担的一项十分重要的工作。

    3、如何定义数据指标

    那如何让指标定义清晰且没有歧义呢?解决这个问题的核心方法就是拆解:将一个数据指标拆解到不能再继续拆解为止,这样就能够最大限度地保证理解无误。

    首先定义出这个指标所属的业务板块和数据域,接下来定义这个指标的业务过程(如销售领域的价格、销量、收入等)。接着要判断这个指标是一个原子指标还是一个派生指标,如果是一个派生指标,这个指标的时间周期、修饰词分别是什么;通过什么衡量这个指标,最后要定义这个指标的统计维度是什么,这些维度的属性有哪些。经过这样一层一层的拆解,每个指标会归入不同的类别,因为每个指标都有各个维度清晰的定义,只要公司内所有人都以这份定义为准,歧义就不会产生。

    (1)业务板块:即面向行业的业务,也就是公司的业务线,不会经常变。比如一个公司有六大业务分别是油气、炼油和化工、矿业、装备制造、光伏、科研,那么这六个业务就分别属于不同的业务板块。

    (2)数据域:数据所属的领域。例如,销售、生产、库存都属于数据域。

    (3)业务过程:完成某个业务所涉及的全部过程。如销售业务中的定价、寻客、销售、回款等环节都属于业务过程。

    (4)时间周期:就是统计的时间范围,如“近30天”“自然周”“截止到当天”等。

    (5)修饰类型:对修饰词的描述。如供应商中的信用级别、所属区域等。

    (6)修饰词:除了维度以外的限定词,如支付方式中的电汇、支票、承兑等。

    (7)原子指标:即不可再拆分的指标,比如支付金额、支付件数等指标。

    (8)维度:是指度量单位,用来反映业务的一类属性。常见的维度有地理维度(国家、地区等)、时间维度(年、月、周、日等)、订单的维度等。

    (9)属性:隶属于维度。如地理维度中的国家名称、省份名称等都属于属性。

    (10)派生指标:一组对应的原子指标、修饰词、时间周期就组成了一个派生指标。

    接下来我们通过一个实际的案例来看下制定指标的方法。

    为确保指标数据标准定义的完整与严谨,我们形成了一整套指标数据标准的信息项属性架构。

    通过对业务的全面梳理和分析,归纳并定义了 5 大主题 36 个子主题域共 2083 个指标,来反映公司关键数据指标的分布。

    根据公司实际情况,制定数据指标体系建设4步走的推进路线,即 收集 → 梳理 → 讨论 → 统一 ,有序推进项目进展,实现集团和园区层面的数据指标体系统一、完整、准确。

    最后为了保证数据指标的一致性,公司的数据指标应该交由数据中台负责部门统一管理,公司内所有部门应该以这套指标体系为准,如果有对指标的新增或者修改,首先要通知数据中台负责部门,然后再同步给公司其他部门。这套指标体系的定义如同公司的法律,必须人人遵守,这样就能最大程度地保证指标的一致性和统计数据的合理性。

    三、数据模型设计

    要想了解为什么要进行数据模型设计,首先我们要了解一些概念,比如什么是数据库、什么是数据仓库、数据仓库和数据库的区别是什么、数据仓库为什么要分层存储。

    1、什么是数据库和数据仓库

    假设公司领导让你统计公司当月的总交易额,如果你的公司只有一条产品线,那么这项工作就十分简单。

    首先,你可以从业务系统中提取产品线的全部订单,接着,你可以提取当月的订单,并针对下单金额做汇总。最后,你就可以将汇总计算出的交易额数据准确无误地提交给领导。

    但是如果你所在的公司是一家大型多元化集团公司,公司内部有多个板块,你的领导要求你汇总各板块当月的总交易额,你应该怎么做?在没有数据仓库的情况下,你会这样处理:首先统计公司有多少条业务板块;然后找到每个业务板块的业务负责人,索要当月该板块的订单;接着将所有订单汇总到Excel中,这时候你会发现,因为业务形态的不同,各板块给你的订单数据没有统一的标准,比如订单状态,每个板块都会有自己的标准。你应该以怎么样的口径统计每个板块的交易额呢?因为标准不统一,会导致你的工作效率很低,而且统计的数据不一定准确。

    而如果有了数据仓库,你就可以提前对每个板块做调研,统一交易额的口径(包括业务口径、技术口径、计算方式、统计周期等)。因为交易额属于交易主题域,你可以针对交易主题域进行主题建模,比如你需要统计1月份集团所有板块的交易额,那么统计维度就是时间,指标就是交易额。在建模完成后,数据开发工程师可以将业务数据库中的数据定时同步到数据仓库,接着数据开发工程师可以针对已经汇总好的订单数据按照月份的维度做进一步汇总统计并存储下来,因为提前做了汇总,那么下次你就可以直接从数据仓库中取出当月公司的任何板块的交易额,很快就能解决任务。

    通过以上案例我们可以看出数据库与数据仓库的用途是完全不同的。数据库和数据仓库虽然都是用来存储数据的,但数据库是用来存储业务数据的,而数据仓库是用来存储汇总后的报表数据的。

    什么是业务数据呢?业务数据就是对现实业务的数据虚拟,比如订单业务数据就是记录客户在什么时间买了什么产品;客户数据库,用于记录客户的数据比如公司名称、社会统一信用代码等信息;产品数据库,用于记录产品的相关信息如类别、规格、型号等。

    数据仓库的主要作用是存储汇总统计的数据,以支撑公司的决策分析。一般来说,数据仓库的数据量是比较大的,而且其汇总统计的数据一般是不会再有变化的,比如上文提到的公司当月的交易额,这个汇总的数据不会因为新增的订单而变化,而业务数据库的数据量会随着用户的交易次数增多而增多。如果公司业务比较简单,那么就没有必要搭建数据仓库,基于数据库已经足够做统计分析了,但是多元化集团公司要做大量的数据分析时,就适合搭建数据仓库。

    2、数据仓库的分层建模体系

    数据中台数据模型的分层建设业界比较通用的分层方式是将数据模型分为四层:

    ①ODS层(Operate Data Store,操作数据层)和DIM层(Dimension,维度数据层);

    ②DWD层(Data Warehouse Detail,明细数据层);

    ③DWS层(Data Warehouse Service,汇总数据层);

    ④ADS层(Application Data Store,应用数据层)。

    第一层是ODS层和DIM层。ODS层数据是数据仓库的第一层数据,是业务数据库的原始数据的复制,例如,生产相关的产能、产量、用料等数据一般都是原封不动地同步到数据中台的ODS层中的。ODS层的作用是在业务系统和数据仓库之间形成一个隔离层,在数据中台进行计算任务时,可以以ODS层的数据为基础进行计算,从而不给业务数据库增加负担。DIM层存储的是维度数据,如月份、类别、车间等维度的数据。

    第二层是DWD层。DWD层数据是数据仓库的第二层数据,一般基于ODS层和DIM层的数据做轻度汇总。DWD层存储经过处理后的标准数据,需要对ODS层数据进行再次清洗(如去空/脏数据、超过期限的数据等操作)。DWD层的结构和粒度一般与ODS层保持一致,但是DWD层汇总了DIM层的维度数据,比如在ODS层只能看到A车间的产量数据,但是在DWD层不但能看到A车间的产量数据,还能看到B车间的产量数据。

    第三层是DWS层。DWS层数据是数据仓库的第三层数据,是以DWD层的数据为基础进行汇总计算的数据。DWS层数据都是各个维度的汇总数据,比如某日某车间的生产总量、物料消耗数量、设备开机数量、开机时间、工时总量等。

    第四层是ADS层。ADS层数据是数据仓库的最后一层数据,以DWS层数据为基础进行数据处理。ADS层的最主要目的就是给数据可视化应用提供最终的数据。后端开发工程师基于ADS层的数据将最终数据结果以接口的形式展示给数据中台的应用层。

    数据仓库为什么要分层建模呢?我们还是通过实际案例来理解。假设还是要统计A产品当月的交易额,如果没有采用分层建模,那么数据统计就是以结果为导向的,直接提取业务数据库中的A产品的订单时间、订单金额,然后筛选时间为当月的订单,并基于订单金额做汇总计算,最后通过接口的方式将数据输出到应用层。

    如果采用分层建模,第一步是将业务数据库的数据同步到ODS层中,将维度数据存储在DIM层中,第二步是通过DWD层丰富统计指标的维度,本文中的需求是时间维度,可以预先增加其他常用的维度如区域、行业的维度,第三步是在DWD层中汇总各个维度的交易额,第四步是基于当前的需求,计算出A产品的当月交易额,在ADS层提供要显示的数据。

    在实际数据中台项目中针对数据指标的开发,有以下两种情况比较常见。

  (1)数据指标口径发生变化。随着业务的变化,数据指标的统计口径不是一成不变的,数据指标经常会基于业务目标的变化而变化,相应的统计逻辑也会变化。

  (2)增加数据指标的统计维度。单个维度的数据指标统计随着业务的发展有可能不再满足需求,此时很有可能遇到给数据指标增加统计维度的情况,数据指标的统计维度越丰富,就越有利于数据分析。

    针对这两种情况我们分别看一下没有分层建模和分层建模的区别。

    第一种情况:数据指标的统计口径发生了变化。比如统计口径由之前的统计A产品的当月全部订单的交易额变为统计A产品当月的订单状态为“已支付”的订单的交易额。此时其实数据指标并没有发生变化,仍然叫“交易额”,但是统计口径发生了变化。

    如果没有进行分层建模,那么对外的接口要增加订单状态筛选的逻辑,再进行测试、核对数据、发布新版本接口才能完成针对交易额统计的优化。如果进行了分层建模,ADS层、DWD层的数据是不用变化的,因为业务数据库的原始数据没有变化。此外,因为数据指标的显示没有变化,所以只需针对DWS层增加筛选订单状态为“已支付”的统计逻辑,然后由数据开发工程师、测试工程师测试DWS层并统计数据即可,不用发布新版本的对外接口,所以应用层并不用再针对接口做对接。

    第二种情况:给数据指标增加统计维度。比如不但要查看A产品的当月交易额,还要查看A产品的当月不同省份、不同行业的交易额。如果没有进行分层建模,每增加一个维度就增加一倍的工作量,要重新修改计算逻辑、重新定义对外接口、重新测试、重新发布新的版本才能完成数据指标的新的维度统计。    

    如果进行了分层建模,由于DWD层和DWS层已经丰富了交易额的维度如区域、行业等,那么只需后端开发工程师在通过接口提取ADS层数据时新增维度“省份”和“行业”的统计结果,然后重新发布对外的接口即可,由于新的数据指标统计不需要数据开发工程师的参与,所以大大减少了数据中台开发的工作量。

    4、综述

    数据中台项目建设过程中,数据模型的科学性、合理性、高效性是数据资源转化为数据资产的重要基础,数据指标定制的全面性、规范性、有效性是数据中台发挥价值的重要保障。因此,企业在构建数据中台时,必须重视数据指标体系的构建和数据模型的设计,必要时引入外部咨询机构和专家力量,避免将数据中台建成数据重台。

欢迎加入数据管理者

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多