前文
下面简称D公司, D公司经营电子宾果、电子BC、体育BC、特色游戏及扑克在内的多元化业务,随着业务的扩展,游戏地区将覆盖东南亚、未来将辐身南美州一带的国家。
当前目前的日注单量为 10亿/天,预计明年将达到 50亿/天。行为数据和埋点事件量目前为 20亿/天,期望增长至 80亿/天。
要做到这一点,必须要做到大量的用户增加和高质量的转换,提高用户的留存率和付费率,增用用户的活跃度,促使用户快速进行转换。
关系型数据可以做这个事,过去的用户数据分析用的是RFM模型,用来衡量客户价值和创收能力,对不同价值的客户使用不同的运营策略,把公司有限的资源发挥到最大的效果,实现精细化运营。
- R(Recency):最近一次消费时间与截止时间的间隔。通常情况下,最近一次消费时间的间隔越短,客户对商品或服务最有可能感兴趣。
- F(Frequency):客户在某段时间内所消费的次数。消费频次越高的客户也是满意度越高的客户,其忠诚度越高,客户价值越大。
- M(Monetary):客户在某段时间内所消费的金额。消费金额越大的客户,消费能力自然也越大。
用户分类 | 最近一次消费时间间隔(R) | 消费频率(F) | 消费金额(M) |
---|---|---|---|
重要价值用户 | 高 | 高 | 高 |
重要发展用户 | 高 | 低 | 高 |
重要保持用户 | 低 | 高 | 高 |
重要挽留用户 | 低 | 低 | 高 |
一般价值用户 | 高 | 高 | 低 |
一般发展用户 | 高 | 低 | 低 |
一般保持用户 | 低 | 高 | 低 |
一般挽留用户 | 低 | 低 | 低 |
基于考虑使用时序数据库,TDengines是一款国产时序数据库,通过TD实现时序数据建模,以时间点做为ID打通数据。
建模需求
- 最小单位精确到秒,目的当前用户生命的周期阶段的权重
- 最小单位精确到秒,每一次用户的投注数额及相关行为状态变化。
- 最小单位精确到秒,反映出用户的创建、转换、销毁的基本属 性
- 最小单位精确到分,反映用户的投注和整体状态变化
- 最小单位精确到分,反映用户行为和注单的趋势
- 最小单位精确到分,反映用户注单与活动紧密趋势
- 最小单位精确到时,从中洞悉用户与社区、游戏的联络获取能力。
- 最小单位精确到时,获取用户在每个小时的变化状况
- 最小单位精确到时,获取用户的行动分析结果。
- 最小单位精确到天,今天的数据变化改进相对昨天差异变化
- 最小单位精确到天, 各个游戏厅的消费以及存款
- 最小单位精确到天,游戏账号、注单号、下注时间、下注金额、派奖金额、输赢面。
原来关系表
基本属性
juese_num | 角色数量 |
---|---|
play_time | 游戏时长 |
character_level | 最高职业等级 |
character_var | 角色最大职业等级方差 |
chongwu_flag | 宠物标识 |
create_day_now | 角色创建时间距今天数 |
balance | 余额 |
fd_reg | 当天注册当天首存用户 |
fd_reg7day | 7天内注册当天首存用户 |
fd_reg30day | 30天注册当天首存用户 |
dab | 投注人数 |
new_dab | 当天首投用户 |
existing_dab | 当天复投用户 |
登录属性
login_cnt | 累计登录次数 |
---|---|
login_cnt_wk1 | 上周登录次数 |
login_cnt_wk2 | 上上周登录次数 |
login_day | 累计登录次数 |
login_day_wk1 | 上周登录次数 |
login_day_wk2 | 上上周登录次数 |
login_first_day_now | 首次登录距今天数 |
login_last_day_now | 末次登录距今天数 |
login_times | 累计登录时长 |
消耗属性
con_amt | 累计消耗金额 |
---|---|
con_amt_wk1 | 上周消耗金额 |
con_amt_wk2 | 上上周消耗金额 |
con_cnt | 累计消耗次数 |
con_cnt_wk1 | 上周消耗次数 |
con_cnt_wk2 | 上上周消耗次数 |
con_first_day_now | 首次消耗距今天数 |
con_last_day_now | 末次消耗距今天数 |
充值属性
dep_amt | 累计充值金额 |
---|---|
dep_amt_wk1 | 上周充值金额 |
dep_amt_wk2 | 上上周充值金额 |
dep_cnt | 累计充值金额 |
dep_cnt_wk1 | 上周充值金额 |
dep_cnt_wk2 | 上上周充值金额 |
dep_first_day_now | 首次充值距今天数 |
dep_last_day_now | 末次充值距今天数 |
金币属性
coin_amt | 累计获得金币过 |
---|---|
coin_amt_wk1 | 上周数获得金币数 |
coin_amt_wk2 | 上上周获得金币数 |
死亡
death_cnt | 累计死亡次数 |
---|---|
death_cnt_wk1 | 上周死亡次数 |
death_cnt_wk1 | 上上周死亡次数 |
经验属性
exp_get_total | 累计获得经验值 |
---|---|
exp_get_wk1 | 上周获得经验值 |
exp_get_wk2 | 上上周获得经验值 |
好友属性
friend_by_num | 活跃好友数 |
---|---|
friend_by_ratio | 活跃好友占比 |
friend_num | 好友数 |
副本属性
fuben_cnt_wk1 | 上周副本次数 |
---|---|
fuben_cnt_wk2 | 上上周副本次数 |
讨伐属性
monster_cnt | 累计讨伐战次数 |
---|---|
monster_cnt_wk1 | 上周讨伐战次数 |
monster_cnt_wk2 | 上上周讨伐战次数 |
monster_exp | 累计讨伐战次数 |
monster_exp_wk1 | 上周讨伐战次数 |
monster_exp_wk2 | 上上周讨伐战次数 |
monster_seal | 讨伐战累计获得军票数量 |
monster_seal_wk1 | 上周讨伐战获得军票数量 |
monster_seal_wk2 | 上上周讨伐战获得军票数量 |
任务属性
renwu_complete | 累计完成任务次数 |
---|---|
renwu_complete_wk1 | 上周完成任务次数 |
renwu_complete_wk2 | 上上周完成任务次数 |
注单属性
login_name | 登录名称 |
---|---|
bet_site_id | 站点 |
total_bel_amount | 存储次数 |
total_ggr | 总输赢 |
turnover_range | 投注额 |
deposit_times | 存款次数 |
deposit_amount | 存款金额 |
withdraw_times | 取款次数 |
withdraw_amount | 取款金额 |
betamount | 总存款 |
ggr | ggr |
TDengine建模
时序建模是 时间+名称+指标 = 数值 ,时间代表粗细粒度,通过秒、分、时、日控制业务属性。
-
时序秒用于用户行为数据、登录属性、当时注单属性、任务属性
-
时序分采用用户域数据、登录属性、当时注单属性、任务属性等多个属性,
-
时序时主要用于体察用户的消费变化、活动趋势。
-
时序天从宏观的层面来看,重视注单属性、交易属性、活动属性、活跃属性的交互,洞察客户内部的机会转换
部分建模实例
taos> create table user_basic(tt timestamp,juese_num varchar(20),play_time varchar(20),character_level varchar(50),charac
ter_var varchar(50),chongwu_flag varchar(50),create_day_now varchar(50),fd_reg varchar(50),fd_reg7day varchar(50),dab v
archar(50),new_dab varchar(50),existing_dab varchar(50));
Create OK, 0 row(s) affected (0.002534s)
taos> create table trans_summary(tt timestamp, login_name varchar(30), bet_site_id int,total_bel_amount int,total_ggr
int, turnover_range float,deposit_times int,deposit_amount float,withdraw_times int,withdraw_amount float,betamount float,ggr float);
Create OK, 0 row(s) affected (0.004061s)
taos> create table recharge(tt timestamp, dep_amt varchar(30), dep_amt_wk1 int,dep_amt_wk2 int,dep_cnt int,dep_cnt_wk1 float,dep_cnt_wk2 int,dep_first_day_now int,dep_last_day_now int);
Create OK, 0 row(s) affected (0.004376s)
taos> create table fight(tt timestamp, monster_cnt varchar(30), monster_cnt_wk1 int,monster_cnt_wk2 int,monster_exp int
,monster_exp_wk1 int,dep_cnt_wk2 int,monster_seal int,monster_seal_wk1 int,monster_seal_wk2 int);
Create OK, 0 row(s) affected (0.002640s)
taos> create table transact(t1 timestamp, login_name varchar(30),bet_site_id varchar(30),total_bel_amount int,total_ggr int,turnover_range double,deposit_times int,deposit_amount double,withdraw_times int,withdraw_amount float,betamount float,ggr float );
Create OK, 0 row(s) affected (0.002162s)
测试总结
- 作为MySQL使用者,TDengine的使用风格接近MySQL,建库建表使用较容易上手
- 在时序秒的业务场景里面,针对注单10亿的数据,时序建模应用较佳 ,相对关系型数据库好一点。
- 从数据的浏览视角来看,时序排列更加轻易阅读,方便数据运营人员浏览查看。
- 时序相对于RFM模型,技术本质等于重新组装成了一个大宽表,涵盖更丰富的数据。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。