微信H5传播监测说明文档

一 总体说明:

H5传播监测是通过在H5页面中植入监测代码,监测一个H5页面传播效果.

二 项目地址:

http://192.168.9.201/usvn/svn/Crawler/trunk/Prime_Crawler_StatisticsService
目前发布在:
192.168.8.75:/data/server/tomcats/tomcat7_8080_StatisticsService/

三 任务创建说明:

1. 基本监测(必选)

在需要监测的页面的所有script标签之前添加:

<script type="text/javascript"
  src="http://statistics.prime-research.com.cn/StatisticsService/jsp/report.jsp?prTaskId=TASK_ID">
</script>
  • TASK_ID由创建任务后获取, 但目前没有实现生成TASK_ID功能.
  • 可优化:
    • 把src中的StatisticsService去掉
    • 重命名report.jsp,如改为pre.jsp, monitor.jsp, init.jsp等.
  • 完整示例:
    <html>
      <head>
          <title>Base Monitor Demo</title>
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          <script type="text/javascript" 
          src="http://statistics.prime-research.com.cn/StatisticsService/jsp/report.jsp?prTaskId=sometaskid">
          </script>
      </head>
      <body>
          <h3>Prime H5 Base Monitor Demo</h3>
          <br>
          Please right click to view page source.
      </body>
    </html>
    

2. 按键监测(可选)

在添加基本监测代码的基础上,如果想监测H5页面中按钮点击效果,请添加如下代码:

PR.sendBtnName("监测按钮"); //这里填写你对按钮的命名
  • 完整示例:
    <html>
      <head>
          <title>Base Monitor Demo</title>
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          <script type="text/javascript" 
          src="http://statistics.prime-research.com.cn/StatisticsService/jsp/report.jsp?prTaskId=sometaskid">
          </script>
      </head>
      <body>
          <h3>Prime H5 Base Monitor Demo</h3>
          <br>
          <button id="myBtn">TestButton</button>
          <br>
          <br>
          Please right click to view page source.    
          <script type="text/javascript">
              var myBtn = document.getElementById( "myBtn" );
              myBtn.onclick = function ( ){
              PR.sendBtnName("监测按钮"); //这里填写你对按钮的命名
        }
      </script>
      </body>
    </html>
    

3.微信传播监测(可选)

在添加基本监测代码的基础上,如果想监测H5在微信中传播的数据,请添加如下代码:

3.1 H5页面接入微信JS-SDK:

微信JS-SDK官方说明文档

