不懂数据分析的 growth hacker 不是好运营。近日我想要统计我家产品 xue.cn 用户的编程自学行为的频次,且在不给技术开发部门带来任何新需求的状况下自力更生。那么,我该如何定义并统计这个数据指标呢?python
学习
这个行为。某些行为是单个事件,某些行为是多种事件的组合。mysql
xue.cn 用户的编程自学行为包括:完成某书一个章节的阅读、完成一道习题、得到一个成就、提交一次评论,完成一次心得打卡等,将来还会有更多。不过,虽然咱们有聊天室,但由于使用的是 gitter ,因此数据采集并不容易,这个行为就暂忽略。git
以上编程自学行为事件数据分布在产品数据库的多个表中。sql
经过在多个表中联合查询 user_id,事件发生日期获得每一个 user_id 有学习行为的日期数据,个人 sql 语句是这么写的:数据库
with data_study as( -- 获取有学习行为的用户名单及学习事件发生时间
select
date(created_at) as time,
user_id
from user_comment
union all
select
date(created_at) as time,
user_id
from user_activity
union all
select
date(created_at) as time,
user_id
from study_card
)
select -- 获取学习用户的学习日期数据
user_id,
min(time) -- 某天有屡次学习行为,仅取一条便可
from data_study
group by user_id,time
order by user_id
复制代码
游客体验功能是近期刚上线的。已有的学习行为数据,属于较早版本,那时用户产生学习行为的前提是至少完成一次时长兑换或小额RMB充值,因此本次我以用户首次付费的日期做为统计的基准线。编程
从日志数据筛选获取用户的首次付费日期数据,个人 sql 语句是这么写的:工具
with data as( -- 获取用户付费日期
select
user_id,
used_at as 付费日期
from
free_coupons
where
user_id is not null
union all
select
user_id,
created_at as 付费日期
from
rmb_order
where order_status = 'PAY_SUCCESS'
)
select -- 筛选付费用户的首次付费日期
user_id,
date(min(付费日期)) as reg_date
from
data
group by
user_id
复制代码
至此,有用的数据已从日志中初步筛选统计获得。接下来,用学习日期 - 首次付费日期
获得血虚行为发生于首次付费后的第N天
。其后统计:post
A可做为付费版留存率数据。B则是学习频次分布数据。学习
由于我对复杂的 sql 运算还不熟练,因此实操时把第 2 和 3 步的结果从 grafana
导出为 csv 文件,而后采用excel
,部分指标则采用 python pandas
完成演算。spa
虽然当前 xue.cn 功能已经完善不少,其实咱们是上半年刚立项,这半年多持续开发,某些学习功能在早期并未提供。因而,为了获取更可信、有效的数据,须要剔除早期批次的用户。
具体来讲,根据用户首次付费日期,按月拆分用户批次,再拆分统计学习行为数据较为完善的近期批次数据。
以上就是我完成 xue.cn 用户学习频次指标的指定与统计分析的实操过程。此次数据洞察探索,帮我发现好几处增加线索。
笔记的第四、5步对于运营、市场人员都是经常使用操做,我就不详细贴步骤或演算方式啦。而前面的第二、3步,我是经过 grafana 直接用查询语句与咱们家产品的数据库交互。以前我写过一篇 grafana 的上手笔记,它仍是至关简易的。——具体到个人本次需求来讲,是否采用 grafana 不关键,grafana 只是一种工具,关键是要能与产品数据库交互拿到原始数据。
笔记虽然解决的是编程自学行为,是我家产品为用户所提供价值的核心表现,但思路也可借鉴用于其它产品、其它行为频次的统计。若是对你有帮助或启发,那就点赞或留言告诉我,鼓励我分享更多笔记吧!