c

chaojie

V1

2022/06/12阅读:24主题:极简黑

数仓笔记|针对客户维度建模需要关注的5个因素


本文结构

  1. 前言
  2. 属性值的标准
  3. 维度模型的层次
  4. 三种标签的加工
  5. 关于数据的变化
  6. 关于数据的集成
  7. 小结

大家好,我是超杰。数仓系列计划一共20篇,这是我数仓笔记系列的第6篇。

这一篇主要是针对客户维度建模会遇到的一些问题,我把这些问题划分成5类。

0、前言

主要通过聊聊客户维度建模的细节问题,来帮助大家解决工作中,出现类似的问题。

或许,你会收获到:

  • 有意识地进行数据质量的管理
  • 了解到不同层次的维度的解决方案
  • 数据资产的形态,以标签为主的解决方案
  • 针对数据变化频繁,了解优化加工数据的效率策略
  • 针对数据集成,了解维度模型开发会出现的隐患

当然,以下是本人阅读书籍资料以及融合个人工作经验所写下来的笔记。

希望能够对大家有所启发。

1、属性值的标准

先讲讲属性值是什么意思?

性别是属性,男,女,未知,这些就是属性值。爱好是属性,打篮球,下棋,绘画,这些就是属性值。

客户维度一般会包含几十甚至上百个属性,如果不对属性值做标准,后续的数据分析工作会特别困难。

举个例子,我工作中,遇到地址信息填写不完整的现象特别多,客户随便填写,导致我们很难分析到很细的数据。

这些脏数据是没有价值的,如果我们不做标准,即便有上百个属性,没有标准也没有分析价值。

总之,一句话,没有标准,没有价值

下面这是地址细到街道的标准,需要自取。

关于更新全国统计用区划代码和城乡划分代码的公告 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html

国家统计局 http://www.stats.gov.cn/tjsj/tjbz/

2、维度模型的层次

维度模型的层次一般分为2种:

  • 层次固定
  • 层次不固定

第一种,层次固定

大概是什么意思呢?

有些商业客户的性质,存在不同客户具有不同的客户类型,不同的客户类型之间,又有层次的说法。

就拿客户举例,A客户分为总公司,地方子公司,地方门店。像这种层次,就是固定的,固定的三种客户类型,母公司,子公司,以及终端门店。

针对固定层次的问题,我们会采用扁平化存储。

客户 客户类型 母公司 子公司 终端
伙食好便利店(南山分店) 终端 伙食好股份集团有限公司 伙食好股份集团有限公司(深圳分公司) 伙食好便利店(南山分店)
伙食好股份集团有限公司(深圳分公司) 子公司 伙食好股份集团有限公司 伙食好股份集团有限公司(深圳分公司) Null

那么,还有一种情况,层次不固定。层次不固定可以使用桥接表。

层次不固定的场景有哪些呢?

举个例子,我要找到某个企业的具有决策权的人。公司的股份分配,可以由法人持股,个人持股。我们找到的持股超50%,就算绝对控股。

如果我们找到的控股是法人,则要继续找法人的绝对控股的人是谁,直到找到的绝对控股是个人才算结束。

这就是典型的深度不固定,且深度不可预测,面对这种桥接表。

法人 控股人 控股占比 层数 实际控股人

大家感兴趣的可以思考一下,要如何开发设计。

3、三种标签的加工

客户维度存在很多属性,属性又可以分为三类:

  • 基础标签
  • 行为标签(加工类)
  • 预测标签(挖掘类)

基础类

基础类的标签,一般是客户直接填写得到的,比如说地址,姓名,性别,年龄。

这种标签,直接通过业务系统的客户信息表,直接获取的。

行为标签

而行为标签,是从事实表加工过来的。什么是行为标签,凡事要进行统计,才能得到的标签就是行为标签。

比如,近一个月的消费超1000元,近一个月登陆次数大于20次

为什么需要这些行为标签?

业务分析师,一般拿到简单的统计指标,是没有很大价值的,对于他们而言,拿到高价值客户,往往更有意义。

比如说,我想知道,我们APP的粘性较高的客户有多少?(举例:量化 粘性较高:上线次数1天大于3次,消费时长大于30分钟)

遇到这种需求,如果我们每次查询都从事实表过来,很消耗集群资源。

如果将这些标签加工到维表,好处很多:

  • 提高复用性
  • 降低事实表查询的频率,节约集群资源