3.2 配置内容分享接口(请参照微信JS-SDK官方说明文档)
wx.config({
    debug: , // 必填,是否开启debug模式
    appId: , // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见微信JS-SDK官方说明文档附录1
    jsApiList: [
       'onMenuShareTimeline',
       'onMenuShareAppMessage',
       'onMenuShareQZone',
       'onMenuShareQQ',
       'onMenuShareWeibo' 
    ]
});
3.3 使用内容分享接口(请参照微信JS-SDK官方说明文档)
wx.ready(function () {
    wx.onMenuShareAppMessage({
        title: share_title,
        desc: share_desc,
        link : PR.linkChange(share_link),
        imgUrl: share_img,
        success : function () {
            PR.sendShare("appmessage");
        }
    });
    wx.onMenuShareTimeline({
        title: share_title,
        desc: share_desc,
        link : PR.linkChange(share_link),
        imgUrl: share_img,
        success : function () {
            PR.sendShare("timeline");
        }
    });

    wx.onMenuShareQZone({
        title: share_title,
        desc: share_desc,
        link : PR.linkChange(share_link),
        imgUrl: share_img,
        success : function (res) {
            PR.sendShare("qzone");
        }
    });
    wx.onMenuShareQQ({
        title: share_title,
        desc: share_desc,
        link : PR.linkChange(share_link),
        imgUrl: share_img,
        success : function () {
            PR.sendShare("qq");
        }
    });
    wx.onMenuShareWeibo({
        title: share_title,
        desc: share_desc,
        link : PR.linkChange(share_link),
        imgUrl: share_img,
        success : function () {
            PR.sendShare("weibo");
        }
    });
  • 完整示例: 微信JS-SDK需要在服务端实现, 无法给出示例, 请参考微信JS-SDK官方说明文档.

    四 数据库及表

  • 数据库 :
    192.168.9.221:3306/PRIME_STATISTICS
  • 数据表 :
    1. ACCESS_INFO 访问信息表
    2. CLIENT_INFO 客户端信息表
    3. LEAVE_INFO 离开信息表
    4. SHARE_INFO 分享信息表
    5. USER_INFO 微信用户信息表
  • 具体表结构请请直接到数据库查看

    五 与数说相关图表结合

    PV、UV、分享走势

  • PV, UV, 分享在数据库中中的存储说明:
    • 在ACCESS_INFO表中, 一条记录为一个PV
    • 在ACCESS_INFO表中, 不同的PR_CK_ID确定不同的User
    • 在SHARE_INFO表中, 一条记录为一次分享
  • PV SQL:

    SELECT COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID'
    
    • 如需要查询指定日期, 指定文章...等的PV, 请在SQL中加上相应的查询条件 AND DAY_ID=? AND ARTICLE_URL=? AND ...
  • UV SQL:

    SELECT COUNT(DISTINCT PR_CK_ID) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID'
    OR:
    SELECT PR_CK_ID,COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' GROUP BY PR_CK_ID
    
    • 如需要查询指定日期, 指定文章...等的UV, 请在SQL中加上相应的查询条件 AND DAY_ID=? AND ARTICLE_URL=? AND ...
  • 分享数 SQL:
    SELECT count(*) FROM SHARE_INFO WHERE PR_TASK_ID='SOME_TASK_ID'
    
    • 如需要查询指定日期, 指定文章...等的分享数, 请在SQL中加上相应的查询条件 AND DAY_ID=? AND ARTICLE_URL=? AND ...

传播层级

  1. 传播层级说明
    • 实现了微信传播监测才有传播层级
    • 传播层级在数据库在的字段为PR_LEVEL
    • 数据库中默认的初始传播层级为0
  2. 传播层级SQL
    SELECT COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND PR_LEVEL=SOME_PR_LEVEL
    OR:
    SELECT PR_LEVEL,COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' GROUP BY PR_LEVEL
    

分页详情

  1. 分页详情说明:
    • 监测系统会识别当前文章的url并记录在ACCESS_INFO表的ARTICLE_URL字段中
  2. 分页详情 PV SQL:
    SELECT COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND ARTICLE_URL=SOME_ARTICLE_URL
    OR:
    SELECT ARTICLE_URL,COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' GROUP BY ARTICLE_URL
    
  3. 分页详情 UV SQL:
    SELECT COUNT(DISTINCT PR_CK_ID) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND ARTICLE_URL=SOME_ARTICLE_URL
    
  4. 分页详情 IP数 SQL:

    • IP记录在CLIENT_INFO, 现在看起来这样不方便查询, 后续考虑把CLIENT_INFO表的内容并入ACCESS_INFO表.
    • 把CLIENT_INFO表与ACCESS_INFO表对应起来的字段是VISIT_ID, VISIT_ID是一次访问唯一标识.
    SELECT COUNT(DISTINCT ACCESS_INFO.PR_CK_ID) FROM ACCESS_INFO INNER JOIN CLIENT_INFO ON ACCESS_INFO.VISIT_ID=CLIENT_INFO.VISIT_ID WHERE ACCESS_INFO.PR_TASK_ID='SOME_TASK_ID' AND ACCESS_INFO.ARTICLE_URL='SOME_ARTICLE_URL'
    
  5. 分页详情 分享数 SQL:
    SELECT count(*) FROM SHARE_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND ARTICLE_URL='SOME_ARTICLE_URL'
    OR:
    SELECT COUNT(SHARE_INFO.ID) FROM ACCESS_INFO INNER JOIN SHARE_INFO ON ACCESS_INFO.VISIT_ID=SHARE_INFO.VISIT_ID WHERE ACCESS_INFO.PR_TASK_ID='SOME_TASK_ID' AND ACCESS_INFO.ARTICLE_URL='SOME_ARTICLE_URL'
    
  6. 分页详情 跳出率 SQL:

    • PR_SESSION_ID说明:
      • 每一次访问都有一个PR_SESSION_ID, 如不关闭页面, 刷新,跳转到其它页面PR_SESSION_ID不变.
      • 可以根据每个PR_SESSION_ID最后一次出现时对应的文章URL确定跳出的URL
    先把跳出URL找出来:
    SELECT ARTICLE_URL FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' GROUP BY PR_SESSION_ID ORDER BY ID DESC
    再COUNT(*) 每个跳出URL
    

    停留时长分布

  7. 停留时长说明
    • 数据库中不直接记录停留时长, 而是ACCESS_INFO表中记录访问开始的时间, 在LEAVE_INFO中记录离开的时间, 两者相减得到停留时长.
  8. 停留时长分布 SQL
    SELECT a.PR_TASK_ID, a.VISIT_ID,(l.LEAVE_TIMESTAMP-a.TIMESTAMP_ID) AS stay_time FROM ACCESS_INFO a INNER JOIN LEAVE_INFO l ON a.VISIT_ID=l.VISIT_ID WHERE a.PR_TASK_ID='SOME_TASK_ID'
    

访问时间分布

  1. 访问时间分布说明
    • 页面每次被访问都会有一次记录插入ACCESS_INFO表, 并且有相应的访问时间timestamp, hourid, dayid, 等.
  2. 访问时间分布 SQL
    SELECT COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND HOUR_ID=SOME_HOUR_ID
    

PV-微信内来源

  1. PV-微信内来源说明
    • PV-微信内来源记录在ACCESS_INFO表中的FROM_TYPE字段
    • 字段取值: 1:单人对话; 2:微信群; 3:朋友圈; 4:公众号文章; 0:其它
  2. PV-微信内来源 SQL
    SELECT COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND FROM_TYPE=SOME_FROM_TYPE
    

分享去向

  1. 分享去向说明
    • 分享去向记录在SHARE_INFO表中的SHARE_TYPE字段
  2. 分享去向 SQL
    SELECT COUNT(*) FROM SHARE_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND SHARE_TYPE=SOME_SHARE_TYPE
    

微信传播图

  • 可以通过PR_CK_ID与FROM_PR_CK_ID确定传播关系,PR_CK_ID为当前用户的唯一标识, FROM_PR_CK_ID为当前文章来源用户的唯一标识.
  • 可以先确定第一个PR_CK_ID, 查看后续有没有FROM_PR_CK_ID与第一个的PR_CK_ID相同, 如果有, 则表示后续的那篇文章是第一个用户分享出来的.

关键传播用户

  • PR_CK_ID唯一确定用户.
  • 如果有授权信息, 则查看USER_INFO, 通过USER_INFO表中的PR_CK_ID与其它信息关联.

渠道投放效果

  • PV
    SELECT CHANNEL_ID,COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND CHANNEL_ID='SOME_CHANNEL_ID'
    
  • UV
    SELECT CHANNEL_ID,CLIENT_ID,COUNT(*) FROM ACCESS_INFO WHERE PR_TASK_ID='SOME_TASK_ID' AND CHANNEL_ID='SOME_CHANNEL_ID' GROUP BY CLIENT_ID
    

PV-地域分布

  • CLIENT_INFO表中的LOCATION字段为地域信息, 具体SQL语句
    SELECT CLIENT_INFO.LOCATION,COUNT(*) FROM ACCESS_INFO INNER JOIN CLIENT_INFO ON ACCESS_INFO.VISIT_ID=CLIENT_INFO.VISIT_ID WHERE ACCESS_INFO.PR_TASK_ID='SOME_TASK_ID' GROUP BY  LOCATION
    

PV-移动终端品牌分布

  • 该功能未完善
  • 移动终端品牌分布记录在CLIENT_INFO表中的PHONE_TYPE字段
  • SQL参照 PV-地域分布

用户标签

  • 该功能未实现

性别分布

SELECT SEX,COUNT(*) FROM USER_INFO GROUP BY SEX

PV-APP分布

  • PV-APP分布记录在CLIENT_INFO表中的APP_TYPE字段
  • SQL参照 PV-地域分布

PV-操作系统分布

  • PV-操作系统分布记录在CLIENT_INFO表中的OS字段
  • SQL参照 PV-地域分布

六 用户授权相关说明

results matching ""

    No results matching ""