Linux Linux 实战应用--数据分析与处理

刘津嘉 · 2015年12月22日 · 最后由 zeng 回复于 2015年12月22日 · 2431 次阅读

在工作中,我们越来越多的发觉到数据的重要性,数据作为可以引导项目或团队的一个重要方向与指标,那么通常应该如何获取数据与处理数据呢?本次分享内容,是针对于行为数据的分析与运算,进行的实例分享.希望大家可以各有收获

Client

  • 可参照 Google Analytics 、FaceBook 的统计与分析工具
  • 客户端的接口调用来做的统计,主要是事件流、时间、次数等

Server

  • 数据来源于在程序内部的接口调用时的 log 打印,类似传统的 DebugLog,我们通常用这部分的数据来作为行为数据的源数据 (通常情况下, 每当客户端与服务器发生一次交互,那么就会记录下一条 log)

数据的处理

一般,我们会通过很多的方法去处理数据 R、Python、Sql 语句等,今天我们用 shell 做一下简单的用户付费间隔的解析

首先,我们需要从源数据中取出你所需要的字段内容,比如 rfm 模型中付费玩家的列表 (rfm_play.txt)、rfm 模型中玩家的付费次数 (rfm_times)

我们已经拿到这 2 组现有的对我们有帮助的 list. 那么下一步就是对这三部分的数据进行运用

cat rfm-play.txt | while read line 
do                                 
    end=`grep -w $line rfm-test.txt | tail -n 1 | awk -F ' ' '{print $3}'`
    sec=`grep -w $line rfm-test.txt | tac | sed -n 2p | awk -F ' ' '{print $3}'`
done

把这两组数据记录到 rfmuniq.txt 中,来作为我们对时间戳运算的数据源
输出 $end 和 $sec 会发现, 我们回去了用户的最后一次付费和倒数第二次付费的时间戳,

既然有了两次付费的时间戳,那么, 我们就来做一下简单的数据运算,查看一下用户的两次付费间隔是多久呢?

cat rfm-play.txt | while read line 
do                                 
      end1=`grep -w $line rfmuniq.txt | awk -F ',' '{print $3}' | tac | tail -n 1`
      end2=`grep -w $line rfmuniq.txt | awk -F ',' '{print $3}' |  tail -n 1`
      echo $line "  "$((((end1-end2))/1000/60))':min'                                                                                                                     
 done      

这样,一个简单的统计用户两次付费间隔的脚本就完成了, 这个脚本中可能会用到几个知识点.

While 循环、grep、awk、sed、date 等方法,大家在熟练过程中可能需要摸索一下逻辑关系, 如果有什么问题可以在评论区留言

测试的日常工作中,linux 的常用使用方法,如果想获得更多游戏测试的相关内容,请关注 Testerhome::https://testerhome.com/

下一期,我们会加大数据量与运算量,请大家持续关注

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

谢谢分享~持续关注,希望楼主,出跟多的教程分享

谢谢楼主给的思路,这个思路也可应用于某些数据比较隐蔽,但可以从日志里拿的场景

分享的不错,顶 1 个。这块可以拆成几部分讲的哇。

思路很清晰,比较倾向通关 python 来做,实际工作中权限有限,没法真正应用

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册