挖掘类指标

接下来,聊聊挖掘类指标。

大家在工作中,可能会接触到一个客户评分及分析系统方法,RFM模型。

  • 相关度
  • 频繁度
  • 消费度

相关度,客户最近一次访问APP是什么时候

频繁度,客户在某个时间周期,访问APP的次数

消费度,客户在某个时间周期,消费的总金额

重点不在RFM模型,不过感兴趣可以看看RFM模型。

RFM模型 https://baike.baidu.com/item/RFM%E6%A8%A1%E5%9E%8B/7070365

接下来,我们会通过三种权重,每个月针对每个客户去评一次分。

分数会记录下来,加载到客户维度表里。

客户 RFM模型 其他行为标签
小明 60|60|40|80 ...
小红 80|90|80|60 ...

数据挖掘师会拿到我们的数据,对客户行为进行数据挖掘分析。

接下来,因为标签的特殊,所以在数据分层不太一样。

数仓分层不同人有不一样的理解,分层主要起到划分的作用,便于管理的作用。

比如,需要挖掘的需求多了,单独分了一层数据挖掘层。又比如,数据资产以标签的形式体现,单独分一层标签层。

有些公司管理标签,则是使用一个标签系统,记录着某个表的某个字段是客户实体的基础标签。

这些公司的数仓建模可能跟维度建模不太一样,所以使用系统对标签进行管理。

我会将客户信息表会分为3类,一类是基础信息表,一类是行为信息表,一类是挖掘信息表。

将三张表加工到一张表,加载到标签层也行。

或者,三张表放到维度层(dim),用后缀区别标签类型也行(基础,加工,挖掘)。

4、关于数据的变化

分析数据的变化,本质是关注数据生命周期。

比如说,关注某个时间,活跃客户有多少人。

被打上活跃客户的标签,它的生命周期被关注到了。

凡是被关注到的标签/属性,都需要设计数据如何存储的问题。

哪些数据是没被关注的呢?

比如说年龄,每天都有人生日,这数据也是在变。

但分析师觉得,性别的属性变化没有分析价值。数据就算刷掉,也影响不大。

能够关注到生命周期的数据存储,我想到的是拉链表。

关注生命周期,换句话说,关注历史状态。

还有另一种情况,只存储最新的状态,这种直接采用增量快照的存储方式。

比如说,某个订单号的状态变更为“已发货”。

分析师只要最新的状态,这时,我们针对这一类情况,采用增量存储即可解决问题。同时,可以避免计算资源的浪费。

5、关于数据的集成

数据仓库的其中一个作用,消除烟囱式的开发,将数据源集成起来。

多个业务系统存在多个客户数据,我们集成要做的事,先对数据分级,选择其中“最具权威”的源,获取到客户数据,并且删除属性值不标准的数据。

一致性问题

当然,“最具权威”的源,或许不止一个。

接下来,会涉及到一致性问题,比如属性数量不同,属性不同,以及属性值不同。

保证一致性呢,本质是共享多个可管理的属性,这些属性具有相同的字段名和属性值。

列举一些属性;

  • 性别:男,女,未知;
  • 政治面貌:群众,九三学社社员,共青团团员

维度可以根据维护共同属性,达到局部一致性的效果。

由于是多个源,拿到的客户信息。

如果用客户维度,关联多个事实表,可能出现某个客户在某个事实度量为空值的现象。

举个例子,房地产卖房,来看房的客户,不一定都成交。

如果拿到访客信息表和合同信息表,整合成一张客户信息表。

现在是用客户信息表,关联访客信息和合同信息,可能会出现大多客户,没有合同信息,成交额为空值。

数仓中,一般会尽量避免空值出现。

而且空值数据会使数据挖掘过程陷入混乱,导致不可靠的输出。

6、小结

  1. 没有标准,数据就没有价值;
  2. 维度层次扁平化还是设计桥接表,取决于业务需求;
  3. 客户维度属性划分标签,将数据转化为资产的,可以深入去研究;
  4. 数据变化,重点关注历史状态,可考虑全量快照和拉链表的方案;
  5. 数据集成,不得不考虑的一致性问题,以及数据质量问题。

这篇文章就到这里了,希望能对你有所帮助,欢迎加微信交流~

公众号:超杰的数据仓库笔记

私人微信:chaojieY

- END -

分类:

后端

标签:

大数据

作者介绍

c
chaojie
V1