助力游戏运营数据分析

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 本体验通过多产品组合构建了游戏数据运营分析平台,提供全面的游戏运营指标分析功能,并有效的分析渠道效果。更加有效地掌握游戏运营状态,也可充分利用数据分析的结果改进产品体验,提高游戏收益。

助力游戏运营数据分析

1. 开通RDS服务

登录RDS控制台,购买RDS实例。

创建账号。

创建数据库。本案例创建的RDS数据库为gamedb。

登录数据库。如果是首次登录,需要设置白名单。

创建用于存储游戏业务中用户登录、注册等数据信息表。本案例创建表login_log。

CREATE TABLE `login_log` (
  `id` bigint(22) unsigned NOT NULL AUTO_INCREMENT,
  `uid` varchar(20) NOT NULL,
  `channel_id` int(11) NOT NULL,
  `channel_uid` varchar(50) NOT NULL,
  `timestamp` bigint(22) NOT NULL,
  `type` int(11) NOT NULL,
  `platform` tinyint(2) NOT NULL DEFAULT '1',
  `deviceId` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_timestamp` (`timestamp`),
  KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

模拟生成写入表的数据。可多次执行以下SQL语句。

drop procedure if exists tpInsert;
DELIMITER //
create procedure tpInsert()
begin
declare i int ;
set i=0;
-- -
while(i< rand() * 100)
do
insert into `login_log`(`uid`, `channel_id`, `channel_uid`, `timestamp`, `type`)
select substr(md5(rand()),1,20) as `uid`, 
case 
  when floor(rand() * 1000)=999 then 6
  when floor(rand() * 10)>=8 then 5
  else floor(rand() * 5) end as `channel_id` ,
substr(md5(rand()),1,48) as `channel_uid`,
unix_timestamp(DATE_SUB(now(),INTERVAL rand() * 60 DAY)) as `timestamp` ,
floor(rand() * 10) as `type` ;
set i=i+1;
select case 
 when date_format(now(), '%H')<=6 then sleep(rand() * 5)
 when date_format(now(), '%H')<=12 then sleep(rand() * 9)
 when date_format(now(), '%H')<=18 then sleep(rand() * 7) 
 when date_format(now(), '%H')<=21 then sleep(rand() * 3) 
 when date_format(now(), '%H')<=23 then sleep(rand() * 1) 
end ;
END while;
-- -
end
//
DELIMITER ;
-- 设置后台任务
drop event if exists second_test_event;
create event second_test_event
on schedule every 1 second
on completion preserve disable
do call tpInsert();
-- 开启后台任务
alter event second_test_event enable;
# 验证数据写入正常
select count(*) from login_log;

创建用于存储游戏业务中玩家购买道具、皮肤等相关的支付信息数据。本案例创建表pay_order。

CREATE TABLE `pay_order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `order_id` varchar(255) NOT NULL,
  `app_id` int(11) NOT NULL,
  `channel_id` int(11) NOT NULL,
  `channel_uid` varchar(255) NOT NULL,
  `product_id` varchar(255) NOT NULL,
  `product_name` varchar(255) NOT NULL,
  `uid` varchar(20) NOT NULL,
  `amount` int(11) NOT NULL ,
  `status` tinyint(4) NOT NULL DEFAULT '0',
  `pay_time` bigint(20) DEFAULT NULL,
  `create_time` bigint(20) NOT NULL,
  `notify_time` bigint(20) DEFAULT NULL,
  `deviceId` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

2. 开通AnalyticDB服务

购买AnalyticDB MySQL版实例。

创建数据库账号。

单击进入用于本案例的实例。单击登录数据库。

创建日志数据表。本案例创建表为domain_log。建表语句如下:

Create Table `domain_log` (
 `pkid` varchar COMMENT '',
 `uid` varchar COMMENT '',
 `ts` bigint COMMENT '',
 `channel_id` tinyint COMMENT '',
 `message` varchar COMMENT '',
 `message_body` varchar COMMENT '',
 `ts_date` bigint COMMENT '',
 `uxapx` int COMMENT '',
 `uylvly` int COMMENT '',
 `uzexpz` bigint COMMENT '',
 `uagolda` bigint COMMENT '',
 `ubcrysab` int COMMENT '',
 `uccrysic` int COMMENT '',
 `uddshd` bigint COMMENT '',
 `uesopte` bigint COMMENT '',
 `ufprogf` bigint COMMENT '',
 `ugmsprogg` varchar COMMENT '',
 `umplat` tinyint COMMENT '',
 `ummigm` bigint COMMENT '',
 `uimcidi` varchar COMMENT '',
 `version` bigint COMMENT '',
 primary key (pkid,ts_date)
) DISTRIBUTE BY HASH(`pkid`,`ts_date`) INDEX_ALL='Y' COMMENT=''''
PARTITION BY VALUE(date_format(ts_date, '%Y%m%d')) LIFECYCLE 365 
STORAGE_POLICY='MIXED' HOT_PARTITION_COUNT=90;

3. 配置数据同步链路

购买DTS实例。创建同步作业。

配置DTS数据同步链路。源实例选择MySQL,目标实例选择AnalyticDB MySQL版。

选择用于本案例的待同步表,如下图:

定义在AnalyticDB中表的分布列以及主键列,并且启动数据同步,如下图所示:

说明:游戏业务里面往往所有的分析维度均以玩家为维度,故为了保证在数据库里面分析查询的高效性,一般可以选择玩家ID为分布键。

启动DTS预检查,预检查通过后正式开始数据实时同步,如下图所示:

4. 部署ECS-SLS数据采集

登录SLS控制台。创建日志服务Project,如下图所示:

创建日志服务Logstore,如下图所示:

配置数据接入,这次以游戏日志场景最常见的JSON格式为例,如下图所示:

创建机器组,进行JSON日志数据采集,安装Logtail采集客户端,如下图所示:

单击并且安装Logtail客户端,并且确保正常运行,如下图所示:

勾选本案例所用的ECS实例,单击安装,然后确认安装完毕。

往往产生日志数据的ECS服务器有多个,常常会把它加入到一个组内进行管理,创建机器组,如下图所示:

添加机器组,如下图所示:

添加机器组后,一定要检查一下Logtail心跳是否正常,如下图所示:

配置logtail进行日志数据采集,这里主要是需要正确配置日志文件的路径名称,如下图所示:

查询分析配置,这一步是SLS自身的分析功能,本demo用不到,但是SLS规定必须要至少选择一种索引,默认下一步即可,如下图所示:

ECS-SLS数据采集配置接入完成,如下图所示:

5. 部署SLS-AnalyticDB数据投递

登录SLS控制台。单击用于本案例的Project。

在数据处理标签页上选择数据导出到AnalyticDB,单击右侧+,选择“直接投递”即可,如下图所示:

说明:如果您是首次将日志数据投递到AnalyticDB MySQL,需要为AnalyticDB MySQL授权,允许AnalyticDB MySQL访问日志服务。

1) 单击AnalyticDB后的+,系统自动提示您进行授权操作,单击权限。

2) 在云资源访问授权页面,单击同意授权,将角色AliyunAnalyticDBAccessingLogRole授予AnalyticDB MySQL。

配置AnalyticDB投递选项,如下图所示:

各参数说明,详见帮助文档:https://help.aliyun.com/document_detail/149689.html

完成SLS-AnalyticDB投递配置,如下图所示:

6. 游戏数据运营分析举例

本案例通过QuickBI展示通过AnalyticDB MySQL数据源分析的一段时间内的用户活跃趋势。

访问QuickBI控制台

创建数据源。

选择AnalyticDB for MySQL 3.0。

录入数据库信息:

创建成功后,可以看到数据源的情况:

创建数据集。

输入数据集名字并保存数据集:

创建仪表板。

选择数据集并设定维度/度量:

发布为仪表板,并设定水平轴和垂直轴描述。

查看发布结果。

实验链接:https://developer.aliyun.com/adc/scenario/24ec864e6bff46bcb89b72a14c484259

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
9月前
|
机器学习/深度学习 数据采集 数据可视化
【文末福利】巧用Chat GPT快速提升职场能力:数据分析与新媒体运营
【文末福利】巧用Chat GPT快速提升职场能力:数据分析与新媒体运营
175 0
|
10月前
|
SQL 关系型数据库 MySQL
边锋 x AnalyticDB MySQL:打造一站式游戏数据分析平台
杭州边锋网络技术有限公司是国内领先的休闲游戏开发商、运营商、发行商。20余年来,边锋网络一直是中国棋牌游戏的开拓者和变革者。  边锋网络市场覆盖20余个省份,注册用户过亿,月活跃用户上千万,是国家级重点软件企业(一类)。公司大数据分析系统"反应堆"目前支持着包括雀神广东麻将、边锋斗地主、蜀山四川麻将、功夫川麻等10余款休闲游戏产品;
|
数据挖掘 定位技术 Python
用对线阶段数据分析和预测《英雄联盟》的游戏结果
用对线阶段数据分析和预测《英雄联盟》的游戏结果
454 0
用对线阶段数据分析和预测《英雄联盟》的游戏结果
|
SQL 机器学习/深度学习 分布式计算
基于阿里云平台进行游戏数据分析(三)
在本项目中,我们将基于阿里云平台进行游戏数据分析。本文是这个项目介绍的第三部分,主要介绍对游戏数据进行相关性分析和对比分析,并得出结论。
200 0
基于阿里云平台进行游戏数据分析(三)
|
机器学习/深度学习 SQL 算法
基于阿里云平台进行游戏数据分析(二)
在本项目中,我们将基于阿里云平台进行游戏数据分析。本文是这个项目介绍的第二部分,主要介绍绘制散点图,建立回归模型,检测变量之间的线性关系。
324 0
基于阿里云平台进行游戏数据分析(二)
|
机器学习/深度学习 数据采集 SQL
基于阿里云平台进行游戏数据分析(一)
在本项目中,我们将基于阿里云平台进行游戏数据分析。本文是这个项目介绍的第一部分,主要介绍项目的背景,数据导入与预处理等环节。
337 0
基于阿里云平台进行游戏数据分析(一)
|
6天前
|
机器学习/深度学习 监控 算法
Python数据分析与机器学习在金融风控中的应用
Python数据分析与机器学习在金融风控中的应用
31 12
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
16 4
|
3天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
微软在 UserVoice 上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将 Python 作为Excel 的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015 年这个点⼦发布以来并没有什么实质性进展,但在 2020 年年末,Python 之⽗ Guido van Rossum 发布推⽂称“退休太无聊了”,他将会加入微软。此事令 Excel ⽤户重燃希望。我不知道他的举动是否影响了 Excel 和 Python 的集成,但我清楚的是,为何⼈们迫切需要结合 Excel 和 Python 的⼒量,⽽你⼜应当如何从今天开始将两者结合起来。总之,这就是本
|
6天前
|
数据采集 机器学习/深度学习 数据挖掘
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战