新客户和回头客计算
相关表
关系图
(一) 概念定义
- 新客户:在发生交易时,之前未有过交易。
- 回头客:在发生交易时,之前有过交易。
(二) 添加列辅助写法
我们可以直接在数据表中直接添加辅助列进行计算。
1. 通过添加列区分新老客户
代码语言:javascript复制If(Countrows(Filter('数据表','数据表'[客户]=Earlier('数据表'[客户]) &&
'数据表'[时间]<Earlier('数据表'[时间])))=Blank(),
"新客户",
"老客户")
2. 通过度量计算新老客户数
代码语言:javascript复制新客户数:=Calculate(DistinctCount('数据表'[客户]),'数据表'[新老客户]="新客户")
老客户数:=Calculate(DistinctCount('数据表'[客户]),'数据表'[新老客户]="老客户")
注意:这里的老客户数,只能在维度筛选中无重复的情况下才能使用。例如同一个月既是新客户,又是老客户,这个度量的老客户数就会出现多计算的现象。
所以我们可以使用总客户数-新客户数来表示老客户数。
代码语言:javascript复制总客户数:=DistinctCount('数据表'[客户])
老客户数_减法:=[总客户数]-[新客户数]
(三) 交叉表直接通过度量书写
我们知道之前的有分享过共享多端的1端如何进行筛选计算,这我们也可以用这种方式来计算新老客户。
1. 计算购买客户数
代码语言:javascript复制购买客户数:= Calculate(CountRows(Filter('客户表',
Calculate(CountRows('数据表')>0))
)
)
2. 计算未购买客户数
只需要把参数改为=0即可计算未购买的客户数。
代码语言:javascript复制未购买客户数:= Calculate(CountRows(Filter('客户表',
Calculate(CountRows('数据表')=0))
)
)
3. 计算之前未购买的客户数
增加一个时间条件,可以计算出之前未购买的客户数。
代码语言:javascript复制之前未购买客户数:=Calculate(CountRows('客户表'),
Filter('客户表',
Calculate(Countrows('数据表'),
Filter(All('数据表'[时间]),'数据表'[时间]<Min('数据表'[时间]))
)=0
)
)
4. 计算当期新客户数
把2个条件合并,本次购买了,之前未购买的客户作为新客户数。
代码语言:javascript复制当期新客户数:=Calculate(CountRows('客户表'),
Filter('客户表',
Calculate(CountRows('数据表'))>0 &&//当期成交客户
Calculate(Countrows('数据表'), //之前未成交的客户
//在进行时间比较的同时,把时间筛选相关的维度都忽略
Filter(All('数据表'[时间]),
'数据表'[时间]<Min('数据表'[时间])
)
)=0
)
)
5. 计算当期新客户数简化写法
当然我们还可以进行一下简化
代码语言:javascript复制当期新客户数_简化:=Calculate(CountRows('客户表'),
Filter('客户表',
[购买客户数] && [之前未购买客户数]
)
)
通过2个之前计算出的度量值去筛选又是购买客户,又是之前未购买的客户就是我们的新客户,然后进行计算。
6. 计算老客户数
当然后面的老客户我们也是可以通过减法来进行计算。最终效果
我们可以注意下,如果把7月按月份显示,减法和直接算的差异就体现出来了,包括总计这里也是。
如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。