跳至正文

【零售】Tableau LOD+TC做客户交叉购买分析(上)2.0更新

【2020年4月更新】【Tableau高级】LOD实例:基于订单的购物篮分析  

上文提供了更加精确的购物篮分析方法。 by 喜乐君

//本文已经加入即将出版的《大数据可视化:原理与方法》

今天客户咨询我一个问题,忙完了细细思考,非常值得写一篇小文章梳理其中的逻辑。此类的问题经常被人问及,之前也零散地分享过,终归不够系统,此次尝试说一下相关的业务需求和背后的技术逻辑。

本文阐述一种角度——一次Fixed LOD,加一次TC表计算(合计百分比)。

交叉购买 条形图

PS. 复习了一下高中数据并集和交集 😄

Tableau中左右连接Join,两种基本形式是inner Join和outer Join,前者是内连接(并集),后者是外连接(交集),分别用第二个字母来表示,就是A B(并集), 和A U B (交集)。

并集与交集

一、来自业务的需求说明

在销售领域分析中,有一个特别重要的领域是购买的交叉分析,比如“同时购买多个品类的客户数量”、“购买品类A同时购买品类B的客户占比”、“仅购买一次的客户中,不同品类的分布情况”等等。这些问题一般不会直接计算金额、商品数量等绝对度量的分析,而更偏重于结构性分析,特别是从顾客数量、品类数量、订单数量等高于商品层次的角度。

也就是,交叉分析往往是考察多个维度直接的结构性关系,而非直接深入单个维度的度量比例。

比如我们要查看客户的忠诚度,一个很重要的角度就是查看“不同购买频次下的顾客数量及占比”这样的分析视角。转化一下视角,从下图来看,就是不同品类的交叉情况。后面我们结合超市数据,分析这个图的可视化过程。

截屏2019-11-12上午9.25.14

二、客户与品类的交叉分析

我们站在销售经理的角度,尝试去分析不同品类的客户购买情况。我们首先可能会做每个分类的客户数量分析及其相关分析,比如购买金额、购买数量及其%占比等。不过,结构性分析的重点是查看另一个维度的对比或者趋势,比如不同年度的客户数量。

1、无关计算的初级可视化

这个时候,我们可以会想把年度作为颜色加入可视化对比(左下图),不过显然,看上去还不错,但是解释起来破费口舌,这说明我们没有很好地表述可视化焦点。重申一下题目“分析不同分类的客户数量在多年的对比趋势”,趋势应该是关键,所以我们更换品类标题和作为颜色标记的年,就会立刻切换图形,考虑到对比的关键是趋势,面积图自然会比条形图更加直观(右下角)。

在这里,我们可以很明显地发现“技术”的客户数量在2019年增速放缓,被“家具”迎头赶上,这也是折线图非常直观的地方。

商品分析 1

2、从直观趋势到内部结构性分析

不过,上面的图形还是停留在初级的分析层面,稍微深一点的分析视角,我们需要从宏观的多年对比回到当下,比如分析2019年的内部结构问题,这样年度就不再是值得关心的焦点,重点是结构。依然从客户和类别的角度出发,我们可以提出更多的结构性问题,比如:

  • 有多少客户仅仅购买了一个品类?多少客户购买了两个品类?多少客户购买了三个品类? 主要分布在哪些品类上?
  • 仅仅购买了A品类、仅仅购买了B品类、仅仅购买了C品类,以及购买了所有这些品类的客户占比是多少?
  • 购买某个品类的客户,同时购买其他哪些品类的概率更高?(连带购买分析)

比如先说第一个问题,哪些品类被反复购买,而哪些则被客户冷落?类似问题的背后,是查看每个客户购买的品类的次数,以及不同次数下的品类的分布。完整的说“(2019年)购买一个品类、两个品类、三个品类客户数量分别是多少?”

