数仓开发常常须要与数据表打交道,那么数仓表开发实现之后就高枕无忧了吗?显然不是,还须要思考一下如何剖析数据以及如何出现数据,因为这是施展数据价值很重要的一个方面。通过数据的剖析与可视化出现能够更加直观的提供数据背地的机密,从而辅助业务决策,实现真正的数据赋能业务。通过本文你能够理解到:
- 帕累托分析方法与数据可视化
- RFM 剖析与数据可视化
- 波士顿矩阵与数据可视化
帕累托剖析与数据可视化
基本概念
帕累托 (Pareto) 分析法,又称 ABC 分析法,即咱们平时所提到的 80/20 法令。对于帕累托 (Pareto) 分析法,在不同的行业都有不同的利用。
- 举个栗子
在企业的库存治理中,能够发现多数种类在总需用量 (或是总供给额、库存总量、储备金总额) 中,占了很大的比重,但在相应的量值中所占的比重很少。因而能够使用帕累托分析法,将企业所需的各种物品,按其需用量的大小、物品的重要水平、资源短缺和洽购的难易水平、单价的高下、占用储备资金的多少等因素分为若干类,施行分类管理。
商品销售额剖析中,某些商品的销售额占了总销售额的很大部分,某些商品的销售额仅占很小的比例,这样就能够将其分为 A、B、C 几大类,对销售额占比拟多的分类进行投入,以取得更多的销售额。
在品质剖析中,对某种原因导致产品质量不合格的产品数量进行剖析,应用帕累托 (Pareto) 分析法,能够很直观的看出哪些起因造成了产品质量不合格以及哪些起因比较严重。这样就能够着重解决重要的问题,明确指标,更易于操作。
- 另一种表述形式
依据事物在技术或经济方面的次要特色,进行分类,分清重点与非重点。对每一种分类进行区别对待治理,把被剖析的对象分成 A、B、C 三类,三类物品没有明确的划分数值界线。
分类与重要水平 | 形容 |
---|---|
A 类(十分重要) | 数量占比少,价值占比大 |
B 类(比拟重要) | 没有 A 类那么重要,介于 A、C 之间 |
C 类(个别重要) | 数量占比大但价值占比很小 |
分类的核心思想:多数奉献了大部分价值。以商品品类和销售额为例:A 品类数量占总体 10%,却奉献了 80% 的销售额。
数据分析案例
- 效果图
- 实现步骤
假如有如下数据集格局:
品牌 | 销售额 |
---|---|
NEW BALANCE(新百伦) | 8750 |
ZIPPO(之宝) | 9760 |
OCTMAMI(十月妈咪) | 5800 |
须要将数据加工成上面的格局:
品牌 | 销售额 | 销售总额 | 累计销售额 | 累计销售额占比 |
---|---|---|---|---|
=∑所有品牌销售额 | = 以后品牌销售额 + 上一个品牌销售额 | 累计销售额 / 销售总额 |
具体的 SQL 实现如下:
SELECT
brand, -- 品牌
total_money, -- 销售额
sum(total_money) over() AS sum_total_money,-- 销售总额
sum(total_money) over(ORDER BY total_money DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acc_sum_total_money -- 累计销售额
FROM sales_money
下面给出了具体的 SQL 实现,其实 BI 工具曾经内置了许多的处理函数和拖拽式的数据处理,不须要写 SQL 也能够将一份明细数据加工成下面的模式。
- 论断剖析
从下面的帕累托图中能够看出:A 类的 (绿色局部) 占了总销售额的 80% 左右,B 类 (黄色局部) 占总销售额的 10%,C 类 (红色局部) 占总销售额的 10%。接下来能够进行长尾剖析,制订营销策略等等。
RFM 剖析与数据可视化
基本概念
RFM 模型是在客户关系治理 (CRM) 中罕用到的一个模型,RFM 模型是掂量客户价值和客户创利能力的重要工具和伎俩。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三项指标来形容该客户的价值情况。
RFM 模型较为动静地层示了一个客户的全副轮廓,这对个性化的沟通和服务提供了根据,同时,如果与该客户打交道的工夫足够长,也可能较为准确地判断该客户的长期价值(甚至是一生价值),通过改善三项指标的情况,从而为更多的营销决策提供反对。
在 RFM 模式中,包含三个要害的因素,别离为:
- R(Recency):示意客户最近一次购买的工夫有多远,即最近的一次生产,生产工夫越近的客户价值越大
- F(Frequency):示意客户在最近一段时间内购买的次数,即生产频率,常常购买的用户也就是熟客,价值必定比偶然来一次的客户价值大
- M (Monetary):示意客户在最近一段时间内购买的金额,即客户的生产能力,通常以客户单次的均匀生产金额作为掂量指标,生产越多的用户价值越大。
最近一次生产、生产频率、生产金额是测算消费者价值最重要也是最容易的办法,这充沛的体现了这三个指标对营销流动的指导意义。而其中,最近一次生产是最无力的预测指标。
通过下面剖析能够对客户群体进行分类:
客户类型与等级 | R | F | M | 客户特色 |
---|---|---|---|---|
重要价值客户(A 级 /111) | 高(1) | 高(1) | 高(1) | 最近生产工夫近、生产频次和生产金额都很高 |
重要倒退客户(A 级 /101) | 高(1) | 低(0) | 高(1) | 最近生产工夫较近、生产金额高,但频次不高,忠诚度不高,很有后劲的用户,必须重点倒退 |
重要放弃客户(B 级 /011) | 低(0) | 高(1) | 高(1) | 最近生产工夫交远,生产金额和频次都很高。 |
重要挽留客户(B 级 /001) | 低(0) | 低(0) | 高(1) | 最近生产工夫较远、生产频次不高,但生产金额高的用户,可能是将要散失或者曾经要散失的用户,该当基于挽留措施。 |
个别价值客户(B 级 /110) | 高(1) | 高(1) | 低(0) | 最近生产工夫近,频率高,但生产金额低,须要进步其客单价。 |
个别倒退客户(B 级 /100) | 高(1) | 低(0) | 低(0) | 最近生产工夫较近、生产金额,频次都不高。 |
个别放弃客户(C 级 /010) | 低(0) | 高(1) | 低(0) | 最近生产工夫较远、生产频次高,但金额不高。 |
个别挽留客户(C 级 /000) | 低(0) | 低(0) | 低(0) | 都很低 |
数据分析案例
- 效果图
- 实现步骤
假如有如下的样例数据:
客户名称 | 日期 | 生产金额 | 生产数量 |
---|---|---|---|
上海** 有限公司 | 2020-05-20 | 76802 | 2630 |
须要将数据集加工成如下格局:
具体 SQL 实现
SELECT customer_name,-- 客户名称
customer_avg_money,-- 以后客户的均匀生产金额
customer_frequency, -- 以后客户的生产频次
total_frequency,-- 所有客户的总生产频次
total_avg_frequency, -- 所有客户均匀生产频次
customer_recency_diff, -- 以后客户最近一次生产日期与以后日期差值
total_recency, -- 所有客户最近一次生产日期与以后日期差值的平均值
monetary,-- 生产金额向量化
frequency, -- 生产频次向量化
recency, -- 最近生产向量化
rfm, -- rfm
CASE
WHEN rfm = "111" THEN "重要价值客户"
WHEN rfm = "101" THEN "重要倒退客户"
WHEN rfm = "011" THEN "重要放弃客户"
WHEN rfm = "001" THEN "重要挽留客户"
WHEN rfm = "110" THEN "个别价值客户"
WHEN rfm = "100" THEN "个别倒退客户"
WHEN rfm = "010" THEN "个别放弃客户"
WHEN rfm = "000" THEN "个别挽留客户"
END AS rfm_text
FROM
(SELECT customer_name,-- 客户名称
customer_avg_money,-- 以后客户的均匀生产金额
customer_frequency, -- 以后客户的生产频次
total_avg_money ,-- 所有客户的均匀生产总额
total_frequency,-- 所有客户的总生产频次
total_frequency / count(*) over() AS total_avg_frequency, -- 所有客户均匀生产频次
customer_recency_diff, -- 以后客户最近一次生产日期与以后日期差值
avg(customer_recency_diff) over() AS total_recency, -- 所有客户最近一次生产日期与以后日期差值的平均值
if(customer_avg_money > total_avg_money,1,0) AS monetary, -- 生产金额向量化
if(customer_frequency > total_frequency / count(*) over(),1,0) AS frequency, -- 生产频次向量化
if(customer_recency_diff > avg(customer_recency_diff) over(),0,1) AS recency, -- 最近生产向量化
concat(if(customer_recency_diff > avg(customer_recency_diff) over(),0,1),if(customer_frequency > total_frequency / count(*) over(),1,0),if(customer_avg_money > total_avg_money,1,0)) AS rfm
FROM
(SELECT customer_name, -- 客户名称
max(customer_avg_money) AS customer_avg_money , -- 以后客户的均匀生产金额
max(customer_frequency) AS customer_frequency, -- 以后客户的生产频次
max(total_avg_money) AS total_avg_money ,-- 所有客户的均匀生产总额
max(total_frequency) AS total_frequency,-- 所有客户的总生产频次
datediff(CURRENT_DATE,max(customer_recency)) AS customer_recency_diff -- 以后客户最近一次生产日期与以后日期差值
FROM
(SELECT customer_name, -- 客户名称
avg(money) over(partition BY customer_name) AS customer_avg_money, -- 以后客户的均匀生产金额
count(amount) over(partition BY customer_name) AS customer_frequency, -- 以后客户的生产频次
avg(money) over() AS total_avg_money,-- 所有客户的均匀生产总额
count(amount) over() AS total_frequency, -- 所有客户的总生产频次
max(sale_date) over(partition BY customer_name) AS customer_recency -- 以后客户最近一次生产日期
FROM customer_sales) t1
GROUP BY customer_name)t2) t3
通过下面的剖析,能够为绝对应的客户打上客户特色标签,这样就能够针对某类客户指定不同的营销策略。
波士顿矩阵与数据可视化
基本概念
波士顿矩阵 (BCG Matrix) 又称市场增长率 - 绝对市场份额矩阵、波士顿征询团体法、四象限分析法、产品系列构造管理法等。
BCG 矩阵辨别出 4 种业务组合:
- 1. 明星型业务(Stars,指高增长、高市场份额)
- 2. 问题型业务(Question Marks,指高增长、低市场份额)
- 3. 现金牛业务(Cash cows,指低增长、高市场份额)
- 4. 瘦狗型业务(Dogs,指低增长、低市场份额)
波士顿矩阵通过销售增长率(反映市场引力的指标)和市场占有率(反映企业实力的指标)来剖析决定企业的产品构造。
案例
- 效果图
- 实现步骤
本案例以剖析客户为背景,将客户分类,找到明星客户、现金牛客户、问题客户以及瘦狗客户。
假如数据集的款式如下:
客户类型 | 客户名称 | 生产金额 | |
---|---|---|---|
A 类 | 上海** 公司 | 20000 | 2020-05-30 |
首先须要计算 客单价:每个客户的均匀生产金额,即客单价 = 某客户总生产金额)/ 某客户生产次数
其次须要计算 记录数:每个客户的生产次数,即某个客户总共生产的次数
接着须要计算 均匀生产金额:所有客户的均匀生产金额,即所有客户的总生产金额 / 所有客户生产次数
最初计算 均匀生产次数:所有客户的均匀生产次数,即所有客户的总生产次数 / 总客户数
具体 SQL 实现:
SELECT
customer_name, -- 客户名称
customer_avg_money, -- 客单价
customer_frequency , -- 以后客户的生产次数
total_avg_money,-- 所有客户的均匀生产金额
total_frequency / count(*) over() AS total_avg_frequency -- 均匀生产次数
FROM
(SELECT
customer_name, -- 客户名称
max(customer_avg_money) AS customer_avg_money, -- 客单价
max(customer_frequency) AS customer_frequency , -- 以后客户的生产次数
max(total_avg_money) AS total_avg_money,-- 所有客户的均匀生产金额
max(total_frequency) AS total_frequency -- 所有客户的总生产频次
FROM
(
SELECT
customer_name, -- 客户名称
avg(money) over(partition BY customer_name) AS customer_avg_money, -- 客单价
count(*) over(partition BY customer_name) AS customer_frequency, -- 以后客户的生产次数
avg(money) over() AS total_avg_money,-- 所有客户的均匀生产金额
count(*) over() AS total_frequency -- 所有客户的总生产频次
FROM customer_sales ) t1
GROUP BY customer_name) t2
通过下面的剖析,大抵能够看出客户画像:
- 某客户的生产次数超过平均值,并且每次生产力度 (客单价) 也超过平均水平的客户:断定为明星客户,这类客户须要重点关注;
- 某客户的生产次数超过平均值,但每次生产力度未达到平均水平的客户:被断定为现金牛客户,这类客户通常生产频次比拟频繁,能给企业带来较为稳固的现金流,这类客户是企业利润基石;
- 某客户的生产次数未达到平均值,但每次生产力度超过平均水平的客户:是问题客户,这类客户最有心愿转化为明星客户,然而因为客户存在肯定的潜在问题,导致生产频次不高,这类客户须要进行重点跟进和长期沟通;
- 生产次数未达到平均值,生产力度也未达到平均水平的客户:属于瘦狗客户,这类客户通常占企业客户的大多数,只须要一般性保护,如果企业资源无限,则能够不必投入太多的精力。
总结
本文次要介绍了数仓开发应该要理解的常见的数据分析办法,次要有三种:帕累托剖析、RFM 剖析以及波士顿矩阵剖析。本文别离介绍了三种分析方法的基本概念、操作步骤以及 SQL 实现,并给出了相应的可视化剖析图表,每个案例都是企业的实在利用场景。心愿给数仓开发的同学提供一些察看数据的剖析角度,从而在理论的开发过程中可能多思考一下数据的利用价值以及数据如何赋能业务,进一步晋升本人的综合能力。
公众号『大数据技术与数仓』,回复『材料』支付大数据资料包