目录
前言
建立用户画像首先建立数据仓库,用于存储用户标签数据。Hive是基于Hadoop的数据仓库工具,依赖于HDFS存储数据,提供的SQL语言可以查询存储在HDFS中的数据。开发一般使用Hive作为数据仓库,存储标签和用户特征库等相关数据。
一、数仓建模
在数据仓库建模的过程中,主要涉及事实表和维度表的建模开发。
1.1 DWD事实表
其中事实表主要围绕业务过程来设计,就应用场景来看,主要包括事务事实表、周期快照事实表和累计快照事实表。
- 事务事实表:用于描述业务过程,如下单业务记入下单事实表,支付业务记入支付事实表。
- 周期快照事实表:在一个确定的时间间隔内,对业务状态进行度量。例如查看一个用户的近一年付款金额,近一年购物次数,近30日登陆天数等。(快照:状态)
- 累计快照事实表:用于查看不同事件之间的时间间隔,例如分析用户从购买到支付的时长,从下单到订单完结的时长等。一般适用于有明确时间周期的业务过程。
1.2 DIM维度表
维度表主要用于对事实属性的各个方面描述,例如,商品维度包括商品的价格,折扣,品牌,原厂家,型号等方面信息,维度表开发的过程中,经常会遇到维度缓慢变化的情况,对于缓慢变化维一般会采用:(1)重写维度值,对历史数据进行覆盖;(2)保留多条记录,通过插入维度列字段加以区分;(3)开发日期分区表,每日分区数据记录当日维度的属性;(4)开发拉链表按时间变化进行全量存储等方式进行处理。
在画像系统中主要使用Hive作为数据仓库,开发相应的维度表和事实表来存储标签、人群、应用到服务层的相关数据
二、标签开发
2.1 DWS宽表—分区存储
如果将用户标签开发成一张大的宽表,在这张宽表下放几十种类型标签,ETL作业将会花费很长时间,而且不便于向这张宽表中新增标签类型。解决这种ETL划花费时间较长的问题,可以从以下几个方面着手:
- 将数据分区存储,分别执行作业;
- 标签脚本性能调优;
- 基于一些标签共同的数据来源,开发对应的中间表;
列举一种用户标签分表,分区存储的解决方案。
根据标签指标体系的人口属性、行为属性、用户消费、风险控制、社交属性等维度分别建立对应的标签表,进行分表存储对应的标签数据。如下图所示:
- 人口属性表:dw.userprofile_attritube_all
- 行为属性表:dw.userprofile_action_all
- 用户消费表:dw.userprofile_consume_all
- 风险控制表:dw.userprofile_riskmanage_all
- 社交属性表:dw.userprofile_social_all