这里的客户数量需要聚合,同时还需要客户层面的一个字段作为维度——每个客户的购买品类数。需要使用一个层次的(辅助计算)字段,又不能使用这个层次的维度字段本身,因此我们就需要使用LOD表达式提前计算这个结果:{fixed 客户名称: countd(类别) } .

这个问题,可以参考15大详细级别表达式的第一个题目。(【Tableau】15大详细级别表达式-会员分析案例(对话版)

以这个字段作为维度,就可以查看购买了1个类别、2个类别……3个类别的客户数量(下图左上角)。不过这只是刚刚开始,我们还需要每一个条形图中更多的结构性组成,因此,我们把类别作为新的维度加入标记——颜色之中,发现了什么?

你会发现次数的坐标轴远远超过了此前的坐标轴对应的数量,为什么?因为这里购买2个以上的分类中客户出现了大量重复,以至于购买了三个类别的客户数量出现了三次——购买了A的客户数量,比如等于购买了B和C的客户数量,毕竟这些客户都是购买了三个类别。可以参考最开始的那个交叉图。

更专业的角度说,这是因为左边的图的详细级别停留在“客户购买的品类频次”,因此聚合为了三个数;而后者的详细级别进一步下沉,到了“客户购买频次” X “品类”,于是从三个标记,增加到7个标记。

交叉购买分析 1

结合上图下面的单品类情况图,我们发现,有23个客户仅购买过一个类别,其中仅购买办公用品的最多,占19人;有126人购买过两个类别,其中技术的连带率最低,仅有52人被连带购买了此分类;有622人购买了全部的三个类别。为了更清晰的看到分布,我们可以使用下面的这个图(借鉴了上面的图,但是比例和数值不对等,注意):

截屏2019-11-12上午9.26.55

这样的绝对值虽然客观,但是不容易对比,我们还需要转化为百分比。从全部客户的角度看,上面的每个数值需要除以全部的客户数量,在没有筛选的情形下,我们使用总计百分比的结果,和除以{ countd(客户名称)} 的结果是一致的。

因此,增加“快速表计算”——“合计百分比”之后,默认就是上图中间左侧的图形。注意这里的百分比,购买2个类别和3个类别的各占比百分比合计会大于1,为什么,因为客户有重复。

因此,在这里仅购买过办公用品的19人占比2%,技术和家具分别占比不足1%;购买办公用品同时连带购买其他一个类别的客户123人占比16%,同时购买了三个品类的客户占比81%。——这些值都是和全部的客户总数比较。

这个可以使用中间的图形,也可以使用下面的图形来补充增强——在此前的数值基础上,增加更多的角度:

交叉购买 .png

前面的数字代表交叉购买的类别数量,通过绝对值和百分比来突出具体的指标。这里只用了一个一次LOD计算和一次表计算,就可以完整展示不同交叉购买下的分类占比。很明显,这里的三个类别连带购买率占比很高,达到了81%;两个类别的连带购买率中,技术最低仅为7% (即7%的客户在购买了其他某个类别后连带购买了技术),而办公用品的连带率较高。——当然这里同时购买三个品类的客户占比最多,一个很重要的原因是我在看多年的数据,如果范围缩小,比例就会下降。 

 

三、背后的逻辑

看似简单的方法,背后可以理解LOD与表计算的使用,如果换一个方式,我们可以借助集和并集理解更背后的逻辑。比如在最上面的交叉图中,如何直接计算 AUB交集 的客户数量?用上面的LOD和表计算是无法返回的,因为AUB是两个颜色的交叉。我们从浅入深说一下这个过程。

如果我们只想查看购买了单一品类办公用品的客户有哪一些或者有多少,我们实际上是在所有的客户中抽取一部分建立一个子集,条件就是“购买了办公用品其没有其他类别”。如何用计算逻辑表达这个过程?

1、仅购买任意一个类别的客户

如果我们把仅购买了一个分类的客户建立一个集,条件相对容易,就是用上面返回的fixed函数,可以直接写入条件筛选的公式,如下:

截屏2019-11-11下午11.20.37.png

如果我们已经把fixed LOD加入计算字段,也可以选择字段及聚合实现,原理相同。如下:

交叉-仅购买一个分类.jpg

2、如果要看购买了一个类别,并且是“办公用品”的客户呢?

注意是购买了“办公用品”的客户,可以是只买过这个品类的,可以是同时购买了其他品类的。这时候就不能用上面的方式提取了,就需要指定 某一个分类。最好的判断方式就是if函数,我们先从行级别把所有的“办公用品”提取出来,由于这里的条件需要一个聚合计算,我们使用计数来判断数量。

因此把类别=办公用品的客户提取出来,借助辅助列来实现,如下图:

交叉购买 2

这样就建立了只满足特定条件的集合。它的逻辑是,(1)在行级别,把购买了“办公用品”分类的数据用一个单独字段标记,显示为[类别],其他类别都是null,

不过,这个方法紧适用于计算特定的数值比例,如果要查看所有的多个情况,即便你创建了多个集,却无法把这些集的占比放在一个完整的工作表中,依然是一个问题。

3、购买办公用品或者家具的 交集

知道了这个通过辅助列建立某个条件的字段,如果要同时查看购买A或者B的客户,就可以在上面的条件中使用 OR的逻辑字段就好。这个集合包含了“仅购买技术类别之外的所有客户”,参见后面的粉色部分。

countd(IIF([类别]=’办公用品’,[类别],null))=1
OR
countd(IIF([类别]=’家具’,[类别],null))=1

交叉购买 A或者B

不过,这里返回的结果是包含了购买一个分类、两个分类、甚至三个分类的所有客户,仅仅排除了完全没有购买办公用品和家具的客户,特别注意。如果客户M同时购买过三个分类,他就满足上面的OR的条件。

4、回到开篇,如果要看同时购买办公用品和家具的顾客有多少呢?(并集)

其实是两个的并集,按照上面的方法,分别计算购买办公用品的顾客数量(集内764人)和购买家具的顾客数量(集内701)——其实和类别条形图是一样的。然后做一个合并集,就可以获得同时购买二者的客户数量(集内696人),为什么这么多,大部分其实是同时购买了三种类别的客户(622人)。交叉购买 A同时B.png

至此,你就能计算交叉中任何一个交集的数量了。

 

至此,我们说完了零售中交叉分析的基本方法,LOD和表计算是理解交叉最容易的方法,无需使用“不等于”连接副本数据源,无需建立复杂的计算字段返回多个辅助列。第三部分,我们使用并集介绍了如何精细计算每一个分区数量的并集方法。

关键是理解第二部分,使用LOD的逻辑,和表计算灵活准确的百分比计算方法。

 

【更新】下载我的测试文件:

交叉分析 Nov 11, 2019 .twbx2

 

喜乐君
Nov 11, 2019 night
Nov 12, 2019 update

《【零售】Tableau LOD+TC做客户交叉购买分析(上)2.0更新》有0个想法

  1. 高中数学中的并集和交集和数据库的内联外联全联 并没有一一对应, 还是有点问题。不行,并集和交集是有特定含义,对应了,反而感觉怪怪的。而且好像对应错了。

    1. 我只是想用高中时使用的两个符号,U 和 倒U ,我修改一下文章,标记一下这个地方。 感谢

  2. 交集和并集搞反了吧,交集是inner join 倒U,并集是正U

      1. “3、购买办公用品或者家具的 交集”

        这时,看实现方式用 OR,应该属于并集吧?

        1. 是的,特意查了一下,全部确实是并集。是我弄错了。
          “给定两个集合A,B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集,记作A∪B,读作A并B。”

      了解 喜乐君 的更多信息

      立即订阅以继续阅读并访问完整档案。

      Continue reading