加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。
新客户意味着新业务的产生和业务的增长,因此销售会追踪新客户数量与销量,甚至会追踪新客户的其他相关指标。
解决方案
本质上讲,新客户分析属于时间相关分析。新客户是指当期有购进,当期以前没有购进,只要通过日期的平移,把当期和当期以前两个日期区间表达出来即可。时间智能函数DATESBETWEEN可以解决这个问题,它可以返回一个包含一列日期的表,从指定开始日期到指定结束日期的日期区间,然后将此区间用作 CALCULATE 函数的筛选条件。
在客户表中为新客户打标记,就可以通过分析新客户的相关指标了。
举例
有一张销售表,求2022年的新客户数量、新客户首次购进日期、新客户销量,并展示2022年新老客户对比2021年的销量增长贡献。
模型
销量表
度量值
销量:
Sales = SUM('Fact_Sales'[SalesVolume])
购进客户数:
#Customer_Active =
CALCULATE(DISTINCTCOUNT(Fact_Sales[Customer]), FILTER('Fact_Sales', [SalesVolume]>0))
新客户数量:
#New_Customer =
VAR _vm_CurrentEndDate = MAX('Dim_Date'[Date]) // 当期结束日期
VAR _vm_PreviousEndDate = MIN(Dim_Date[Date])-1 // 上期结束日期
VAR _vm_Customer_ToCurrent = // 截止当前所选日期区间末的购进客户数
CALCULATE([#Customer_Active],
DATESBETWEEN(Dim_Date[Date],
BLANK(), // 空表示日期区间从日期表的第一天开始
_vm_CurrentEndDate) // 以当期结束日期作为日期区间的结束
)
VAR _vm_Customer_ToPrevious = // 截止当前所选日期区间前一天的购进客户数
CALCULATE([#Customer_Active],
DATESBETWEEN(Dim_Date[Date],
BLANK(),
_vm_PreviousEndDate)
)
VAR _vm_New_Customer = // 以上前者减去后者得到所选日期区间内的新客户数
_vm_Customer_ToCurrent-_vm_Customer_ToPrevious
RETURN
IF(_vm_New_Customer=0, BLANK(), _vm_New_Customer) // 无新客户返回空
新客户首次购进日期:
Listed_Date =
CALCULATE(MIN(Fact_Sales[Date]), FILTER(VALUES(Dim_Customer[Customer]), [#New_Customer]=1))
新客户销量:
Sales_New_Customer = CALCULATE([Sales], FILTER(VALUES(Dim_Customer[Customer]), [#New_Customer]=1))
老客户数量:
#Old_Customer =
VAR _vm_PreviousEndDate = MIN(Dim_Date[Date])-1
VAR _vm_Customer_ToPrevious =
CALCULATE([#Customer_Active],
DATESBETWEEN(Dim_Date[Date],
BLANK(),
_vm_PreviousEndDate)
)
RETURN _vm_Customer_ToPrevious
老客户销量:
Sales_Old_Customer =
CALCULATE([Sales], FILTER(VALUES(Dim_Customer[Customer]), [#Old_Customer]=1))
2022年的新客户数量、新客户首次购进日期、新客户销量,在矩阵中,如下。因为2021年之前无数据,因此2021年的客户均为新客户。
在柱状图中,新客户数量、老客户数量、新客户销量、老客户销量,如下:
如果需要区分新老客户的销量增长贡献,需要在客户表中新建列,标记新老客户,然后用于坐标轴。
新老客户计算列:
Customer_Type_2022 =
VAR _vm_CurrentYear = 2022 // 如果需要动态取当前年可以用YEAR(TODAY())
RETURN
IF(
CALCULATE([#New_Customer],
Dim_Date[Year]=_vm_CurrentYear
)=1, // 按照指定时间段返回客户对应的新客户数量
"New",
"Old"
)
2022年新老客户对比2021年销量增长贡献,如下:
拓展
在VAR过程表中生成总客户表、老客户表,然后使用EXCEPT函数(可以理解表之间做减法)生成新客户表,最后使用新客户表去给客户数、销量等计算做筛选条件也是书写新客户相关度量值的方法。