PowerBI 实现客户同期群分析及可视化

2021-04-16 14:37:10 浏览数 (1)

同期群,在用户(客户)分析中是一个很重要的模式。通过在一段时间后逐渐递减的留存率只到稳定来判断两件事:

  1. 客户资产沉淀的效率,保有速度
  2. 客户资产最终的转化,保有数量

同期群矩阵

如图所示:

该图反应了在某年的任意月份新增的客户在随后每个月的留存率,它反应了一种流失后的存量客户,这里关心的并不是每个月新增的绝对数量,而是留存的性能。

同期群留存曲线

为了更直观地反应每个同期群的变化,绘制成曲线,则有:

这可以快速看出:

  • 首月的运营效能在:15% 到 30% 左右。
  • 一年后留存率稳定在:5% 到 15% 左右。
  • 随时间发展的运营成效并未明显提升。

同期群留存丝带图

若要反应月份之间的超越情况,则可以使用 Power BI 的原生丝带图来显示:

可以看出:

  • 1 月新增的客户在次月有最高的留存。
  • 经过多个月的运营改进并没有显著改善。
  • 随着时间的推移,各月是如何交错变化的。

同期群沉淀堆积图

如果我们将同期群和流失时间的 X Y 轴交换位置,则可以得到:

这样就更加清楚地反应了沉淀效应。

DAX 实现

通过以下:

  • 一个计算表构建同期群
  • 一个度量值计算留存
  • 一个度量值计算留存率

即可实现。

实现同期群的流失区间

代码语言:javascript复制
CRM.SamePeriodGroup = 
ADDCOLUMNS(
    SELECTCOLUMNS( GENERATESERIES( 0 , 11 ) , "Number" , [Value] ) ,
    "Name" , SWITCH( [Number] , 0 , "本月新增" , [Number] & "月后" )
)

实现留存

代码语言:javascript复制
CRM.User.Keep.ByPeriod.1Month = 
VAR vUsersNew = 
    FILTER( 
        VALUES( 'Order'[CustomerID] ) , 
        CALCULATE( MIN( 'Order'[OrderDate] ) , ALL( 'Calendar' ) ) >= MIN( 'Calendar'[Date] )
    )
VAR vPeriodNumber = SELECTEDVALUE( 'CRM.SamePeriodGroup'[Number] )
RETURN SWITCH( vPeriodNumber ,
    0 , COUNTROWS( vUsersNew ) ,
    VAR vDateStart = EOMONTH( MAX( 'Calendar'[Date] ) , -1   vPeriodNumber )
    VAR vDateEnd   = EOMONTH( vDateStart , 1 )
    VAR vUsersView = CALCULATETABLE( VALUES( 'Order'[CustomerID] ) , 'Calendar'[Date] > vDateStart , 'Calendar'[Date] <= vDateEnd )
    RETURN COUNTROWS( INTERSECT( vUsersNew , vUsersView ) )
)

实现留存率

代码语言:javascript复制
CRM.User.Keep%.ByPeriod.Month = 
VAR vUsersNew = 
    FILTER( 
        VALUES( 'Order'[CustomerID] ) , 
        CALCULATE( MIN( 'Order'[OrderDate] ) , ALL( 'Calendar' ) ) >= MIN( 'Calendar'[Date] )
    )
VAR vPeriodNumber = SELECTEDVALUE( 'CRM.SamePeriodGroup'[Number] )
RETURN SWITCH( vPeriodNumber ,
    0 , 1 ,
    VAR vDateStart = EOMONTH( MAX( 'Calendar'[Date] ) , -1   vPeriodNumber )
    VAR vDateEnd   = EOMONTH( vDateStart , 1 )
    VAR vUsersView = CALCULATETABLE( VALUES( 'Order'[CustomerID] ) , 'Calendar'[Date] > vDateStart , 'Calendar'[Date] <= vDateEnd )
    RETURN COUNTROWS( INTERSECT( vUsersNew , vUsersView ) ) / COUNTROWS( vUsersNew )
)

总结

以上 DAX 可以直接用于实际,稍加参数修改即可。我们将在原文增设隶属于一个主题板块 CRM 的不断讨论,欢迎阅读原文。我们将做一个关于CRM高阶分享的专题,先发起预定,可以私信联系。(集全BI真经将赠送该隐藏高级专题)

在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。

让数据真正成为你的力量

Create value through simple and easy with fun by PowerBI

0 人点赞