原文大佬介绍的这篇用户画像数仓建设实践有借鉴意义的,这些摘抄下来用作沉淀学习。如有侵权,请告知~
一、数据仓库&用户画像简介
1.1 数据仓库简介
简而言之,数据仓库是一个集成的、面向主题的、相对稳定的数据集合,它能够反映数据的历史变化。在构建数据仓库时,会根据不同的主题域对数据进行分类,并通过数据建模技术对数据进行重新组织和抽象,以便于从更层次对分析对象进行一致且完整的描述,清晰的刻画出各种分析场景,涵盖企业各个方面的数据。
以流量主题域为例,可以清楚地知道这个主题域包含了企业所有系统的用户行为数据。数据仓库的集成性特性体现在它能够整合来自不同业务系统的数据。通过大数据采集框架抽取工具,数据被统一存储在数据仓库中,并利用数据建模技术将一些同字同义、同数同表的数据组织成一致性事实与维度。
数据仓库的相对稳定性意味着数据一旦入库,通常会被长期保留。与关系型数据库相比,数据仓库中的新增、修改和删除操作较少,因为大部分操作都是查询。这种稳定性使得数据仓库能够记录历史数据和事件环境的变化,从而帮助企业对未来发展趋势做出合理的预测和判断。
1.2 数据仓库的价值
数据仓库的价值主要体现在以下几个方面:
- 快速存取数据:数据仓库统一了数据出口,使得业务人员无需访问各个业务系统来获取数据,从而大幅提升了数据获取和使用的效率。
- 高质量数据输出:数据仓库通过数据建模和数据质量保障措施,能够过滤掉业务系统中异常的数据,确保输出数据的质量。
- 响应业务变化:数据仓库的模型能够快速迭代,以满足不同业务场景的分析需求,适应业务的变化。
- 保障数据安全:对于企业敏感或隐私数据,数据仓库通过去脱敏或加密等手段确保数据安全,并控制数据的使用范围,实现对企业核心数据的细致管理。
- 及时数据服务:数据仓库能够根据不同需求提供不同粒度的数据服务,例如天级,小时级甚至实时级数据,并在OLAP引擎的支持下实现数据的即席查询。
- 提高决策能力:企业可以通过数据仓库输出的核心指标来预测未来的发展趋势,做出合理的决策。
1.3 用户画像简介
用户画像是对用户信息进行标签化处理的过程,它通过收集用户的社会属性,行为特征等信息来对用户进行描述,并对这些特征进行统计分析,以挖掘用户的潜在价值。为了快速收集用户行为数据并挖掘其价值,需要建立一个完善的大数据应用体系。
用户画像的作用在于,它可以帮助大数据走出数据仓库,通过精准化运营工具为用户提供个性化推荐,精准营销等多样化的数据服务。这样的服务不仅能够提升用户的体验,还能增强数据的价值,使大数据真正成为推动业务发展的有力工具。
1.4 用户画像—标签体系
用户画像从生产者的角度来看,本质上对用户进行打标签的过程。根据打标签的方法,可以将标签分为两类:统计类标签和算法类标签。
- 统计类标签是最基础和最常见的标签类型,例如用户的访问城市区域商圈、访问天数等。这些标签是基于用户行为和预定义的计算口径生成的。
- 算法类标签是通过机器学习或者深度学习挖掘产生,用于对用户的某些属性或者某些行为进行预测判断。例如:根据用户行为特征预测用户的性别、年龄等。
58 同城的画像平台,按品牌划分,涵盖了 58 同城、安居客等品牌下的各类标签。根据每个品牌下不同的业务板块进一步细化标签体系,其中的统计类标签就是通过用户画像数仓来生成的。
二、用户画像数仓建设过程
2.1 画像数仓—背景&现状
首先,介绍一下数仓建设的背景。起初,接收的标签是由历史部门交接过来的,总共有大约 3000 个标签。这些标签涉及的计算口径和数据源等信息,流失的非常严重吗。此外,标签生成流程主要是基于 MapReduce(MR)实现的**,**整个计算过程相当复杂,存在许多冗余的 ETL 任务,且对新的需求支持速度和问题处理效率都较低。再者,标签数据的产出时间非常晚,通常要到下午 2 点左右才能完成当天的 t+1 标签。
为了解决这些问题,进行了标签生产流程的重构,实施步骤主要包括以下两个阶段:
- 标签计算口径和数据源梳理:从梳理标签的计算口径开始,收集涉及的数据源信息,沉淀出一套完善的标签知识库。在这个过程中,我们还总结出了一套面向数据开发的指标定义规范。
- 基于标准化数仓建设规范升级流程:根据标准化的数仓建设规范,升级整个标签生产流程,并沉淀了一套相对通用的数仓研发规范。
2.2 画像数仓—整体架构
画像数仓的整体架构如上图所示,自下而上分为三个层级:
- 垂直数据中心:这是按照不同业务板块划分的数据中心,集中了各个业务领域的资产,并提供了相对标准化的数据,例如用户行为数据,用户注册数据等。目前,画像数仓涵盖了大多数业务的用户数据,日处理数据量约为 20 TB。
- 公共数据中心:这个中心是按照不同的主题进行划分的,构建了面向不同分析需求的主题数仓。它包含了一些公共汇总数据和明细数据。例如,面向用户行为分析的场景,建设流量数仓提供给业务使用。
- 应用数据中心:位于公共数据中心之上,它面向不同的需求产出个性化的指标。在用户画像分析场景中,会根据不同的标签需求和应用主题域产出相应的标签数据。
在整个数仓建设的生命周期中,实施了一系列数据规范,包括建模规范,研发规范,指标定义规范等,以确保数仓架构的稳定性和健康性。
2.3 画像数仓—研发流程
画像数仓的研发流程,从需求沟通到数据验收,分为六个阶段:
- 需求沟通:这是流程的起始阶段,主要进行需求讨论和分析。
- 设计:这是流程中最重要的阶段,包括数据源信息的质量探查和分析,数据主题域划分, 指标定义以及模型和ETL设计。在这个阶段,数据开发团队需要输出设计文档,以便进行后续的技术评审。
- 技术评审:通过评审后,进入开发阶段。
- 开发:这一阶段主要是面向SQL编程的工作;
- 测试:开发完成后,进行测试以确保数据的准确性和完整性。
- 上线与验收:最后阶段,数据开发团队主要以辅助角色支持上线和验收工作;
2.4 画像数仓—指标定义
接下来,介绍用户画像数仓的指标定义规范。用户画像数仓是为了生产统计类标签而建设的数仓。指标定义的目的是为了快速辅助模型的设计,同时间避免指标二义性以及重复建设的问题,通过明确定义指标,可以确保在数据仓库中对数据的处理和分析更加准确和高效。
根据指标的性质可以将其分为三类:原子指标、派生指标和衍生指标。
- 原子指标:是基于某个业务事件的不可拆分的度量,如支付金额,商品库存等,他们具有明确的业务含义。
- 派生指标:原子指标+时间周期+多个修饰词。例如,“近一天用户访问二手车类目的次数”中,访问次数是原子指标,近一天是时间周期,二手车是类目相关的修饰词。
- 衍生指标:是基于派生指标复合而成的指标,例如:比例型指标、均值型指标等。
在处理数仓接收到的需求时,我们发现大部分是派生指标和衍生指标,原子指标本身并没有具体的业务分析价值,它们是与业务过程相关的一些度量。
在定义派生指标时,需要清晰的定义出派生指标所涉及的业务板块,所用数据的主题域,来源的业务过程,以及由哪些原子指标和修饰词组成。这样的定义有助于更准确的理解和处理数据仓库中的指标需求。
在建设画像数仓的过程中,还会遇到一类特殊的指标,例如“最近访问的终端类型”和“长访问房产类目”等标签。这些标签的特殊之处在于它们的计算结果是非数值类型的。这类指标通常根据它们的计算结果来定义,如果计算结果是单值文本类型,就将其定义为排名性指标;如果是多值文本类型,则定义为对象集合类型指标。
对于这两种特殊指标,我们在定义时会引入一些特殊的原子指标,并增加一些额外的修饰词,以便清晰地描述指标的计算口径。例如,“常访问房产类目”这个标签,其计算口径是“近 90 天内浏览时长 top5 的房产类目”。在这种情况下,我们会将类目集合定义为原子指标,并增加“统计方法”、“排名名次”、“排名范围”和“排名方式”等修饰词,以清晰地描述这个指标的计算口径。
2.5 画像数仓—建模方法论
常见的建模方法有以下四种:
- ER模型(实体-关系模型):这种模型要求满足三范式原则,即每一列,每一行以及整张表的数据都具有原子性。ER模型的优点在于它极大的消除了数据冗余,并且能够快速满足实体更新和实体间关系的更新。然而,在面向数据分析场景时,它的缺点是关联查询较多,且难以适应业务的频繁变化。
- Data Vault 模型:这是在 ER 模型的基础上进一步规范化的模型,是一种中心辐射式模型,是3NF建模的衍生,其建模思想是围绕着业务键的集成模式。Data Vault 模型进一步消除了数据冗余,但在数据分析场景下,它也存在关联查询多和对数据建模要求高的问题。
- Anchor模型:这是一种 KV(键值)结构化的模型,相对于Data Vault 模型,它进一步整合了数据。Anchor 模型的设计思想是所有实体只添加扩展,不进行修改,这使得它最易于实体扩展和业务变更。不过,相对于前两种模型,在进行数据分析时,它的成本更高,关联查询也更多。
- 维度建模:这是一种反规范化设计方法,从数据需求出发,同时服务于数据分析需求。它能够满足大规模复杂查询的性能需求,产出指标时关联查询较少,建模成本也较低。然而,与泛式建模相比,它对数据更新不太友好。
在选择建模方法时,用户画像作为一种分析数据场景,为了低成本、高效率地完成用户标签生产,选择维度建模作为方法论是最合适的。维度建模适用于那些需要快速、频繁地读取数据的分析场景,正好符合用户画像数仓的需求。
2.6 画像数仓—事实表
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
74)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!