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