前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Pivot中如何通过交叉表计算新老客户?

Power Pivot中如何通过交叉表计算新老客户?

作者头像
逍遥之
发布2020-03-24 15:59:22
1.1K0
发布2020-03-24 15:59:22
举报
文章被收录于专栏:数据技巧

新客户和回头客计算

相关表

关系图

(一) 概念定义

  • 新客户:在发生交易时,之前未有过交易。
  • 回头客:在发生交易时,之前有过交易。

(二) 添加列辅助写法

我们可以直接在数据表中直接添加辅助列进行计算。

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月按月份显示,减法和直接算的差异就体现出来了,包括总计这里也是。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新客户和回头客计算
    • (一) 概念定义
      • (二) 添加列辅助写法
        • 1. 通过添加列区分新老客户
        • 2. 通过度量计算新老客户数
      • (三) 交叉表直接通过度量书写
        • 1. 计算购买客户数
        • 2. 计算未购买客户数
        • 3. 计算之前未购买的客户数
        • 4. 计算当期新客户数
        • 5. 计算当期新客户数简化写法
        • 6. 计算老客户数
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档