什么是超级粘性用户?
- 每天都用(买)产品或服务的人数
- 每周都用(买)产品或服务的人数
- 每月都用(买)产品或服务的人数
对于某人是不是超级粘性用户,应该怎么判断呢?
例如:
王志远,在6个月内来威尔士健身10次,请问,王志远是超级粘性用户吗?
来分析一下,假设,王志远是心血来潮,连续10天来健身了10次,然后后面不来了,这也是满足在6个月内来健身10次的。
这里定义的超级粘性用户,要满足两个条件:
- 频率,如: 6个月内来健身6次
- 分布,如: 每个月至少来一次
因此,超级粘性用户,不仅仅是一种高频的特征,更是一种习惯。
当你养成了某个习惯,那将是真正的超级粘性。
根据超级粘性用户的特点,还可以成为连续留存用户。例如:在连续的6个月内,都有访问的用户数。
超级粘性用户数的计算原理
先来看一个示意图:
很快,可以想到一个原理:
假设:
最近一周来的人员集合是 X1,
最近二周来的人员集合是 X2,
那么,两周都来的人员集合就是 X1 与 X2 的交集。
但问题很快就来了,如果是 N 期呢?
从计算上看,需要做 X1,X2,…,Xn的交集。
这导致在 DAX 无法编写出通用的公式。
另寻他路
根据对计算原理的分析,我们可以确定:
如果要满足通用性,集合算法要求我们对 N 个集合做交集运算,这种是无法在 DAX 中做出通用表达的。这就要求我们必须想出其他的方法。答案显然是可以的。
现在我们考虑另外的方法:
以该图为例:
可以这样设计:
对于每一个人,都针对当前所选日期区间,分别看过去的 N 个周期是否有访问,如果有,则通过;那么,若某人通过检查的次数恰好是 N 则表示他在最近的 N 个周期的每个周期都来过,也就说明他是我们要找的用户之一。
按照这个思路,DAX 公式如下:
代码语言:javascript复制UsersViewInContinuPeriods =
VAR _period_number = 5 // 要计算的周期数
VAR _period_list = GENERATESERIES( 0 , _period_number - 1 ) // 周期生成
VAR _user_access_table =
ADDCOLUMNS( User ,
"CheckPassTime" ,
SUMX( _period_list ,
VAR _x = [Value] // 周期x
VAR _access_times_for_x =
CALCULATE( COUNTROWS( UserAction ) , DATESINPERIOD( 'Calendar'[Date] , LASTDATE( DATEADD( 'Calendar'[Date] , - _x , MONTH ) ) , -1 , MONTH ) )
RETURN ( _access_times_for_x > 0 ) * 1
)
)
RETURN COUNTROWS( FILTER( _user_access_table , [CheckPassTime] = _period_number ) )
完毕。
业务应用
通过超级粘度用户的计算,我们可以知道一个应用到底多么深地让用户产生了习惯级的依赖,例如:
在这个案例中反应了:连续 6 个月,每个月都至少来 2 次的粘度用户趋势。
可以看到,用户粘度,尤其是超级粘度,可以帮助我们发现用户特点中的一个重要密码规律。
这个数字:5% 或是 X,就是粘度系数。
如果一家企业通过高手的运营,形成持续走高的用户粘度系数,则可以说明运营策略的有效性;反之,如果一个依靠用户粘度的系统随着时间的发展,用户的粘度在降低,那么可能有些问题需要调整了。
总结
如果你想要计算一下您自己业务的用户超级粘度,直接套用上述的 DAX 公式即可。
另外,不难发现这个计算中可能隐藏着性能问题:如果我们要对 50万 用户针对 1000万 交易记录来计算用户粘度,按照上述的公式会存在性能问题。那么,问题来了,可以优化吗?最快可以多快呢?
再另外,可以针对连续N年,季,月,周,日动态设置周期和周期数再进行计算吗?
再再另外,是否可以再加入这样的增强:连续 X 周期,且每个周期至少达到 Y 次交易,且每个周期的交易额均大于 Z,且整个 X 周期的总交易额大于 K 的用户数有多少?这是:最强VIP粘度用户数的计算。请大家自行脑补。我们会在会员专享区给出完美视频教学及解答。
最后,DAX Pro 已经发布,我们即将解锁收费订阅的业务分析包,上述计算将被通用化并纳入该内容,您不需要理解 DAX,您只需要理解你的业务即可。