连续三个月都有购买行为的新客户具有重要价值,这类客户往往具有较高的忠诚度和长期价值潜力,是企业重点维护的对象。本篇文章将介绍如何在PowerBI中找出这一类关键人群。
问题描述
判断每个客户是否为连续三月都有购买的新客户,定义为如下:
1、以事实表最后一个日期所在月份为锚点,在过去的三个月中每个月都有购买行为
2、在过去的三个月之前不存在购买行为
例如:事实表最后的日期为:2021年5月15日,那么在2021年3月、4月以及5月的每个月中都有购买行为,并且在2021年3月1日之前无购买行为的客户,即为连续三月都有购买的新客户。
具体问题如下图所示:
本案例的初始数据如下:
订单表:
日期 | 客户名称 | 数量 |
---|---|---|
2020年10月1日 | A | 2 |
2020年11月1日 | B | 6 |
2020年10月1日 | C | 2 |
2020年11月1日 | A | 2 |
2020年11月1日 | B | 6 |
2020年11月1日 | C | 2 |
2020年12月1日 | A | 2 |
2020年12月1日 | B | 6 |
2020年12月1日 | C | 2 |
2021年1月1日 | A | 2 |
2021年1月1日 | B | 6 |
2020年10月1日 | C | 2 |
若需其它辅助表等,可自行创建并建模。
解题要点
本案例的解题思路比较直接,可以使用表构造器配合时间智能函数,直接迭代最后三个月,先看下某个客户是否在每个月都有购买记录,然后再看看其在过去三个月之前是否有购买记录,从而过滤掉老客户即可。
解决方案
首先,数据模型如下图所示:
然后,创建如下度量值:
是否为连续三月都有购买的新客户 =
VAR N = 3
VAR MaxDate = LASTDATE(ALL('订单表'[日期]))
VAR IsContinueBuy =
SUMX(
GENERATESERIES(0,N-1),
CALCULATE(NOT ISEMPTY('订单表'),PARALLELPERIOD(MaxDate,-[value],MONTH))*1
)=N
VAR IsNewCustomer = CALCULATE(ISEMPTY('订单表'),'订单表'[日期]<=EOMONTH(MaxDate,-N))
RETURN
IF(IsContinueBuy && IsNewCustomer && ISINSCOPE('订单表'[客户名称]),"是","否")
然后创建一个矩阵,并将客户名称字段作为行标签,再将上面的度量值放入矩阵的值字段即可,如下图所示:
总结
以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!
PBI/DAX技术交流群(QQ):344353627