数据体系建设
数据中台是企业数据汇集地,但并不是简单的数据堆积,而是进行分层建模,数据体系建设最终呈现一套完整、规范、准确的数据。数据体系建设就是大数据中数据仓库建设。如下图:
-
贴源数据层 ODS(Operational Data Store):贴源层又称操作数据层,对各业务系统数据进行采集、汇集,尽可能保留原始业务流程数据,与业务系统基本保持一致,仅做简单整合、非结构化数据结构化处理,或者增加标识数据等,不做深度清洗加工。
-
统一数仓层 DW(Data Warehouse):数据仓库层又细分为很多层,大致为:明细数据层 DWD(Data Warehouse Detail)和汇总数据层 DWS(Data Warehouse Service),与传统数据仓库构建一样,对全历史业务过程数据进行建模存储。
-
标签数据层 TDM(Tag Data Model):面相对象建模,对跨业务板块、跨数据域的特定对象数据进行整合,把各个业务板块、各个业务过程中同一对象的数据打通,形成对象的全域标签体系,方便深度分析、挖掘、应用。
-
应用数据层 ADS(Application Data Store):本层也可以叫 DM(Data Market)数据集市层,按照业务需要从统一数仓层、标签数据层抽取数据,并面向业务提供特定数据,以满足业务及性能需求。
以上数据体系建设过程中数据的读取也有严格的规范要求,按照规范,贴源数据层直接从业务系统或日志系统中获取数据。贴源数据层的数据只被统一数仓层使用,统一数仓层数据只被标签层和应用数据层使用,最终所有业务使用的数据均来自于标签层和应用层。
在大数据数据仓库课程中我们详细学习了数据仓库的分层与构建,当时不涉及数据标签层,这里我们详细介绍数据标签层。
一、数据标签层
统一数仓中的数据时按照数仓的维度规范建模,对业务数据按照主题域进行组织,但是同一个对象的各种指标信息分散在不同的数据域并且有不同的数据粒度。例如:
-
用户数据,用户注册宽表信息中有用户注册渠道、性别、手机号码等信息。
-
用户登录信息宽表中有用户连续登录天数、用户最后登录时间、用户累计在线时长等信息。
-
用户订单信息宽表中有用户下单量、用户累计消费、用户最后下单金额等信息。
以上各种宽表中的各种信息涉及到了各个主题域,想要了解一个用户的全面信息,例如:了解用户手机号码、连续登录天数、累计消费金额信息,需要通过各种关联关系才能满足业务需要,数据使用成本高。而有时获取、分析用户的全面数据是多个业务的共同需求,例如:运营人员需要知道每个用户的年龄段、消费金额信息来制定营销活动,机器学习部门需要知道每个用户的年龄段、消费金额信息来训练模型等等。
那么在企业数据中台构建中,各个业务部门需要用到的这些共性数据(描述对象的全面数据)就可以通过标签数据层来满足,通过构建标签数据层可以做到企业精细化运营,例如:精准营销、精准推荐、用户画像、用户维护(针对用户群体进行研发用户偏好产品,吸引用户)等。注意:很多个业务部门经常共同使用到的指标就可以构建成标签数据。
标签数据层建设一方面让数据变的可阅读、易理解,方便业务使用,另一方面通过标签类目体系将标签组织排布,以一种适用性更好的组织方式来匹配未来变化的业务场景。
二、如何构建数据标签层
1、确定构建标签对象
进行标签建设首先要清楚对哪些对象建设标签,也就是明确对象,例如:对用户、对产品、订单等。经过对多个行业,多个标签体系建设来看可以把对象分为“人”,“物”,“关系”三大类。
“人”包括自然人、法人、消费者、消费者协会、电商企业等,表示可以主动发起行为的主体。
“物”包括物品、物体、仓库等,表示行为中被施与对象。
“关系”包括购物、运货、聊天、监管等,表示人物关系、人人关系、物物关系,包括行为关系、归属关系等。
明确了企业中对哪些对象进行构建标签就可以进行标签体系建设。企业中的对象非常多,不会对所有的对象都构建标签体系,企业需要什么对象的标签就构建什么对象的标签,常见构建标签体系的对象有客户、员工、用户、产品、设备等。一种对象标签体系的建设不会影响另外一种对象标签体系建设,可以同时对多个对象进行标签体系建设。
2、设计标签类目
企业业务需要使用的标签项一般都会非常之多,当标签项超过 50 个时,业务人员要使用或者查找标签变得非常麻烦,所以标签一旦多了之后,我们就需要设计标签类目,根目录就是前面提到到“人”、“物”、“关系”。根目录也叫一级目录,除了一级目录之外,按照所属关系还可以分为“二级目录”、“三级目录”,一般标签类目结构分为三级分层结构即可。
类目体系的层级构建尽量以用户最容易理解的方式进行展开,也可以根据各自业务来设计“一级目录”、“二级目录”、“三级目录”,这样可以方便数据开发者或者数据库管理员快速找到所需要的标签数据。
以下为标签类目设计示例:
以上表中对应的红色数字字符串可以存储在 mysql 关系型数据库中,如果企业数据标签量大,可以以每级别目录创建表,以 K,V 方式存储标签数据,存储目的主要是为了方便数据开发者或者数据库管理员快速找到所需要的标签数据,另外企业中如果构建了标签系统,也可以在标签系统中查询对应表进行级联展示。
以上表中对应的蓝色字体为在数据体系中标签层中对应的表名和每张表中对应的字段名称。标签表的建立可以和最后一级标签目录对应,也就是说最后一级标签目录对应一张标签表,当然这也不是固定死的,也可以非最后一级目录对应一张标签表,但是要避免一些标签表中标签字段过多,不均衡问题。这些标签字段对应的结果值都是从 DWS 层中进行跨主题域进行分析得到。
通常来说构建标签体系是指对象的标签类目+标签,标签体系设计的核心是标签类目设计(一级、二级、三级等目录),标签类目设计完成,整个标签体系的框架就有了,后面就是往每个叶类目下填充通过数仓 DWS 层可以加载出来的标签,进而完成整个标签体系的建设。
3、标签表实现
设计好标签类目之后,对应的标签表中的数据就是通过查询数据体系中的 DWS 层的数据,这个过程中涉及到跨多张业务宽表、多主题域的查询,将多个表结果按照全局统一的 ID 进行融合(例如:用户 ID,用户身份证 ID,手机号等),根据获取各个宽表中的数据,进一步按照业务规则判断,找到相应标签对应的值,存入标签表中。实际上一般的标签表中除了有对应的标签值之外都还会有全局统一的 ID,这样方便后期查询使用标签表中的数据,为业务方赋能,提供更多的数据价值。