首先完成基础环境与数据准备,无需付费工具即可快速落地:
docker run -d -p 3000:3000 --name metabase metabase/metabase
安装完成后访问服务器IP:3000,按照引导绑定你的业务数据库即可。
采用适配90%行业的RFM分层模型,直接套用以下规则即可:
3个核心维度各打1-5分,权重配置为:最近登录时间R(40%)、行为/消费频次F(30%)、消费/使用金额M(30%),用户总得分公式:总分=R得分0.4 + F得分0.3 + M得分0.3
直接执行以下SQL即可完成全量用户分层标签计算,可直接复制修改对应表名字段:

```sql
SELECT
u.user_id,
-- R得分计算
CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END AS r_score,
-- F得分计算(工具类替换为核心功能使用次数)
CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END AS f_score,
-- M得分计算(工具类替换为核心功能使用时长)
CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END AS m_score,
-- 总得分计算
ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1) AS total_score,
-- 打分层标签
CASE
WHEN ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)>=4.5 AND DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 AND u.total_pay >=1000 THEN '核心价值用户'
WHEN ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)>=3 AND ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)<=4.4 AND DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 AND u.total_pay >0 THEN '潜力用户'
WHEN ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)>=2 AND ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)<=2.9 AND DATEDIFF(CURRENT_DATE, u.register_time) <=30 AND DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN '活跃新用户'
WHEN ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)>=1 AND ROUND(
(CASE WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=7 THEN 5
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=14 THEN 4
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=30 THEN 3
WHEN DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 THEN 2
ELSE 1 END)0.4 +
(CASE WHEN b.pay_cnt >=10 THEN 5
WHEN b.pay_cnt >=5 THEN 4
WHEN b.pay_cnt >=2 THEN 3
WHEN b.pay_cnt >=1 THEN 2
ELSE 1 END)0.3 +
(CASE WHEN b.pay_amount >=500 THEN 5
WHEN b.pay_amount >=200 THEN 4
WHEN b.pay_amount >=100 THEN 3
WHEN b.pay_amount >=10 THEN 2
ELSE 1 END)0.3
,1)<=1.9 AND DATEDIFF(CURRENT_DATE, u.last_login_time) <=90 AND DATEDIFF(CURRENT_DATE, u.last_login_time) >30 THEN '沉睡用户'
ELSE '流失用户' END AS user_layer_tag
INTO user_layer_tag
FROM user_info u
LEFT JOIN (SELECT user_id, COUNT(order_id) AS pay_cnt, SUM(pay_amount) AS pay_amount FROM order_info WHERE pay_time >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) AND pay_status=1 GROUP BY user_id) b
ON u.user_id = b.user_id
```
将上述SQL保存为/opt/sql/user_layer_update.sql,Linux服务器执行crontab -e添加以下配置,实现每日凌晨2点自动更新分层标签:
0 2 /usr/bin/mysql -uroot -p你的数据库密码 你的数据库名称 < /opt/sql/user_layer_update.sql > /dev/null 2>&1
配置完成后执行systemctl reload crond生效,无需人工干预每日自动更新标签
所有动作均设置对照组,每组用户数量≥1000人,对照组不做特殊触达,7天后统计留存差值评估效果:
在Metabase中配置2个核心指标看板,每日监控:
迭代规则:若某分层触达动作7日留存提升低于2%,立即调整触达内容/福利力度;连续2周留存无提升,重新调整该层分层阈值
下一篇: 用户留存增长:普通人能直接落地的干货方法
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图