用户行为分析

用户行为分析接入指南

整体流程

步骤一:确认应用所属项目及管理员信息

ops:https://ops.cmft.com/info/unit

cmbook:https://cmbook.cmft.com/cmdb/#/analysis/system?page=1&type=subsystem

云管平台:https://cloud.cmft.com/#/projectManage

确认方式:

  1. Ops确认项目信息,其中一般子系统即为对应的项目信息
  2. 或在CMBook确认项目信息,其中子系统即为对应的项目信息
  3. 云管平台确认项目管理员信息

OPS:

图片

CMBook:

图片

云管平台:

image-20210914162519381

备注:如果登录过程中出现报错,如下图: image-20220427-Vbd7F7P8b3NBmOi3.png

是因为iaas安全策略,90天都没登录过的账号会被禁用,可在itsm中提单解禁,再登录即可; 附itsm提单示例: image-20220427-1idGYVVKnxT7sbYp 账号解禁过程中,如有其它疑问,可联系iaas同事 【兰慧】 或 【叶智慧】 支持。

步骤二:管理员维护团队信息

PaaS 门户:https://paas.cmft.com/paas-console/#/index

服务路径:首页 -> 项目 -> (目标项目) -> 项目成员

image-20210914162802656

注意:请严格管理普通用户和管理员权限,且余下步骤均需要管理员执行

如果找不到项目成员,可以让项目成员先登录PaaS 门户,随后管理员刷新成员管理即可看到。

步骤三:开通用户行为分析服务

服务路径:产品->应用服务->用户行为分析

或:https://paas.cmft.com/paas-doap/#/no-service

image-20210914162820135

点击【立即开通】按钮,开通服务

image-20210914162844078

步骤四:创建数据空间

建议按照应用/发布单元对应的环境来开通空间。如:招商随行生产、招商随行测试 测试空间用于开发、测试验证调试,生产空间用于上报正式数据作运营分析;

注意:创建好的空间ID就是初始化SDK需要用到的s_space_key(各自项目管理员可创建)

image-20210914170546014

image-20210914163001841

步骤五:梳理埋点需求,上传埋点方案

备注:如果是从touch迁移到新平台,需整理原来应用中已经定义的埋点和属性,然后在新平台注册属性和导入埋点方案,流程跟新接入平台一致。

a、下载平台提供的埋点【Excel示例模板】,运营人员、产品、业务方可参考模板,根据数据指标需求,梳理埋点需求;

注:【Excel示例模板】中的属性ID指的是自定义属性,需提前创建好,方可使用。

image-20210914163052601

b、创建自定义属性;

每个数据空间,平台提供100个自定义属性字段,在导入埋点方案前,如预采字段不能满足需要,需新增自定义字段,需在平台先创建并定义属性信息;详见下方截图:

image-20210914163107867

备注:因自定义属性有上限限制,建议同类业务含义的属性字段,尽量共用同一个属性字段;避免重复创建;在新增属性时,可先查询下已有字段是否能满足;

c、线下评审埋点需求,确认后,在平台上传埋点方案;

image-20210914163121257

步骤六:客户端按埋点需求方案进行开发、测试、验证

备注:如果是从touch迁移到新平台,并已在新平台创建空间、注册属性、导入方案,则只需在原来应用中重新集成SDK即可上报数据。

注意:项目id(s_project)和数据空间id(s_space_key)都是初始化SDK需要用到的必要参数

a、获取项目id和数据空间id(注意:生产和测试对应的id要避免混淆,避免造成数据污染)

image-20210914163145393

b、集成SDK,进行埋点需求开发;

c、数据验证:客户端触发事件,可在平台数据验证模块进行测试验证,详见下图:

image-20210914163158881

备注:测试环境验证ok后,发布生产时,客户端要注意替换对应的生产项目id和数据空间id;

步骤七:运营、产品、数据分析人员使用行为分析模型进行分析

接入成功后,即可使用平台提供的通用模型,创建对应的分析图表、数据看板。

image-20210914163215776

项目代码接入指引

WEB-SDK接入指引

在使用前,请先阅读统一接入规范

(以下用到touch ——> 只是引入的变量,具体叫啥名称,以自己的喜好命名)

详细步骤

安装SDK

1.两种普通方式下载(2.0.0以下的版本)+ 2.0.0以上可以用npm下载

1)请到用户行为分析平台,菜单栏点击进入数据接入管理,下载sdk

2)点击直接下载(https://paas.cmft.com/paas-doap/sdk/paas-doap-js-sdk.zip)

3)可通过npm进行安装 (2.0.0版本以上),需要设置公司制品库的源镜像

npm install ubap-web-sdk

image-20220427-5oeOpsLMH9DO3XMh

2.如果无法访问公司资源,可联系我们项目相关人员获取静态资源sdk

引入SDK,在项目中初始化

第一步:初始化

单页面项目(框架项目)

// 引入doap_ubap文件资源
例如:
npm: import touch from 'ubap-web-sdk' // 2.0.0版本以上
或者
js放在public文件下static下,在main.js中引入
import touch from '../public/static/touch'

绑定到全局windowwindow['touch'] = touch
// 推荐挂在window(也可以绑定到Vue.prototype )
// 初始化 (s_project, s_space_key字段) (用户行为分析自建;参考步骤一,二, 三,四,六)
touch.init({
  debugMode: true, // 打印console日志开关,默认是false,非必传
  s_project: 'xxxxxxxxxxxxxxxxxxxxxxxxx', //必传(上报的项目id)
  s_space_key: 'xxxxxxxxxxxxxxxxxxxxxxxxx', //必传(上报的空间key)
  touchPlatform: 0  // 默认0,非必传,设置平台(0代表web,1代表windows,2代表mac)
  ...  
})

多页面项目

// 数据统计
<script src='./static/touch.js'></script>

<script>
if(touch){
  window['touch'] = touch
  // 初始化 (s_project, s_space_key字段)(用户行为分析自建;参考步骤一,二, 三,四,六)

  touch.init({
    debugMode: true, // 打印console日志开关,默认是false,非必传
    s_space_key: 'xxxxxxxxxxxxxxxxxxxxxxxxx', //必传(上报的空间key)
    s_project: 'xxxxxxxxxxxxxxxxxxxxxxxxx' //必传(上报的项目id)
  })
}
</script>
// 我们的touch抛出的是对象,引用后可在控制台打印window.touch查看是否有该对象
// 调用方法: window.touch 开头

字段配置说明(init函数里的特殊参数)

    s_space_key: 上报的空间key(必填)
    s_project: 上报的项目id(必填)
    debugMode: false,  用于打印日志,测试环境下开启,生产环境下关闭。
    touchPlatform: 0, 默认0,设置平台(0代表web,1代表windows,2代表mac)
    touchH5Type: 1或2, 混合应用下的上报机制选择(默认为2)
    requestIdMode: 0或1 (如果页面请求发生跨域 请选择1)
    isApplet: true或false(true专门用于微信小程序获取设备id,其他应用可不传)
    autoPlatform: false, 是否自动区分平台 (默认false)

注: autoPlatform:true,touchPlatform:2 同时传这两个值时会以手动设置平台为主,即结果为mac

isApplet: true 小程序需要传true,否则页面会报页面iframe不能引用非业务域名的错
(注意域名是paas.cmft.com开头且版本为1.0.1以上,如果是touch开头则是旧的sdk,需要换成新的sdk(1.0.7版本),再传isApplet参数。isApplet参数,除了小程序外,其他应用设置成true的话,可能会出现同一台设备多个设备id问题,请谨慎使用)

关于混合开发客户端上报事件(存在h5和原生的混合客户端)的特殊配置

a、字段touchH5Type ,仅支持设置:1或者2;
【1表示:混合开发客户端上报事件时,h5页面触发的事件归属于原生;
【2表示:混合开发客户端上报事件时,h5页面触发的事件归属于web自身】 ;
【默认设置为2】,可按实际需要进行设置;
b、h5触发的事件会通过原生SDK进行上报,SDK会根据设置的类型,自动进行以下字段替换;
具体如下:
类型1(归属于原生的H5)
s_project, s_space_key, s_device_id, s_device_type, s_session_id, s_app_version,s_platform, s_user_id, s_os_version, s_manufacturer (注意:s_platform_src源平台)

类型2(归属于H5自身)
s_device_id, s_device_type, s_session_id, s_app_version, s_os_version, s_manufacturer

第二步:上报用户信息

1.上报用户信息的s_user_id,使用nuc服务提供的ps_id保证id的唯一性
调用touch.initUserInfo(option)
option:上报的参数为一个对象

// 示例
touch.initUserInfo({ // 不支持里面嵌套对象
  s_phone: 'xxxxxxxxxxxx', // 电话,非必传
  s_user_id: '某某Id',(必传)// 可传集团工号
  s_user_name: '某某', // 用户名称,非必传
  s_user_type: 'I' ,(必传)I:代表内部用户(招商系用户),O:代表外部用户

  s_gender: "男", // 性别,非必传
  s_city: "深圳市", // 城市,非必传
  s_province: "广东省", // 省份,非必传
  s_country: "中国", // 国家,非必传
  s_channel: "xxx", // 渠道,非必传
  s_department: "xxx", // 部门,非必传
  s_company: "招商金融科技", // 公司名称(企业),非必传
  s_company_path: "招商局@#招商金融集团@#招商金融科技", // 公司全路径,非必传
})

注:没有s_user_id则上报不了用户事件,其他必传信息是用于获取用户信息,信息不全,会导致无法使用上报的用户信息进行统计。如:s_user_type用于查询在职状态(s_user_id传uid是查不到在职状态的,得传ps_id)。

s_city(城市)、s_province(省份)这两个字段用于查询用户信息,即用户身份信息,不用于事件分析。
s_company_path 用于查询子级公司(传值格式:"一级公司@#二级成员公司@#三级成员公司")

注意:上报完用户事件后,再上报埋点事件,此时埋点事件才会自动携带用户事件中的s_user_id

第三步:埋点事件(event和 pageview)

根据需要,埋对应的事件

普通事件埋点:(event)
/**
 * @param { id } 用于事件的标识,即埋点id,一定一定不要重复, 必传, 长度限制30个字符(仅支持 $、字母、数字和下划线)
 * @param { option } 上报的自定义参数为一个对象,非必传
 * @param { callback } 是一个回调函数,非必传
 */
touch.track(id, option, callback)

// 示例
touch.track('zhangsan') // 不带自定义属性
touch.track('zhangsan',{ // 带自定义属性
  // key: value
  // @param { key } 以'c_'开头"
  // @param { value } 只支持字符串类型
  c_test: '测试'
})


页面加载事件埋点:(pageview)
/**
 * @param { id } 记录当前pageview,一定一定不要重复,必传, 长度限制30个字符(仅支持$、字母、数字和下划线)
 * @param { option } 上报的自定义参数为一个对象,非必传
 */
touch.sendPage(id, option)

// 示例
touch.sendPage('overiew_page') // 不带自定义属性
touch.sendPage('overiew_page',{ // 带自定义属性
  // key: value
  // @param { key } 以'c_'开头"
  // @param { value } 只支持字符串类型
  c_test: '测试'
})

注意:上报埋点参数中的用户id为空时,可以在上报埋点事件之前且用户id不为空时,重新调用上报用户事件即可获取到

埋点事件,上传自定义属性,参考步骤五,在进行一下操作

第一步: 新增自定义属性 image-20220427-xHQxQMjdPWEkjRLi

image-20220427-rQNrE4ahM49hb5MC

第二步: 自定义属性和埋点ID进行绑定 image-20220427-iTv7ZfOGgYCOa8n5 tips:关于自定义属性和事件ID关联,不进行绑定,数据会校验不通过

根据需要,还可设置全局通用字段

(注:设置完后需要在埋点方案中,把所有埋点都关联上此通用字段,否则数据校验不通过)

设置全局通用字段
window['touch'].setCustomData({ // 带自定义属性
  // key: value
  // @param { key } 以'c_'开头"
  // @param { value } 只支持字符串类型
  c_test: '测'
})
登出或者不想要时,可以清除
window['touch'].removeCustomData()

以上配置完成, 看控制台console打印,查看上报的详细信息(即上报埋点事件的参数)

注:若是混合应用,此处打印的参数只为web端获取的参数,原生上报会有替换机制

{
  "s_event_class":"event",
  "s_project":"",
  "s_space_key":"",
  "s_event_id":"",
  "s_vid":"",
  "s_event_type":"#包括:track、pageview、app_start、app_end、launch",
  "s_pre_event_id":"",
  "s_session_id":"",
  "s_timestamp":1614758233884,
  "s_user_info":{
    "s_user_id":"200000179#原应用user_id(集团工号)"
  },
  "s_client_info":{
    "s_sdk_version":"",
    "s_platform":"",
    "s_platform_src":"源平台(为了区分混合应用的数据源):web、ios、Android"(1.0.6新增),
    "s_ip":"",
    "s_app_version":"",
    "s_browser_version":"",
    "s_device_id":"",
    "s_device_type":"",
    "s_manufacturer":"",
    "s_os_version":"",
    "s_screen_height":"",
    "s_screen_width":"",
    "s_network_type":""
  },
  "s_custom_info":{
    // key: value 
    // param { key } 属性 (自定义字段,以'c_'开头)
    // param { value } 属性值(只支持字符串)
  }
}

注意:若想进一步了解具体的上报参数,可参考数据体系设计中的SDK报文

https://dcc.cm-worklink.com/docs/dPkpKOGnVWIL7vqO

第五步:退出登录

// 登出方法(清除用户信息缓存)
touch.initLogout()

tips: 如果不清除,那么退出之后登录之前的数据都属于上一个用户, 会清掉上一次存储在sessionStorage里面的touch-sessionId,直接影响s_session_id

生成规则

1.通过iframe打开一个隐藏的页面获取cookie,生成s_device_id
2.s_session_id每次打开会话的时候生成,在不关闭浏览器的情况下不会重新生成,在不操作的情况下10分钟生成一次 touch-sessionId,账号登出时,重新生成
3.s_pre_event_id 每个上报埋点都会生成 代表上一个事件Id,第一次上报为空
4.s_event_id 代表这个埋点的事件 s_device_id加s_user_Id加时间戳 md5生成
5.配置会在没有touch-sessionId或cfg的情况下重新拉取
6.s_platform由可通过touchPlatform设置,web端默认web,在混合应用下,touchH5Type为1时,会被原生覆盖(0代表web,1代表windows,2代表mac)
7.s_channel为业务方生成,代表业务渠道,通过什么方式打开,比如微信,比如app,当然你也可以定义自己的内容渠道,只能在全局设置,s_event_type为userInfo不上传s_channel
8.s_page_id为location.origin + location.pathname + location.hash.split('?')[0]生成
9.s_user_id为登录之后携带(即上报用户信息后携带)
10.APM数据 20条上报一次。存入localstorage里,失败后会等下次重新上报,如果数据获取有误或内存不足会触发删除操作
11.s_user_type: 'I' , 上报用户信息时必传字段,用于获取用户的在职状态,I:代表内部用户(招商系用户),O:代表外部用户

页面性能(W3C)指标说明及定义

性能指标说明及定义

平台JS探针采集的页面性能数据都是根据W3C规范中定义的Navigation Timeing API计算而来的。

指标名称 描述 计算方式
dns 查询耗时 DNS 解析耗时 domainLookupEnd - domainLookupStart
首包耗时 首包时间 responseStart - domainLookupStart
首次渲染时间 / 白屏时间
从请求开始到浏览器开始解析第一批 HTML 文档字节的时间差
responseEnd - fetchStart
首次可交互时间
浏览器完成所有 HTML 解析并且完成 DOM 构建,此时浏览器开始加载资源
domInteractive - fetchStart
DOM Ready
HTML加载完成时间
domContentLoadEventEnd - fetchStart
页面完全加载时间
首次渲染时间 + DOM 解析耗时 + 同步 JS 执行 + 资源加载耗时
loadEventStart - fetchStart
资源加载耗时
页面中的同步加载资源
loadEventStart - domContentLoadedEventEnd

API响应码

状态码
状态码英文名称
描述
0
- 一般ajax请求失败时才会有此状态码,如下原因可能为0:
1、跨域请求
2、网络防火墙过滤
3、在代码中自己取消了请求
4、浏览器插件屏蔽了请求
5、发起请求时正好遇到服务器重启
100
Continue
继续。客户端应继续其请求
101
Switching Protocols
切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200
OK
请求成功
400 Bad Request
客户端请求的语法错误,服务器无法理解
401
Unauthorized
请求要求用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404
Not Found
服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405
Method Not Allowed
客户端请求中的方法被禁止
406
Not Acceptable
服务器无法根据客户端请求的内容特性完成请求
500 Internal Server Error
服务器内部错误,无法完成请求
501
Not Implemented
服务器不支持请求的功能,无法完成请求
502 Bad Gateway
充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out
充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported
服务器不支持请求的HTTP协议的版本,无法完成处理

浏览器/客户端网络库错误码

错误码
说明
net::ERR_ABORTED
用户取消
net::ERR_ADDRESS_UNREACHABLE
无法访问IP地址。这通常意味着没有指向特定主机或网络的路由
net::ERR_BACKGROUND_NETOFF
net::ERR_BLOCKED_BY_CLIENT
net::ERR_BLOCKED_BY_CLIENT 资源请求被客户端拦截了,例如广告过滤等
net::ERR_CACHE_READ_FAILURE
缓存读取失败,表示请求响应是从缓存返回的,但是读取数据出错
net::ERR_CONNECTION_ABORTED
由于未收到发送数据的ACK而导致连接超时。 这可能包含一个未收到ACK的FIN数据包。
net::ERR_CONNECTION_CLOSED
连接已关闭(对应于TCP FIN)
net::ERR_CONNECTION_REFUSED
连接尝试被拒绝
net::ERR_CONNECTION_RESET
重置连接(对应于TCP RST)
net::ERR_CONNECTION_TIMED_OUT超时 连接尝试超时
net::ERR_CONTENT_DECODING_FAILED
数据内容解码失败,一般是服务器声明的加密方式与实际不符
net::ERR_CONTENT_LENGTH_MISMATCH
在连接关闭时,response body长度小于Content-Length声明的长度,即数据接受不完整
net::ERR_EMPTY_RESPONSE
服务器关闭连接而不发送任何数据
net::ERR_FAILED
未知错误
net::ERR_MISSILE_NET_ERROR_RETRY_FAILED
UC中转请求错误重试失败
net::ERR_NAME_NOT_RESOLVED
DNS解析失败,找不到域名对应的ip地址
net::ERR_NETWORK_ACCESS_DENIED
访问网络的权限被拒绝。
net::ERR_NETWORK_CHANGED
网络发生变化
net::ERR_INSECURE_RESPONSE
服务器的响应不安全(例如,存在证书错误)
net::ERR_PROXY_CONNECTION_FAILED
无法创建与代理服务器的连接。在解析其名称或将套接字连接到它时发生错误。请注意,这不包括HTTP代理的实际“CONNECT”方法期间的失败
net::ERR_READ_DATA_TIMEOUT
net::ERR_SSL_PROTOCOL_ERROR
net::ERR_SSL_PROTOCOL_ERROR
发生SSL协议错误
net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH
客户端和服务器不支持通用SSL协议版本或密码套件
net::ERR_TIMED_OUT
连接尝试超时

Web SDK 常见问题

注意:其他疑问点解答在后面

怎么知道是否接入成功

接入SDK后,debugMode为true时。控制台如果有数据打印,则已经表示接入是成功的;

上测试环境后,控制台接口有event上报且200则表示数据上报时正常的

为什么没有数据显示

1.本地环境上报的数据是不会在采集的(即localhost开头的地址不会上报)

2.埋点第一次上报数据可能会在数据管理无法找到,0-30分钟内会更新数据 (半小时的数据延迟),上报的数据并不会丢失。

3.声明式埋点报错。无法上报, key——value没有加上相同的引号导致无法转化

4.混合应用下,若也接入了原生端sdk, touchH5Type 为1时,就会报到原生

关于混合开发客户端上报事件(存在h5和原生的混合客户端)的配置说明
a、字段touchH5Type ,仅支持设置:1或者2;
【1表示:混合开发客户端上报事件时,h5页面触发的事件归属于原生;
【2表示:混合开发客户端上报事件时,h5页面触发的事件归属于web自身】 ;
【默认设置为2】,可按实际需要进行设置;
b、h5触发的事件会通过原生SDK进行上报,SDK会根据设置的类型,自动进行以下字段替换;
具体如下:
类型1(归属于原生的H5)
s_project, s_space_key, s_device_id, s_device_type, s_session_id, s_app_version,s_platform, s_user_id, s_os_version, s_manufacturer (注意:保留eventsource)

类型2(归属于H5自身)
s_device_id, s_device_type, s_session_id, s_app_version, s_os_version, s_manufacturer

混合替换字段具体如图所示: image-202204271651025516000

为什么SDK后台查询的最后一次时间不太对

sdk采集的时间是通过标准的 new Date().getTime() 采集的是本地时间 而非网络时间

支持单页面吗

页面访问量:调用touch.sendPage()上传事件pageview,以统计该hash值对应页面的pageview情况。所以在查看SPA应用的页面访问量列表时,可以查看对应的hash页面的具体pageview。

SDK的数据是实时上报的吗?

普通事件是实时上报的,apm的数据是20条上报一次

注意:上报用户信息时,s_user_id不能为空,否则不会上报用户信息

SDK会采集那些数据

浏览器基本信息,页面性能数据(Navigation Timing API),JS错误数据,AJAX性能数据和页面追踪数据

什么时候数据丢失

1.网络问题导致数据上报失败

2.触发埋点的时候跳转项目 这个时候相当于关闭浏览器操作 如果请求还未发送成功 就会导致这条数据丢失,可以在这种情况有延迟200ms左右跳转页面,但是并不能保证100%数据不会丢失。

小程序现在“页面iframe不能引用非业务域名”的问题,如何解决?

在初始化方法里面传入 isApplet: true 参数(注意域名是paas.cmft.com开头且sdk版本为1.0.1以上,如果是touch开头则是旧的sdk,需要换成新的sdk(1.0.7版本),再传isApplet参数)

注意:isApplet参数,除了小程序外,其他应用设置成true的话,可能会出现同一台设备有多个设备id问题,请谨慎使用

其他疑问点

1.为何移动端上报数据后不能立即查看到?

这是上报策略问题导致的: 安卓上报策略:1、满足20条;2、切后台时 ios上报策略:1、满20条;2、切到前台;

如果以上条件都满足了,仍然看不到上报的数据,可以检查一下安卓 sdk版本号是否是6.0.9版本以上,iOS sdk的版本号是否为6.1.0版本以上,因为原生端sdk版本过低不符合某些条件容易被1.0.6以上的web sdk拦截。

注意:iOS sdk 6.1.1 版本,修复了网络类型错误的问题

2.为何上报数据成功后,使用图表分析的时候,看不到上报的数据?

使用分析图表时,涉及到预计算等流程,会延迟2小时。

3.为何很多IP会是同一个IP?

不同的用户连同一个WiFi,IP都是一样的。

4.如果iOS有组织信息上报,PC没有组织信息上报,PC的这条没有组织信息的数据会把iOS的正常数据干掉吗?

同一个空间的就会覆盖。

5.apm性能分析http错误的统计规则是什么?

http错误只统计状态码≥400的数据。

6.引入sdk的时候,打印引入的变量为何还会出现undefined?

引入方式有2种,看是否是真的单页面项目或者是否是多页面项目,如果区分不清晰可以两种方法都尝试即可解决。

7.为何上报成功,并且在数据验证也看到验证通过,为何在用户行为分析平台的中新建图表查询不到这数据?

这是因为数据入库到预处理完成会需要2小时,即会延迟2小时。

8.为何上报用户事件成功后,在概览那里查看不到用户访问量?

因为概览基于埋点事件来做分析的,即这些用户有触发埋点事件上报成功的才会有数据,且需要2小时数据预处理完成才能查看到数据。

9.用户行为分析平台可以加业务公司同事的权限吗?

有nuc账号的可以。如果找不到项目成员,可以让项目成员先登录PaaS 门户,随后管理员刷新成员管理即可看到。(可参考步骤二)

10.为何在使用事件分析的时候,会出现设备数和用户数不等的情况?

1)在用户上报用户信息的时候没有传userId的时候会出现这样的情况,所以上报用户信息时可以先确保拿到userId后再上报。

2)web sdk1.0.6之前的版本会有很多重复设备id的情况,请更新web sdk至最新版本1.0.7

11.为何在使用事件分析的时候,会出现某用户触发了A埋点事件,但是查询"A埋点"的用户数时却查不到该用户?

1)用户上报用户信息的时候没有传userId(userId为空)会入库失败,但上报埋点事件是不需要userId也能上报成功,因此查询A埋点事件的次数时会有数据,查询"A埋点"的用户数时会少数据。所以上报用户信息时可以先确保拿到userId后再上报。

2)上报埋点事件后还未超过2个小时,会出现这样的情况,因为数据入库到预处理完成会需要2小时,所以上报成功2小时后方可使用。

3)上报埋点事件的s_space_key不是所查询的项目空间id,会出现这样的情况。每个菜单的首页左边第一个下拉框可以切换空间,平台左上角处可以切换项目。请确保上报和查询的项目以及项目空间保持一致。

12.目前sdk暂不兼容IE浏览器

13.页面分析中页面ID和页面名称两个属性是取埋点方案的什么值?

取埋点id和埋点名称。上报页面事件只是上报埋点事件中的一种类型(pageview类型),页面分析只是拿出具体的类型来分析所上报的类型事件。 上报埋点事件的类型 "s_event_type": "#包括:track、pageview、app_start、app_end、launch"

用户行为分析出现的页面名称,指标名称,转化漏斗步骤,留存行为这些关键字对应的信息取值都是数据接入管理中的埋点名称,以及用户分群中的触发事件也是埋点名称,而页面id、vid 则是对应埋点id

14.关于上报数据,校验问题

1)未注册埋点,导致上报数据校验失败,需要去数据接入管理上传埋点方案

2)未注册自定义属性,导致上报数据校验失败,需要去数据接入管理中新增自定义属性

3)埋点未绑定自定义属性,导致上报数据校验失败,需要去数据接入管理中的埋点表格查找对应埋点,设置相关的自定义属性即可绑定

4)字段值长度超2048,入数据库时会自动截取为250个字符,从而导致上报数据和入库的数据对不上,从而校验失败,可以分字段存这些比较长的数据,缩短字段长度

5)上报的字段过多或者过少,都会导致数据验证失败,不入库。需要严格对照sdk报文字段

6)数据超过有效时间范围,会导致数据验证失败,不入库。

7)userId不能为空,用户id为空时,会导致数据校验失败,用户信息不入库,因为上报用户信息时用户id是必传字段,不能为空。

小程序-SDK接入指引

在使用前,请先阅读统一接入规范

建议先阅读WEB-SDK引入规范,小程序的sdk基于web sdk演化而来,使用方法基本相同。

详细步骤

安装SDK

1)到用户行为分析平台,菜单栏点击进入数据接入管理,下载sdk

2)点击直接下载 https://paas.cmft.com/paas-doap/sdk/paas-doap-wx-js-sdk.zip

3)可通过npm进行安装 ,需要设置公司制品库的源镜像

npm install ubap-wx-sdk

WeChat8f61ce1c27e777ad18311293a6ddfda8

如果无法访问公司资源,可联系我们项目相关人员获取静态资源sdk

配置服务器域名

前往微信公众平台( https://mp.weixin.qq.com/ )添加服务器域名:https://paas-doap.cmft.com 只有添加成功后SDK才能上报数据,不然会被微信拦截。

WeChat4f0c664a3f37ea5a6f0f5c5ffc20debd

引入SDK,在项目中初始化

初始化

import touch from './touch'

// 请在调用App构造函数前初始化touch,不然无法收集项目运行时抛出的错误信息
// 初始化 (s_project, s_space_key字段) (用户行为分析自建;参考步骤一,二, 三,四,六)
touch.init({
  s_project: 'xxxxxxxxxxxxxxxxxxxxxxxxx', //必传(上报的项目id)
  s_space_key: 'xxxxxxxxxxxxxxxxxxxxxxxxx', //必传(上报的空间key)
  debugMode: false, // 打印console日志开关,默认是false,非必传
  devtoolsSwitchStatus: false,  // 本地开发环境(微信开发者工具)是否上传数据,默认false,非必传
  ...  
})

上报用户信息

1.上报用户信息的s_user_id,使用nuc服务提供的ps_id保证id的唯一性
调用touch.initUserInfo(option)
option:上报的参数为一个对象

// 获取到用户信息后调用上报用户信息的方法
// 示例
touch.initUserInfo({ // 不支持里面嵌套对象
  s_phone: 'xxxxxxxxxxxx', // 电话,非必传
  s_user_id: '某某Id',(必传)// 可传集团工号
  s_user_name: '某某', // 用户名称,非必传
  s_user_type: 'I' ,(必传)I:代表内部用户(招商系用户),O:代表外部用户

  s_gender: "男", // 性别,非必传
  s_city: "深圳市", // 城市,非必传
  s_province: "广东省", // 省份,非必传
  s_country: "中国", // 国家,非必传
  s_channel: "xxx", // 渠道,非必传
  s_department: "xxx", // 部门,非必传
  s_company: "招商金融科技", // 公司名称(企业),非必传
  s_company_path: "招商局@#招商金融集团@#招商金融科技", // 公司全路径,非必传
})

注:没有s_user_id则上报不了用户事件,其他必传信息是用于获取用户信息,信息不全,会导致无法使用上报的用户信息进行统计。
s_user_type: 'I' , 上报用户信息时必传字段,用于获取用户的在职状态,I:代表内部用户(招商系用户),O:代表外部用户(s_user_id传uid是查不到在职状态的,得传ps_id)。

s_city(城市)、s_province(省份)这两个字段用于查询用户信息,即用户身份信息,不用于事件分析。
s_company_path 用于查询子级公司(传值格式:"一级公司@#二级成员公司@#三级成员公司")

注意:上报完用户事件后,再上报埋点事件,此时埋点事件才会自动携带用户事件中的s_user_id

第三步:埋点事件(event和 pageview)

根据需要,埋对应的事件

普通事件埋点:(event)
/**
 * @param { id } 用于事件的标识,即埋点id,一定一定不要重复, 必传, 长度限制30个字符(仅支持 $、字母、数字和下划线)
 * @param { option } 上报的自定义参数为一个对象,非必传
 * @param { callback } 是一个回调函数,非必传
 */
touch.track(id, option, callback)

// 示例
touch.track('zhangsan') // 不带自定义属性
touch.track('zhangsan',{ // 带自定义属性
  // key: value
  // @param { key } 以'c_'开头"
  // @param { value } 只支持字符串类型
  c_test: '测试'
})


页面加载事件埋点:(pageview)
/**
 * @param { id } 记录当前pageview,一定一定不要重复,必传, 长度限制30个字符(仅支持$、字母、数字和下划线)
 * @param { option } 上报的自定义参数为一个对象,非必传
 */
touch.sendPage(id, option)

// 示例
touch.sendPage('overiew_page') // 不带自定义属性
touch.sendPage('overiew_page',{ // 带自定义属性
  // key: value
  // @param { key } 以'c_'开头"
  // @param { value } 只支持字符串类型
  c_test: '测试'
})

注意:上报埋点参数中的用户id为空时,可以在上报埋点事件之前且用户id不为空时,重新调用上报用户事件即可获取到

埋点事件,上传自定义属性,参考步骤五,在进行一下操作

第一步: 新增自定义属性 WechatIMG235

WechatIMG236

第二步: 自定义属性和埋点ID进行绑定 WechatIMG237

WechatIMG238

tips:关于自定义属性和事件ID关联,不进行绑定,数据会校验不通过

以上配置完成, 看控制台console打印,查看上报的详细信息(即上报埋点事件的参数)

{
  "s_event_class":"event",
  "s_project":"",
  "s_space_key":"",
  "s_event_id":"",
  "s_vid":"",
  "s_event_type":"#包括:track、pageview、app_start、app_end、launch",
  "s_pre_event_id":"",
  "s_session_id":"",
  "s_timestamp":1614758233884,
  "s_user_info":{
    "s_user_id":"200000179#原应用user_id(集团工号)"
  },
  "s_client_info":{
    "s_sdk_version":"",
    "s_platform":"",
    "s_platform_src":"源平台(为了区分混合应用的数据源):web、ios、Android"(1.0.6新增),
    "s_ip":"",
    "s_app_version":"",
    "s_browser_version":"",
    "s_device_id":"",
    "s_device_type":"",
    "s_manufacturer":"",
    "s_os_version":"",
    "s_screen_height":"",
    "s_screen_width":"",
    "s_network_type":""
  },
  "s_custom_info":{
    // key: value 
    // param { key } 属性 (自定义字段,以'c_'开头)
    // param { value } 属性值(只支持字符串)
  }
}

注意:若想进一步了解具体的上报参数,可参考数据体系设计中的SDK报文

https://dcc.cm-worklink.com/docs/dPkpKOGnVWIL7vqO

退出登录

// 登出方法(清除用户信息缓存)
touch.initLogout()

APM数据采集

SDK可以收集小程序中异常的网络请求和程序运行时抛出的异常信息以供分析。

打开空间的APM统计开关 WechatIMG230

WechatIMG231

小程序的网络请求都会经过微信客户端的转发。

WechatIMG232

开启APM统计开关后SDK会自动收集statusCode不等于200的网络请求信息。

WechatIMG233

SDK也会收集小程序运行时抛出的异常以供分析

WechatIMG234

IOS-SDK接入指引

Touch SDK for iOS

@(Ruby)[Objective-c]

Create application

Create your application in backstage management system. Generate spaceKey and project

Repo address 地址 http://git.dev.cmrh.com/FrontEnd/Nino/PodSpec.git

Integration Integration using cocoapods Create Podfile Add source to Podfile

source 'http://git.dev.cmrh.com/FrontEnd/Nino/PodSpec.git'

Install Touch

 pod 'InfosCore'
 pod 'TouchService

run pod install Import SDK in AppDelegate.m

 @import TouchService;
 @import InfosCore;

Add code below in application:didFinishLaunchingWithOptions:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString *appKey = @"your peoject";
    NSString *spaceKey = @"your spaceKey";
    CMInfosConfig *config = [CMInfosConfig defaultConfig];
    [
      touchService setupWithAppKey:appKey
      spaceKey:spaceKey
      config:config
    ];
    NSMutableArray *services = [NSMutableArray array];
    if (touchService) {
      [services addObject:touchService];
    }
    [CMInfos withServices:services];
 }

Set or remove login user infos

// Example 1
CMInfosUserInfoModel *userInfo = [
   CMInfosUserInfoModel infoWithUserId:@"u_1000001"
   userName:@"name"
   gender:@"Male"
   age:20
];
[CMInfos loginWithUserInfo:userInfo]; 
                // Example 1
                CMInfosUserInfoModel *userInfo = [CMInfosUserInfoModel          infoWithUserId:@"u_1000001"
                userName:@"John"];
                [CMInfos loginWithUserInfo:userInfo];

                // Logout:
                [CMInfos logout];

Now, the Touch SDK has installed. 🍺

Track events Automatically tracking

//Standardized event will be upload automatically by Touch SDK, for example:
  CMInfosEventTypeEnterBackground;
  CMInfosEventTypeEnterForeground;

Manually tracking

//vid   Unique identification (must)
//describe  A simple description (must)
//infos  Custom infos, a dictonary object

[CMInfos trackEventWithVid:vid describe:des infos:@{key:val}];

Manually tracking

//appkey project key (must)
//vid  Unique identification (must)
//describe  A simple description (must)
//infos  Custom infos, a dictonary object

[CMInfos trackEventWithAppKey:appkey Vid:vid describe:des infos:@{key:val}];

Android-SDK接入指引

1.引入依赖 app.gradle

  implementation('com.cm.infors:infors:6.0.9') {
          exclude group: 'com.android.support', module: 'support-annotations'
          exclude group: 'com.android.support', module: 'recyclerview'
          exclude group: 'android.arch.core', module: 'runtime'
      }

添加仓库地址 project.gradle

allprojects {
      repositories {
              ...
          maven {
              credentials {
                  username 'user-p-cmft-ts-touch'
                  password 'd3PkLk8J'
              }
              url 'https://artifact-c.cmft.com/repository/pmg-cmft-ts-touch/'
          }

AndroidManifest.xml 添加必备权限

    <!-- To auto-complete the email text field in the login form with the user's emails -->
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
      <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.在Application 初始化库

Infors.Builder builder = new Infors.Builder(this);
   builder.setSpaceKey(//SpaceKey);
   builder.setProjectKey(//ProjectKey);
   builder.Loggable(true);//是否显示Log日志
   Infors.init(builder.build());

spaceKey和ProjectKey必须保证唯一性,由用户接触平台PC统一分配,请勿随意填写。 Loggable。如果为true。可以在 Logcat 看到 以Infors: 为Tag 的日志 最终采集到的数据都会在用户行为分析平台上展示

3.登录 采集的数据需要和用户绑定才会在用户行为分析平台显示。 所以请记得在登录模块调用setUserDetail接口。 示例代码:

  UserInfo userInfo = new UserInfo(“userid”,//用户名);
  userInfo.setGender("女");//“男”,“女”
  userInfo.setUserName("佩奇");
  userInfo.setUserType("I");//"I" 内部用户 ,"O" 外部用户
  Infors.getInstance().setUserDetail(userInfo);

如果此信息没有设置成功,用户行为分析平台-用户列表不会显示上报的用户信息 UserInfo上报时,只有userName,userid为必传; userid为用户的psid; sdk会持久化保存UserInfo。如果用户信息有变动请在代码合适的位置调用登录,登出接口。 如果用户未登录状态,平台而通过deviceId来筛选。

3.0.1 登出

Infors.getInstance().logout();

4.自定义埋点 Infors还有track接口以自定义上报事件。以帮助做漏斗分析

    Map<String, String> map = new HashMap<>();
    map.put("key-1", "Value-1");
    map.put("key-2", "Value-2");
    Infors.getInstance().track(v.getId() + "", map);

5.权限申请 sdk内部,采集,存储数据都需要权限申请,请在合适地方为sdk申请权限, 为了方便,sdk自带PermissionHelper类,也可以自己方式申请权限。 如果没有申请权限,可能引致没有数据上报 示例代码

    PermissionHelper permissionHelper;
      private String TAG = this.getClass().getSimpleName();

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          ......

      permissionHelper = new PermissionHelper(this, new String[]{
      Manifest.permission.READ_PHONE_STATE,
      Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
      permissionHelper.request(new PermissionCallback() {
      @Override
      public void onPermissionGranted() {
      //全都授权
      Log.e(TAG, "onPermissionGranted...");
      }

      @Override
      public void onIndividualPermissionGranted(String[] grantedPermission) {
          //某个授权
          Log.e(TAG, "onIndividualPermissionGranted() called with: grantedPermission = [" +
          TextUtils.join(",", grantedPermission) + "]");
      }

      @Override
      public void onPermissionDenied() {
          //某个拒绝
          Log.e(TAG, "onPermissionDenied...");
      }

      @Override
      public void onPermissionDeniedBySystem() {
          //用户选择了"不再询问"后,点击"拒绝按钮",执行此方法
          Log.e(TAG, "onPermissionDeniedBySystem...");
          }
          });
      }


      @Override
      public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
         @NonNull int[] grantResults) {
              super.onRequestPermissionsResult(requestCode, permissions, grantResults);
               if (permissionHelper != null) {
               permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
      }
      }

6.混淆 sdk已混淆

7.webview 混合app中,如果h5也接入了Infors js版,要达到这效果需要在Android的webview暴露调原生的方法。 demo中WebViewActivity 演示了这个功能。 关键代码:

  webView.addJavascriptInterface(new JsCallInfors(this), "Infors");

8.开关功能 在用户接触平台,可以设置打开sdk采集的部分功能。 在网页‘提交‘后,在app下次冷启动时生效。

9.APM 提供 网络请求统计,app主线程中crash事件上报,app卡顿上报,并设有独立开关。 其中的网络请求需要手动添加代码。仅支持Okhttp的http请求。

 OkHttpClient okhttpclient = new OkHttpClient.Builder()
                  .addInterceptor(InforsInterceptor.getInstance())
                  .build();

9.1 RequestIdMode APM自动在请求加tRequestId自段,方便前后台追踪数据。 这个配置在Infors.build中新增一个配置项, requestIdMode

        Infors.Builder builder = new Infors.Builder(this);
        builder.setRequestIdMode(Infors.NONE_REQUESTID);
        Infors.init(builder.build());

默认为 Infors.HEAD_REQUESTID 设置为 Infors.URL_REQUESTID,requestId添加到url中,新增一个参数tRequestId 设置为 Infors.NONE_REQUESTID ,就不传这个值了

用户行为分析使用指南

新手入门

用户行为分析平台是什么

1.用户行为分析平台简介

用户行为分析平台,是数据智能时代的专业、深度、准确数据统计分析平台,支持对产品日常运营核心业务数据的精准监控,客户端、服务器、业务数据、第三方数据的采集和建模,对营销效果进行驱动分析,进行用户体验优化,升级产品功能,实现用户精细化运营、数据看板辅助管理决策、产品个性化推荐改造、用户分群体系构建等应用场景。可通过大数据平台、CRM、ERP 等内部 IT 系统,进行用户行为分析,让用户行为数据发挥深远的价值。 企业通过用户行为分析可以实现精细化运营,制定产品运营策略,在产品运营中得到用户反馈,勾画出用户的全生命周期,绘制用户全生命周期状态图,当制定好全生命周期状态图以后,其在每一个状态中制定相应的运营策略,了解用户从哪里来,喜好是什么,这个运营策略更重要的一点是把用户标签化,每一次用户数据分析都可以有效地识别用户的行为并标签化,精准定位,实现用户列表,用户分层,用户画像等。从而进行产品、研发开发优化,节约经营成本,形成一个闭合环路,实现实时更新。

2.用户行为分析平台的产品优势

2.1 基础数据采集与建模

实现同一个用户不同来源数据的打通——随着互联网的发展越来越深入,一个用户在同一个产品上的行为数据,已经需要从多个不同的来源进行采集。这些来源包括 iOS、Android、Web等。针对客户的全端数据采集,将同一个用户在不同来源的数据打通的需求,平台提供代码埋点具等方法把数据接入用户行为分析平台。

2.2 实时灵活的多位分析

实时化,具有时效性,能对数据进行秒级处理,实时更新,提供多维分析功能,剖析用户行为——维度、指标可以进行自定义,漏斗分析、留存分析、页面分析可以多角度满足分析需求。用户行为分析平台还可以对单个用户进行精细化分析。数据分析是一个很大的领域,用户行为分析平台主要满足客户对于用户行为分析这一个特定领域的需求。用户行为分析平台承诺不碰客户数据,帮助企业用其内部数据进行分析,关注与企业业务数据相关的用户行为分析。

2.3 直观统一的数据看板

看板可以说是用户行为分析的一个集合,包括事件分析、漏斗分析、版本分布、页面分析等,各个模块互相关联的指标集合在一起,能够从多个不同图表中发现关联,也可以对单个图表进行分析研究,方便管理者或者老板直观地看到相应的看板,方便每天查看相应模块的数据分析。

3.用户行为分析平台的现状和痛点

3.1 业务痛点

  • 如何拉新新客户和留住老客户?进行推广? 对于每个企业来说推广是一个很重要的部分,盲目进行广告投放,无法追踪各渠道实际转化率。用户行为分析平台能够利用多种分析手段准确追踪新用户的渠道来源,用数据直观评估渠道拉新能力。同时,利用漏斗分析获取登录注册到付费的转化率,直观体现拉新质量,也可以对老用户留存进行精准分析,对企业的决策提供方向。用户行为分析平台还可以对单个用户行为进行分析,优化用户体验和内容交互,提高用户的粘性;
  • 产品上线后如何评估效果和进行优化?用户体验如何?哪里需要改进? 产品上线后无法实时对用户行为分析能力,得到新功能的用户体验,准确展示产品功能改版的效果,哪些关键流程可以进行优化,bug处理滞后会不会造成用户的损失。用户行为分析平台提供漏斗分析,准确提供关键流程的漏斗步骤图,帮助企业对每个关键流程进行优化,对核心转化流程进行监控,降低用户流失率。同时,用户行为分析平台提供页面分析,直观呈现不同页面的访问数据,用数据验证用户最受欢迎的交互页面和产品功能,提供用户分群来分析用户,了解用户分布和喜好,对产品进行优化,提升用户体验;
  • 我们了解用户吗?用户了解我们吗? 不了解用户,怎么可能让用户来了解我们,无法进行有效的营销,难以真正提升存量用户的长期活跃度。用户行为分析平台帮助企业进行一个用户分析,用户列表功能可以满足特定用户的分析需要,找到相似行为特征用户进行分群,提升不同用户群体的粘性。对长期未登陆即将流失的用户群体,及时推送消息和优惠券召回挽救。同时,用户行为分析平台建立用户分层和用户画像,将用户行为结合运营数据交叉分析,洞察核心用户特点,勾勒精准用户画像;

3.2 技术痛点

  • 企业搭建平台成本高: 企业如果自己新建数据平台,成本太高,而且需要相应技术团队进行维护支持,不划算。在用户行为分析平台服务团队的支持下,能快速接入用户行为分析平台,完成企业数据分析平台的搭建,马上对用户行为数据进行分析;
  • 团队的效率: 产品经理和业务人员要向数据工程师进行数据业务沟通,提出相应需求。用户行为分析平台可帮助企业业务分析人员快速上手使用产品,无需请求数据工程师的支持,即可通过用户行为分析平台的数据概览查看日常重要数据指标;
  • 重复开发,造成资源浪费: 项目工程量大,需要埋点的位置太多,而且需要产品开发运营之间相互反复沟通,容易出现手动差错,如果错误,重新埋点的成本也很高。这会导致整个数据收集周期变的很长,收集成本变的很高,而且效率很低。因为手动埋点需要开发人员完成,所以每次有埋点更新,或者漏埋点,都需要重新走上线发布流程,更新成本也高,对线上系统稳定性也有一定危害。用户行为分析平台的集成 SDK 支持一键开启、启动、退出、浏览页面、控件点击等行为事件自动采集,PV、UV、新增用户等数据可以轻松获取

用户行为分析平台能做什么

1.透析指标,优化产品

用户行为分析平台通过用户行为分析,帮助产品收集、处理、分析真实用户行为数据,透析全面运营指标,掌握用户行为,改善产品全流程。

1.1 进行产品功能优化

从产品设计、产品研发、产品运营、产品反馈、开发优化各个环节,进行用户行为分析,对产品进行调整,节约经营成本,形成一个闭合环路,实现实时更新。 产品面对的实际问题包含以下:

  • 评估产品功能
  • 简化产品操作
  • 提升转化流程
  • 优化产品体验
  • 进行产品调整
  • 专注拉新并提升留存

1.2 支持用户分析,实现用户列表,用户分群

关注用户分析管理,多角度对用户行为进行分析,实现分群管理,勾勒用户画像。针对关键指标,关键用户进行精准营销推送。 运营面对的实际问题包含以下:

  • 进行用户分群
  • 提升用户留存
  • 新老用户营销活动
  • 哪个功能以及推广效果更好
  • 提升用户活跃度

1.3 把控各个渠道用户质量和活动效果

哪个渠道更受用户欢迎,用户质量更高,推出某个活动后效果如何,用户有什么反应? 面对的实际问题包含以下:

  • 各个渠道用户情况,拉新,留存等
  • 如何进行渠道推广,活动效果如何
  • 各个渠道用户反应

1.4 支持各个企业角色接入,形成无缝对接

技术角色重点关注如何快准细全地完成数据的采集及接入,充分理解业务人员的分析需求,协同完成产品的指标增长任务。 技术面对的实际问题包含以下:

  • 如何采集数据
  • 如何导入已有的历史数据
  • 如何提升效率、避免重复性开发,减少研发投入

用户行为分析平台怎么解决问题

我们以电商行业为例,介绍用户行为分析平台如何快速进行数据分析。

1.标准电商核心流程

电商用户通常会经历以下核心行为流程:

启动 App → 开始浏览首页 → 点击并浏览商品详情页 → 看到合适的商品,将商品加入购物车 → 有购买意向,提交订单 → 决定付款,支付订单

产品核心流程可描述为:

启动 App - 浏览首页 - 浏览商品详情页 - 加入购物车 - 提交订单 - 支付订单

2.电商行业常见数据分析问题

在电商行业的具体工作中,业务人员关注商品首页的触发事件的总次数和触发事件的人数以及人均触发事件数,老板关注从进入app到支付流程中哪个环节用户流失了,产品关注各核心流程转化及各功能的用户体验。 我们将主要分析需求列举如下:

  • 触发事件的总次数和触发事件的人数以及人均触发事件数?
  • 用户从使用app到支付的过程中有哪些表现?
  • 针对用户流失的核心流程,需要怎么改进?
  • 针对流失的用户进行精准营销
  • 提升核心流程的转化和优化产品功能,改善用户体验

3.用户行为分析平台解决方案

3.1 查看触发事件的总次数和触发事件的人数以及人均触发事件数

首先,我们希望了解触发事件的总次数和触发事件的人数以及人均触发事件,进而知道用户需要什么 。 在用户行为分析平台中,我们可以这样做:

  • 打开事件分析,查看触发事件总数,同时按照日期、渠道等维度生成事件分析单图

3.2 查看核心流程转化率

查看核心流程总转化率及支付步骤的转化率,找出客户流失的关键原因。 在用户行为分析平台中,我们可以这样做:

  • 打开漏斗分析,生成支付漏斗,观察每个阶段的转化率,找出原因,对症下药

3.3 多角度分析用户在不同核心流程页面的表现

上一个问题中,我们知道利用用户从使用产品到进行支付行为的转化率。 同时,我们也希望获取用户在各个页面的表现。 在用户行为分析平台中,我们可以这样做:

  • 打开页面分析,查看从 App 激活到支付订单的页面数据

3.4 分析用户在支付环节流失的原因

支付行为是电商行业的关键步骤,那么在这个环节前用户是怎么流失的。并且在支付环节流失的用户他们的后续行为是什么?能否进行优化或者相应挽回? 用户行为分析平台支持查看特定用户行为序列,找到提交订单行为,对此之后的行为进行人工标注,以推测后续未进行支付环节的原因。

3.5 分析每个页面用户活跃情况,哪个商品最受欢迎

我们希望了解每个页面用户的活跃程度,以及查看商品频率。

  • 查看各个页面的活跃情况
  • 查看每个页面商品的点击频率

3.6 查看用户列表,分析单个流失用户

我们希望获得流失用户进行分析,针对特定用户实现精准营销。

这个案例帮助你快速了解一个简单的分析场景,其中涉及到了事件分析、漏斗分析、留存分析、页面分析等分析模型,你可以进一步探索更多功能。

用户行为分析平台的数据来源

1. 数据来源问题

用户行为分析平台中的所有数据均来自于客户的自有数据接入。 用户行为分析平台主要支持采集客户的web、iOS、安卓端数据,我们提供了这三端的SDK 接入方式。

注:sdk上报成功后,要预处理数据,所以需要延迟2小时后,才能在用户行为分析平台中使用上报的数据来建图分析。

基本概念

本节,我们主要介绍在使用用户行为分析平台来进行用户行为分析时常用到的一些名词和一些基础指标的配置说明,目的是帮助用户更好的理解和使用用户行为分析平台的功能来解决基本的分析需求。

行为分析常用名词

  • 维度

维度描述的是一个事物身上所具备的特征或属性。比如一个人属于什么性别,生活在哪个城市,喜欢什么颜色,这些都是这个人身上所具备的属性特征。

  • 指标

指标,即具体的数值。比如访客、页面浏览量都属于常见的指标。指标一般可分为计数指标和复合指标。计数指标如访客、访问、页面浏览量等;复合指标如转化率等。指标一般伴随维度来分析才有更大的意义。

  • 新访问用户量

当日的独立访客中,历史上首日访问网站的访客定义为新用户、安装并首次启动应用的设备, IOS 用 OpenUDID 识别唯一性, Android 用 IMEI + MAC识别唯一性。卸载后再安装启动,则不会被算作新增用户。

  • 累计用户

从接入起到现在,启动过应用的设备,多次启动仅计算一次,当日累计用户=历史累计用户+当日新增用户(不含重复安装)。

  • 新用户占比

在一定时间段内,新用户在所有登录用户中的占比。

  • 人均访问页面次数

PV/UV

  • 总访问时长

所有访问的总时长,以分钟作为单位展示。

  • 平均访问时长

总访问时长/人数

  • 每次访问页面浏览量

页面浏览量/访问量

  • 跳出次数

在对网站的访问过程中,只有一个页面浏览的访问的次数

  • 跳出率

在对网站的访问过程中,只有一个页面浏览的访问占所有访问的比率;公式:跳出次数/进入量

  • 退出次数

用户退出网页的数量。当该指标被页面级维度分解时,指从当前页面级维度的当前元素退出(以当前页面级维度的当前元素作为当前页面级维度的最后一个值)的那些访问的数量。在作为指标单独使用或者被除页面级维度以外的维度分解时退出次数在数值上等于访问量。通俗的讲:从该页面退出,没有下一步的链路的次数

  • 退出率

退出次数/退出页的pv。通俗指的是用户从该页退出的页面访问数/进入该页的页面访问数的百分比。从该页退出的页面访问数/进入该页的页面访问数。

用户行为分析平台相关名词

1.总次数

事件分析功能常用指标,指在选定的时间范围内,某一事件被触发的次数。比如选择页面浏览事件,按总次数查看时,计算出来的值即为页面浏览量。

2.触发用户数

事件分析功能常用指标,指在选定的时间范围内,触发某一事件的独立用户数。比如选择注册成功事件,按独立用户数查看时,计算出来的值即为选择时间范围内的注册成功人数。

3.人均次数

事件分析功能常用指标,指在选定的时间范围内,独立用户触发某一事件的平均次数。比如选择页面浏览事件,按人均次数查看时,计算出来的值即为人均页面浏览深度。

基础指标配置说明

  • Web 端日活跃用户数(UV)

1天(00:00-24:00)之内,访问网站的不重复用户数(以浏览器 Cookie 为依据),一天内同一访客多次访问网站只被计算1次。

  • App 端日活跃用户数(UV)

1天(00:00-24:00)之内,访问App的不重复用户数(以设备ID为依据),一天内同一访客多次访问 App 只被计算1次。

  • 页面浏览量(PV)

网页浏览是指浏览器加载(或重新加载)网页的实例。页面浏览量可以定义为网页浏览总次数的指标。

  • 新增注册用户数

当天注册用户数

  • Web 端新用户数

当日的独立访客中,历史上首日访问网站的访客定义为新用户。

  • App 端新用户数

当日启动 App 的用户中,历史上首日启动 App 的用户为新用户数。

  • Web 端新用户比例

当日的访客中,新用户在所有访客中占的比例。

  • App 端新用户比例

当日启动 App 的用户中,新用户在所有启动 App 的用户中所占的比例。

  • Web 端新用户留存率

在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户。这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位时间(例日、周、月)来进行统计。顾名思义,留存指的就是“有多少用户留下来了”。

  • App 端新用户留存率

在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户。这部分用户占当时新增用户的比例即是留存率,会按照每隔1单位时间(例日、周、月)来进行统计。顾名思义,留存指的就是“有多少用户留下来了”。

  • 访问次数

访客从进入网站/App 到离开网站/App 的一系列活动记为一次访问,也称会话(Session)。

  • 页面退出率

当用户在某个页面结束了该 Session 时即视为退出,所以页面退出率等于退出的页面数除以该页面的总浏览次数。

属性筛选条件说明

1.什么是筛选条件

筛选条件是为了在我们取到的数据集中,通过设置一个条件进行过滤,获取我们最终想得到的子数据集进行分析。用户行为分析平台所有的分析功能中都有筛选条件的选项,均可以实现根据事件的属性进行筛选或根据用户的属性进行筛选。筛选条件可类比于 SQL 中的 where 条件语句,当使用用户筛选条件时, where 条件作用于 users 表;当使用事件筛选条件时, where 条件作用于 events 表

2. 使用流程

在用户行为分析平台所有的分析功能中,我们可以看到搜索、查询等按钮时,代表此处可以对用户或事件进行筛选,具体操作大概如下:

  • 找到带有提示的输入框,可能有一个或者多个

  • 输入完毕后点击搜索或者查询按钮即可,支持模糊查询

3.筛选条件分类

  • 按目标

筛选用户:筛选条件作用于用户表,只看符合筛选条件的那些用户;一般在用户属性上进行条件设置,或者选择用户分群获取符合分析条件的用户。

筛选事件:筛选条件作用于事件,只看符合筛选条件的事件;一般在事件属性上进行条件设置。

登录和菜单介绍

1.登录模块

目前没有注册用户模块,仅有内部用户直接登录;

登录后,在用户行为分析平台的右上角,里面有退出登录等功能。如下图所示:

image-nbUwCmBieQlPldEP

2. 菜单模块

菜单模块新增了收藏功能,最多可以收藏10个菜单,收藏菜单的顺序也可以随意拖动,收藏后的菜单项会添加到左侧菜单栏,按照收藏的顺序显示,不收藏本平台项目,本平台默认在最后一个菜单的位置。同时,菜单也新增了搜索功能,帮助用户快速搜索跳转到自己要跳转的菜单。左侧菜单中,带图标的文字就是每个应用平台的名称。

image-6isvxm0blqylDe8A

A区域:用于切换项目

每次切换不同的项目都会动态生成菜单,您在不同项目收藏了不同的菜单,那么切换不同项目后,就会看到不同的项目菜单。

image-3bscvAgC9m2eNZ8y

如果您切换到没有权限的菜单,会根据所换项目不同的权限来提示您。同时,您切换的项目没有权限直接使用的话,左侧用户行为分析平台的菜单项会被禁用。

1.没有开通产品服务的,用户行为分析平台的菜单不会在左边菜单会展示出来,并且在平台的中间有立即开通按钮,您可以根据按钮指示进行开通。

image-OIZiJhNCAkpWESOp

2.开通了服务后,没有创建数据空间的会展示,创建数据空间按钮

image-URbnTF7zah1JsUkK-5

3.有权限直接使用的会展示,开始使用按钮

image-CL9dRXuoSWEq2pA9-6

B区域: 搜索菜单

在搜索框中,输入菜单关键字,然后点击搜索结果,即可跳转到对应菜单页面了,方便多菜单时快速跳转到想要访问的页面。

image-xWk6gRaBthq2OfDo-7

点击搜索的结果快速跳转到对应菜单页面: image-bRpSFq7uY5lrrnFj-8

C区域:设置菜单

点击齿轮图标后,会出现一个设置菜单的弹窗。

在菜单设置中,点击星号可以添加到收藏菜单中,按住后面的拖动按钮,可以上下拖动菜单顺序,还可以拖动到收藏菜单中,成为收藏菜单。(注意:收藏的产品菜单不能超过10个)

image-IaBOqzCUuNq3rvlu-9

D区域:就是用户行为分析平台的项目菜单

是用户分析平台默认的菜单,不收藏的情况下,默认最后显示,它会和您收藏的菜单一起展示在左侧菜单栏,如果您想访问您收藏的其他项目,可以点击那个项目的名称,展开他们的菜单项,然后点击里面的菜单,会直接跳转到访问其他项目。

功能模块介绍

概览

一、什么是概览?

概览模块实际上是几种具有代表性的数据看板的综合。我们提供了时间控件和平台类型的切换,便于你根据你的需求查看数据的动态展示;我们还对数据于现在和过去同一时段做了对比,满足你对数据时效性的需求。

二、如何使用?

1. 事件源切换

  • 我们提供了Web、iOS、Andriod、Mac、Window、HarmonyOS等6种数据来源平台类型的切换,你可以根据需求切换平台类型,查看不同来源的数据详情,支持多平台查询。

2. 数据对比

  • 页面浏览量、访问设备数、新访问设备数、人均使用时长的数据默认设置了今日和昨日的对比,你可以更便捷的查看数据的变化。

image-dXpwiPdRVDVEStjI-10

3. 查询代表性数据

  • 我们提取了用户量趋势、访问来源等一些具有代表性的单图,你可以通过改变时间控件的时间范围,查看数据的变化情况,且还可以下载表格后查看数据。

image-Y9Akd6LrJzG27Tpw-11

image-LVQEYfTGk4tSuCMT-12

概览数据说明

  • 页面浏览量: 应用下所有页面的浏览量总和(PV)
  • 访问设备数: 统计查询范围内该应用下所有设备数
  • 新访问设备数: 统计查询范围内该应用下所有新设备数
  • 人均使用时长: 访问总时长/访问用户数(UV)
  • 访问设备趋势: 查询范围内该应用下所有设备数的趋势图
  • 页面访问量TOP10: 网站页面访问量分布情况(按PV前十)
  • 设备城市分布TOP10:访问网站的设备在不同城市分布的情况(前10名)
  • 用户使用时段分布:用户在所选时间范围内的各个时段访问的分布情况

数据看板

一、什么是数据看板

看板是将事件分析、漏斗分析、留存分析、用户分群、自定义分析等单图集合在一起,方便用户每天分析数据,既能够从多个图表中发现关联,也可以对单个图表进行深入分析。

二、应用场景

团队中的不同角色的人员对于数据分析的需求不同,比如,市场人员要监控各个渠道来源指标,产品经理要查看产品的PV/UV,运营人员要观察内容转化,数据看板可以很好的满足需求。你可以将不同的单图添加到数据看板中,你也可以查看其他同事添加的看板。

三、如何使用?

1.新建看板

A.在看板列表中点新增,弹出新增看板弹窗

B.填写看板名称,不允许与已经存在的名称同名。

C.提交新建看板

image-Pw8gNJrCmh4T1xYa-13

2.新建图表到看板

A.首先在数据看板详情的模块中点击添加图表按钮

B.点选你想要添加的单图类型(比如事件分析)

C.选择筛选条件进行搜索

D.选中你要添加的单图

E.确认添加单图

image-oki0ac5BPITkAkLj-14

3.所有看板

在看板列表中选中全部,表格列出来的看板包含你所创建的看板和别人创建的看板。

4.删除看板和单图

点击看板列表中的“多点”按钮中的删除看板选项,会删除选中的那个看板。

image-lMAtVg8yfgAmqWCu-15

点击看板列表中的看板名称,进入到看板详情,在详情页头部右上角的“多点”按钮中,点击删除看板选项,也会删除选中的那个看板。

image-ibetSUxYAK35YM81-16

在看板详情中的单图右上角的“多点”按钮中,点击删除,会将该单图从看板中移除。

image-Vy4wE2naEtLmqgQZ-17

6.添加看板描述

点击添加描述按钮,在打开的弹窗中输入描述名称,输入详细描述,点击添加指标按钮可以根据需求添加相应的指标数据,指标可以按照用户分群和设置筛选条件来做过滤。

image-g3p1D8mrMRwEj3lI-18

8.看板页面下载

点击看板页面右上角的“多点”按钮中的下载PDF选项,可以把当前看板的页面以PDF的格式下载到本地。

image-tn8HrZCYdVCqEUZK-19

事件分析

一、什么是事件呢?

用户在产品上的行为我们定义为事件,它是用户行为的一个专业描述,用户在产品上的所有获得的程序反馈都可以抽象为事件进行采集。事件可以通过埋点采集。当然,你可以自定义事件的名称、属性的名称以及个数。

事件:用户在产品上的行为

属性:描述事件的维度

值:属性的内容

二、事件分析能做什么?

事件分析目前可以统计该事件的总次数、触发设备数、触发用户数、触发新设备数、触发新用户数、人均触发次数。根据您的产品特性合理配置追踪事件和属性,可以激发出事件分析的强大潜能,回答关于变化趋势、维度对比的各种细分问题。 针对不同场景下的数据可视化需求,我们提供了事件分析这个功能,通过事件分析创建多样的图表来满足您不同分析场景下的数据可视化需求。

三、 事件分析界面功能简介

在事件分析的功能中,您能够根据自定义上报的事件来创建指标,您可以选择一个指标来进行分析,比如启动应用的总用户数。也可以同时对多个指标进行分析。

注意:事件分析列表中的悬浮框最多只展示10条数据,查看更多数据请点图表进入详情。

image-XxJ2lxuwbsYxgpIp-20

A.填写名称

填写一个友好的有意义的名称,名称不能为空

B.设置指标

image-i73s72ogXNXqVIxQ-21

在设置指标中您可以选择已经定义好的指标**事件您上传埋点方案中**埋点),还可以在设置指标的时候加过滤条件。设置指标中可以选择触发事件的总次数、触发事件的设备数、触发事件的用户数和触发事件的新设备数、触发事件的新用户数以及人均触发事件数。事件是由您埋点之后上报上来的事件。

  • 对于所有事件,都可以分析如下指标:

    1、总次数:在选定时间范围内,统计事件触发的总次数。

    2、触发设备数:在选定时间范围内,按设备ID去重的总设备数。

    3、触发用户数:在选定时间范围内,按UserID去重的总用户数。

    4、触发新设备数:在选定时间范围内,首次触发该事件的总设备数,按设备ID去重。

    5、触发新用户数:在选定时间范围内,首次触发该事件的用户总数,按UserID去重。

    6、人均触发次数:在选定时间范围内,人均触发次数 = 触发总次数 / 触发用户数。

C.细分维度

选择维度

image-CzROCRWkJOpfIoLS-22

维度的选择是对事件或用户属性进行分组,并且只有在单事件指标下才可以选择维度,多事件指标不允许选择维度。

D.公共过滤条件

通过添加过滤条件,可以精细化查看符合某些具体条件的事件数据。

点击“+继续添加过滤条件”,从下拉属性列表中选择需要针对其筛选的属性。

其中"且"处有两个选择:“且”代表查询结果要符合每条过滤条件;“或”代表查询结果只需要符合一条或多条过滤条件

image-JTjC23qQyNXnkXrn-23

点击设置好的过滤条件,弹出筛选条件列表,选择需要筛选的条件以及过滤的值。然后点击确定,查询结果的相应变动,会实时地反映在下方的图表和表格中。

image-FirdPTNb6Yk4x1kT-24

设置公共过滤条件要点

在A处选则事件时,如果对应埋点指标有设置相关的自定义属性,那么在B处会出现相关的自定义属性。

image-Wx8A2EUGUkYuxJyY-25

image-BItI3j7PDqDvdbZf-26

查询相关自定义属性,可到数据接入管理页面中的埋点方案查询,如图所示:

image-tZ8wtriXiEOBIu3d-27

E.选择分析用户群

您可以在[分析用户群]中选择您需要用于分析的用户群,默认不选分群,即所有数据。

所有用户:只包含有用户id的数据

不选分群:除了有用户id的数据,还包含没有用户id的数据

image-rE1HpQHoiVU0Uj6a-28

F.选择图表样式

您可以在[图表样式]中选择您需要的样式,有折线图、柱状图、表格3种,在细分维度结合公共过滤条件的使用有详细图例。

image-4SUJEsEdvhPYmNBC-29

G.选择日期范围和时间间隔

时间间隔

image-T9hzv8D9Bbaba8p7-30

日期范围

image-xfYjmkrqkGWeYklH-31

日期控件选择对应的日期范围,查询的是该日期范围内的数据。注意左边的时间是相对时间,展示的数据会随着时间的推移而推移。右侧直接选择的时间为绝对时间,选择之后则每次获取的数据都固定不变。

时间组件旁边有时间间隔可以筛选,支持用户按小时、按天、按周、按月查看数据。

注:

  1. 按小时是查所选时间段内每天中对应小时的总数据
  2. 按周是查所选时间内所在的周数据(从周一到周天算一周)
  3. 按月是查所选时间内所在的月数据。

image-lPLmDWP0WG14IkhR-32

细分维度结合公共过滤条件的使用

1.查看趋势图数据

适用于查看总体数据趋势

image-eIjb6tpAVBV5Lefp-33

2.查看柱状分布图数据

适用于查看每天总体的数据分布,方便分析比重

image-NmaCd6tI4pAwaFha-34

3.查看表格数据

数据细分更清晰,可以层层递进查看对应数据。

image-fQucRo4YgJvvEEWg-35

点击表格中“带下划线的数据”,可以穿透查看下一层详细的数据

image-uawwZkHtP3fuFMfq-36

点击表格中的“查看”按钮,可以跳转到对应的用户列表详情,查看用户的行为统计、行为路径、使用时长、访问事件的数据量的图表数据。

image-7hU3qprIj6cCiGEZ-37

四、FAQ

1、事件分析里和漏斗里查看的用户数不一致?

答 :事件分析和漏斗分析逻辑不太一致。

漏斗分析

一、什么是漏斗?

漏斗是用户在使用产品过程中,多个关键的用户行为之间的转化及流失。例如电商用户体验流程是搜索商品、查看商品详情、加入购物车、提交订单、付款成功,通过漏斗可以知道多少人加入购物车、多少人提交订单以及付款成功等。

二、如何使用?

1. 创建漏斗

Step1: 在漏斗分析的菜单中,选择新增进入新增漏斗页面。

image-Fshk9ETeGaMEMWxw-38

  • 漏斗名称 必选项。给你的漏斗取一个具有代表性的友好名称。同一项目内,漏斗不可重名。你创建的漏斗对同一数据空间中的其他用户也可见。

  • 漏斗步骤 可选项。一个漏斗中至少包含 2 个步骤,每个步骤对应一个具体的事件。拖动步骤条可以改变步骤顺序。

  • 漏斗步骤添加过滤条件 可选项。每个漏斗步骤都可以根据需要添加过滤条件。

  • 趋势 在趋势中可以选择相邻的两个步骤的转化率、转化用户数和流失用户数来查看步骤的转化情况,默认为总体的转化率且更改后不做保存。

  • 时间范围 可选项。这里有两种确定时间范围的方式,一种以选择从当前时间为终点,选择过去的N天,比如昨天过去7天等等 ;另一种方式是直接在日历选择空间上选择时间范围

  • 转化周期 必选项。默认是7天,可选1天、5天、7天、14天、60天等等,最多可以选择60天 。

选择好各个选项,最后点击左上角的保存按钮就可以看到你新建的图表已经神奇般地展现在漏斗分析的图列表页中。

image-b6EqoIBTaKBJL68l-39

2.查看漏斗

当你完成了创建漏斗的步骤后,恭喜你已经走在了成功的路上,下面就要开始我们的表演。 由于这些图都是选的最近的数据,所以图表显示可能表现不够明显,但是我们可以点击漏斗图表标题进入详情,选择相对合理的时间返回和转化周期继而看到更多不一样的数据。

同时,按用户ID统计时,点击每个步骤的触发设备数或者漏斗的转化设备数可以跳转到用户列表,方便查看该漏斗的相关用户信息。(注:按设备ID统计的不会跳转)

image-emUjXptRQjoFmOfh-40

三、漏斗的计算规则

  • 术语描述 步骤( step ): 由一个事件加一个或者多个筛选条件组成,表示一个转化流程中的一个关键性的步骤; 时间范围( startTime ~ endTime ): 在界面上选择的时间范围,是指漏斗的第一个步骤发生的时间范围; 转化周期( cycle ): 用户完成漏斗的时间限制,也即只有在这个时间范围内,用户从第一个步骤,行进到最后一个步骤,才能被视为一次成功的转化;

  • 规则定义: 假设一个漏斗中包含了ABCD4个步骤,选择的时间范围是 2018 年 7 月 20 日到 2018 年 7 月 31日,转化周期是 7天,那么,如果用户在2018 年 7 月 20 日到 2018 年 7 月 31日触发了步骤 A,并且在步骤 A 发生的 7天内,依顺序依次触发了BCD则视作该用户完成了一次成功的漏斗转化。 在这个过程中,如果穿插了一些其它的步骤或者行为,例如在满足时间限制的情况下,用户的行为顺序是A>X>B>X>C>D>X,X 代表任意一个事件,则该用户依然视作完成了一次成功的漏斗转化。 如果该用户在这个事件限制范围内,依次触发了A>B>C,则该用户没有完成该漏斗的转化,并且会被记作步骤C的流失用户。 考虑一个更复杂的情况,如果一个用户在所选时段内有多个事件都符合某个转化步骤的定义,那么会优先选择更靠近最终转化目标的事件作为转化事件,并在第一次达到最终转化目标时停止转化的计算。假设一个漏斗的步骤定义是:选中商品、点击付款、选择支付方式、支付成功,那么不同用户的行为序列及实际转化步骤,见如下例子:

    例 1:选中商品 --> 点击付款 --> 选择支付方式(银行卡)--> 支付成功。 例 2:选中商品 --> 点击付款 --> 选择支付方式(银行卡)--> 取消支付 --> 选择支付方式(支付宝)--> 支付成功。 例 3:选中商品 --> 查看商品明细 - -> 点击付款 -->选择支付方式(微信)--> 跳转微信 -->支付成功。

四、FAQ

1、漏斗内某事件的人数和事件分析的触发用户数不一致?

答:通常是因为漏斗内的某事件人数,是在漏斗中做了该事件前事件的人数里面筛选出来,而不是从总体人数中筛选出来的。

2、漏斗按天转化率没有总体转化率高?

答:举个例子,比如一共是 10 个人,然后这 10 天里,每个人依次触发依次漏斗,按天分布的话,这个转化率就是 10%,但是这 10 天的总体就是 10 个人触发了 那就是 100%。

留存分析

一、什么是留存?

用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户,可以充分展示出用户的活跃度以及在一段时间内,用户是否完成期望行为的留存情况。

二、如何使用?

1、进入留存分析界面,点击右上角"新增"按钮,创建留存。

在A区域:输入适当留存名称,具有一定代表性,然后输入备注,具有一定提示性,让其他成员了解你建图的意图。

在B区域:可以选择初始行为和留存行为,比如初始行为是开启应用,留存行为是关闭应用,然后可以选择留存窗口期(默认为7日留存)、统计类型、公共过滤条件和用户分群等。

在C区域:右上边选择相应时间(默认为过去7天)

在D区域:点击右下角"确定"按钮即可。

image-HYtl9p5XKc907BXu-41

2、进入留存分析界面,可以查看所新建留存图表

A区域:切换数据空间

B区域:是一个搜索功能,直接输入留存单图名称,快速找到新建单图。

C区域:是一个查看留存单图详情的功能,点击图表标题即可进入留存单图详情页

image-d0FRcn9e6BQmQdXc-42

3、进入留存单独详情页

A区域:是用户留存图表的展示数据,即是下方留存表格横向第一行数据。

B/C区域:是一个时间范围选择器和留存窗口期,留存窗口期控制的是用户留存图表x轴展示的天数,可以选择次日留存、7日留存,14日留存、30日留存,时间范围选择器控制的是留存趋势图表x轴展示的时间范围,当然下方表格也会根据所选择时间范围和留存窗口期重新渲染。

image-JDin4jRYhhyboLDF-43

三、计算规则

  • 留存分析主要包括3个重要维度的计算:目标用户,周期转化率以及转换人数/设备,每一天的周期转化情况。
  • 周期转化率 分别计算从出周期内的每一天的转化率,比如,转化周期为7天,那么将产生7组数据,分别为第一天的留存人数和转化率,第2天的留存人数和转化率,......第7天的留存人数和转化率
  • 目标用户 通过用户分群过滤的用户或所有用户。
  • 每一天的留存率 计算的是从触发起始行为的时刻起,往后的每一天(在留存周期范围内)的留存人数,和留存率

页面分析

一、什么是页面分析?

页面分析是采集用户在网站上页面的埋点,可以统计出页面的访问次数、访问人数、退出率、作为入口页次数、作为退出页次数等一些页面数据,让产品设计人员、运营人员能更加直观的对比和分析用户所在页面聚焦度。

二、有哪些应用场景?

以注册流程为例,我们可以通过页面分析功能清楚的看出用户从哪个页面退出的人数最多,从而优化注册流程。也可以通过区域分布图看到哪个区域的访问次数最频繁,可以加强对这些地区的运营,从而获得更多的注册用户数。

三、如何使用?

开发人员在网站中的页面进行埋点,对于如何确定一个页面,我们使用routerMode、hashpath、pathname、href的形式。routerMode标识页面的路由方式,对于vue单页应用的路由方式是hash,对于传统的web应用,路由方式是histtory。对于另外三个字段,可以在Chrome的控制台中输入window.location,其中的hash对应的是hashpath的值,pathname对应的是pathname的值,href对应href的值。

页面分析概览

进入行为分析的菜单下,点击页面分析,我们就会拉出开发者埋了点的页面,并展示出数据。

image-lFambFYhNWaWhNil-44

在A处:可以切换数据空间

在B处:可以切换不同平台的数据,默认展示为WEB的概览;

在C处:可以筛选查询的时间

在D处:可以切换指标,展示不同指标的数据。

下方的图表是查看某个页面的详细信息,可以通过E处的搜索快速检索想要查看的页面,点击F处可以进行页面的切换,右侧的图表也会随之改变。

image-aRB4EkXwcMXZsei4-45

  • 页面分析数据汇总处各个指标解析:

1、访问次数:网站所有页面访问量的总和(PV)。

2、访问人数:访问应用所有页面的用户数(UV)。

3、退出率:页面退出应用的次数总和/该应用页面总访问量(PV)。

  • 页面列表区各个指标解析:

1、页面ID:指埋点ID,即上报事件中的vid,具体是指所在空间下用户上报事件类型s_event_type为pageview的埋点ID(web端可以取页面链接地址,原生端可以取页面对应的类名信息作为页面埋点ID)。

2、页面名称:指埋点名称,具体是指所在空间下用户上报事件类型s_event_type为pageview的埋点名称(用户可以取页面信息所包含的备注名称作为页面埋点名称)。

3、页面PV:指特定时间范围内,该页面的加载次数PV。

4、页面UV:指特定时间范围内,该页面的用户数(UV)。

5、作为入口页次数:指定时间范围内,从该页面进入其他页面的次数;衡量该页面导流到其他页面的能力效果。

6、作为退出页次数:指定时间范围内,从该页面退出项目次数。

7、退出率:指定时间范围内,从当前页面退出项目的次数/该页面PV;退出率越高,说明该页面可能存在优化的空间

版本分布

一、什么是版本分布?

分析用户版本更新迭代,监控各个版本用户量、更新情况,评估版本迭代效果;版本分析报告,分版本聚合展示该版本的新增用户、老用户、启动次数;反应不同版本的用户增长趋势与现有用户体量,对于研发及运营的版本维护策略、与运营倾向性确定具有指导意义。

二、版本分布概览

在A域:可以随时随地的切换数据空间

在B域:可以选择想要查看的平台,默认是查看IOS。

在C域:可以选择想要查看的时间范围。

下方图表中,全量设备版本分布展示的是已发布的应用版本中使用设备最多的前10,新设备版本分布是指设备首次安装时使用的应用版本,展示设备最多的前10。

image-pSMgbfsEJ3qL4p81-46

在图表的下方可以看到所有版本的详细信息以及支持导出所有数据,点击版本设备数还可以跳转到用户列表,查看这个版本的用户信息。

image-zgKSH8AUesBXwcZ6-47

用户列表

一、什么是用户列表?

用户列表是可以显示对应应用的用户列表。

二、有哪些应用场景?

用户列表功能十分实用,它可以准确的反应出用户与应用的使用过程,用户体验,可以对用户进行更加高效管理。

用户的总人数,第一页默认显示10条用户数据,可以输入用户分群,用户ID,用户名称,自定义列目进行查找;可以对用户进行用户分群;可以对单个用户进行分析等。

三、如何使用?

1、进入用户列表页,你可以看到当前数据空间下的用户列表,如下图所示:

image-PiAOqdR6VMt4sUTw-48

  • A区域:切换数据空间
  • B区域:这里是一个搜索功能,可以根据选择的用户群,输入的用户ID,用户名称和自定义列目进行相应搜索,找到你想要的用户数据
  • C区域:左边的按钮可以选择需要展示列表的列目,选择完成后点击保存即可。点击中间的下载按钮,即可导出当前表格数据,并生成相应Excel表格

2、点击用户列表的用户ID或用户名称进入到用户列表详情页,可以查看该用户的详细数据信息,如下图所示:

image-yfY2qUd7NaeyaMt3-49

点击"行为路径"按钮,可以显示该用户进入对应应用的行为路径,如下图所示:

image-cJqW39eg1EohgZ2p-50

点击具体的行为路径,可以显示该行为的详细信息,如下图所示:

image-bl5TGevy9OlI3Ery-51

点击事件下拉框,可以选择单个事件(即埋点)进行查看,如下图所示:

image-c6OSR2IVhRSNgaXs-52

点击使用时长按钮,可以显示该用户的使用时长数据,如下图所示:

image-JugwwoYF5eFZtomN-53

用户分群

一、什么是用户分群?

用户分群即将用户标签化,把具有相同特征 / 行为的用户进行聚类,是精细化运营的基础。在后续分析中可对比分析不同人群同一指标的表现,发现背后的影响因子,指导产品优化方向,或者针对不同的用户群匹配不同的服务和内容,进行个性化运营。

二、有哪些应用场景?

用户分群,可以帮助我们关注符合某些条件的一部分用户,不仅可以了解他们的整体行为,还可以知道具体是哪些人符合这些条件,它能帮助我们对差异较大的群体分别进行深入分析,从而探究指标数字背后的原因,探索实现用户增长的途径。

三、如何使用?

1、用户分群列表

image-2kCDuWKU3N3KOBup-54

  • A区域:可以切换数据空间
  • B区域:可以输入分群名称查询相应的用户分群,支持模糊查询
  • C区域:点击新建按钮,可跳至新建分群页面,点击旁边的logo可以刷新表格数据
  • D区域:点击删除按钮,在弹出的确认弹窗中,可查看引用了该分群的各类图表总数和事件分析、漏斗分析、留存分析、数据看板描述的图表引用数量,点击图表数量可跳转至相应的列表页(即下图中的E区域带下划线的数据),如下图所示:

image-0pEn4JenAze2dYGq-55

2、新建分群

在新建分群页面,可选择用户属性和触发事件来满足不同的分群需求,如不选择用户属性和触发事件直接预览则新建的是所有用户的分群。选择好满足条件后点击保存分群按钮,输入分群名称,点击确认按钮即可新建分群成功,如下图所示:

image-5h5Ry520sal3eZTy-56

3、分群详情

点击分群名称即可进入相应用户分群的详情,如下图所示:

image-wVjGIWKqejlG4aOX-57

在用户分群详情可以查看用户列表、用户画像和行为偏好信息,满足条件发生变化,点击右上角的预览后可保存变更后的用户分群满足条件。另外,可以在用户列表、用户画像和行为偏好导出所需的图表数据,如下图所示:

满足条件变更后预览分群,点击旁边确定按钮保存分群

image-3GjRivnc3eEPDY07-58

导出用户列表:

image-BTjh5q4FSLj0Y5oX-59

查看用户画像:

可以点击右边时间框,筛选时间,查看所需画像数据

image-9NyuunqCDwh5c6yp-60

查看行为偏好:

可以点击右边时间框,筛选时间,查看所需的行为偏好数据

image-jLLnvHC7VNRqToWA-61

自定义分析

一、什么是自定义分析?

自定义分析是帮助用户个性化需求而存在,主要用于:支持开发自助写查询SQL,生成对应的视图;

二、有哪些应用场景?

该模块用于支持用户自定义查询语句和条件,满足个性化需求。

三、如何使用?

1.申请数据表

自定义分析的SQL语句中的表,需要提前在“数据表管理”申请通过可用才行,否则新增的自定义分析会没有图表数据。

image-YVsNIKIGt9f7KaL3-62

2.创建自定义分析

点击新增按钮,填写名称、设置时间(可选)、图形等,然后在下半部分编辑区自定义一些数据库查询语句,先执行SQL,可以得到SQL查询的结果,如果需要切换折线图或者柱状图,可以在SQL下方设置行列字段,然后点击生成视图即可预览图表,点击确定即可新增自定义分析图表,如下图所示。

注:SQL查询的表需要在数据表管理提前申请通过才可用,否则会报错,图表查询不到数据。如果创建图表时, 需要使用上方时间组件的时间时,必须在SQL条件中手动添加时间参数的引用: '${startDate}'、'${endDate}'。

Ng1wkuJrcU6VwdQQ-63

image-dQPLEABsFcH1tqRE-64

image-pjq5DAlsYrXMdTpR-65

数据接入管理

一、什么是数据接入管理?

在正常使用项目数据之前,需要进行数据接入,这个过程需要产品、运营、数据分析师、工程师等多方协作。

二、有哪些应用场景?

数据接入管理,用于管理团队所接入项目上报的埋点方案(包含埋点、自定义属性、系统预置属性的管理)、集成的SDK方案(包含Web、安卓、iOS端的SDK接入方案说明)、数据验证结果的数据分析。

埋点:用于项目的数据上报

自定义属性、系统预置属性:可以通过和相关埋点绑定(埋点默认绑定系统预置属性),然后在选定相关埋点事件时,事件细分维度和事件的公共过滤条件的属性设置里

集成的SDK有三端的输入方案:Web、安卓、iOS端的SDK接入

数据验证:用于上报的埋点数据是否上报成功,分析上报数据错误原因

三、如何使用?

1、埋点

image-trDsbJqeYpeoGcd9-66

  • A区域:在此区域可以根据埋点ID或名称、是否启用进行查询,查询出相应的埋点列表。
  • B区域:导出埋点按钮,可以导出所展示的埋点列表。点击上传埋点方案按钮可以批量上传埋点方案,同时可以设置与埋点相关的自定义属性
  • C区域:可以刷新列表数据
  • D区域:点击图片可以查看该埋点详情,比如过去7天内的触发次数,以及上报的数据是否正确。
  • E区域:点击按钮可以修改埋点的配置。比如埋点名称、是否启用以及配置埋点属性等等。

上传埋点方案

点击上传埋点方案按钮,会有埋点方案事例模板,帮助用户正确的上传埋点方案

image-nLmVoFS9tKVclXD2-67

上传埋点方案的时候,也可以关联一些自定义属性,方便后期过滤分析用户行为

注:埋点相关联的自定义属性需要在自定义属性提前设置好,才可以关联成功

image-rGK84rZuqAkndrMw-68

埋点详情

点击左侧菜单中的数据接入管理,进入到它的管理页面 => 埋点方案 => 埋点 => 表格行图标,可以弹出埋点详情弹窗。如下图所示:

image-WEfPqRAVs19lzvP6-69

埋点详情中,有分析埋点过去7天的触发情况,数据校验情况以及埋点和哪些自定义属性相关联

(此处是自定义属性,因为系统属性是默认的,每个埋点都可以直接使用的,不用手动关联系统属性)

image-I563Oq5k4qKzhuE8-70

埋点设置:

属性管理部分是设置埋点相关的自定义属性,需要提前关联好,否则上报埋点的时候,数据校验就会不通过,如下图所示:

image-wn4ORXf88AQxkKMm-71

image-wn4ORXf88AQxkKMm-72

2、属性管理

自定义属性:用户可以自己按照一定规则添加埋点属性,提供给埋点使用,还可以修改和编辑。

注意:自定义属性最多可以设置100个自定义属性,请谨慎设置自定义属性,以免浪费额度。

查看自定义属性列表:

可以查看自定义属性的序号、名称、ID、关联埋点数量,还可以查看它更新的信息。

image-n134T4d1Rxkm6iUM-73

新增自定义属性:

点击新增属性按钮,可以新增以c开头的自定义属性(必须是以c开头),属性名称不能同名

image-n134T4d1Rxkm6iUM-74

修改自定义属性:

点击自定义属性列表中,每行的多点按钮,可以弹出属性设置窗,字段名称不满意的时候,您可以再次修改属性名称,方便您更好的使用自定义属性,帮助您后期更好的筛选出您想要的数据。

注:属性名称不能同名

image-PGy9k2bUmQnoTXcW-75

自定义属性列表数据用途:

可以用在每个带有过滤条件的页面中,选定和自定义属性相关联的埋点后,在公共过滤条件选中事件后,属性下拉框可以出现埋点相关的自定义的属性,提供给对应的埋点筛选条件查询数据。

如:

1.事件分析中的细分维度和公共过滤条件:

image-PGy9k2bUmQnoTXcW-76

2.漏斗分析中的过滤条件

image-OJK385lRPu7uIuR6-77

3.留存分析中的过滤条件

image-OJK385lRPu7uIuR6-78

image-0S5hHl7aiDZnF4Tx-79

自定义属性可以用在事件的细分维度和事件的公共过滤条件的属性设置里,如下图所示:

image-0S5hHl7aiDZnF4Tx-80

image-gsmWnaKEMYcwg9KS-81

系统预置属性:平台自带的一些埋点属性,可以满足大部分需求。无法进行修改和编辑。

注:系统预置属性ID都以s_开头

image-gsmWnaKEMYcwg9KS-82

3、集成SDK

可以查看三端的sdk集成流程

image-eCdCPNYPWWDoEcgw-83

4、数据验证

埋点上报的数据可以在这里查看是否符合格式,仅支持最近7天内上报的数据。

image-eCdCPNYPWWDoEcgw-84

  • A区域:可以切换数据空间
  • B区域:可选择全部或者任意埋点进行过滤,也可以通过时间选择框选择7天内的任意一天进行查看
  • C/D区域:点击符合或不符合,可以跳转到相应的界面,查询上报的数据验证结果。在跳转后的界面也可以通过筛选埋点和关键字进行过滤,如下图所示

image-bCmQcNWBic83kCeA-85

查看不符合格式的数据时,可以看到每条数据校验失败的原因,如下图所示

image-bCmQcNWBic83kCeA-86

报错信息提示解析

  1. vid未注册:指的是所上报的埋点id没有在数据接入管理的埋点方案中注册。
  2. 自定义字段未注册或字段未绑定埋点: 指的是所提示的字段并没有在数据接入管理的自定义属性表中注册(新增),或者自定义字段已经在数据接入管理的自定义属性表中,但所上报的埋点并没有设置所报错的自定义属性字段(即埋点未设置对应属性)
  3. 上报的字段过多或者过少: 指的是所上报的sdk基础字段有缺少或增多,而上报的基础字段不能过多或者过少
  4. userId不能为空:指的是上报用户信息时,用户id不能为空

数据表管理

一、什么是数据表管理?

在正常使用项目数据之前,需要进行数据接入,这个过程需要产品、运营、数据分析师、工程师等多方协作。它主要用于管理自定义分析使用的相关表,即自定义分析的SQL语句中使用的数据库中的表需要提前申请审核通过,方可使用。

二、有哪些应用场景?

该模块用于管理自定义分析使用的相关表、索引,支持hive、es数据源。

相关说明

是否预置: 用户行为分析自带的表标识为预置,用户添加的为非预置。

权限:分为未授权、已授权、可用

三、如何使用?

点击新增按钮,选择需要接入的数据源。如果是hive数据源需要上传认证文件。es只需要账号密码即可。校验通过以后就可以添加数据表或者索引名称。添加完成以后是未授权状态,需要提单联系数据湖的同事,把添加完成的表授权给用户行为分析平台。平台会定时刷新状态,只有可用状态下的表、索引才能在自定义查询中使用。

A区域:切换数据空间

B区域:可以新增非预置的数据表(预置的表系统默认设置好的,不用手动新增)

image-RP99OKB7mFz9uR7Z-87

RP99OKB7mFz9uR7Z-88

image-BiJDZVbCXCB8iYVy-89

image-BiJDZVbCXCB8iYVy-90

image-BiJDZVbCXCB8iYVy-91

数据表权限通过后,可以在自定义分析使用,如图所示:

image-46ZVsDPCuqCCBUee-92

image-46ZVsDPCuqCCBUee-93

APM性能分析

一、什么是?

APM性能分析是通过对核心性能指标 (HTTP请求、页面访问速度、JS报错、崩溃、卡顿等)的异常事件采集、监测,来评估APP整体的用户体验状况。

二、有哪些应用场景?

帮助用户查看所选项目iOS、安卓、Web端的异常数据。它们的数据类型如下:

Web端有:HTTP请求、JS报错、页面访问速度,共3种异常数据类型

安卓/iOS端有:HTTP请求、JS报错、崩溃、卡顿、页面访问速度,共5种异常数据类型

三、如何使用?

1、明细

image-0UsKl1qdQuDaVj3K-94

A区域:可以切换数据空间

B区域:切换apm性能分析的数据端平台

image-0UsKl1qdQuDaVj3K-95

C区域:不同的指标类型

D区域:设备ID、用户ID、用户名称和时间范围来进行过滤筛选

E区域:下载导出表格数据,最多支持导出1万条数据。

平台切换为Web端(Web、Mac、Windows)时: 可以选择HTTP请求、JS报错、页面访问速度三种类型的指标,可以通过设备ID、用户ID、用户名称和时间范围来进行过滤筛选,点击右上角的下载按钮可以将数据下载到本地,最多支持1万条。

image-j5iOJRtT9Q2bj7NM-96

平台切换为安卓(Android、harmony)/iOS时: 可以选择HTTP请求、JS报错、崩溃、卡顿、页面访问速度这五种类型,同样支持通过设备ID、用户ID、用户名称和时间范围来进行过滤筛选,点击右上角的下载按钮可以将数据下载到本地,最多支持1万条。

image-j5iOJRtT9Q2bj7NM-97

2、统计

A区域:可以切换不同数据空间,查看不同空间下各平台和整体的崩溃和网络请求情况

B区域:可以根据时间查看对应时间内的各平台(移动端)和整体的崩溃和网络请求情况情况

image-UKLNlzgNUreEOx2N-98

image-UKLNlzgNUreEOx2N-99

数据空间管理

在正常使用项目数据之前,需要进行数据接入,这个过程需要产品、运营、数据分析师、工程师等多方协作。即必须先开通数据空间才能使用用户行为分析平台。

1、数据空间列表

在每个菜单页面的第一个条件框,展开空间下拉框,点击数据空间管理旁边的图标或者数据空间管理的文字,可以进入数据空间管理页面。

image-kFyaKHWFvqCfWbg4-100

数据空间管理可以查看所选项目下所有创建的数据空间,可以通过数据空间名称进行检索,支持模糊匹配,可以新增数据空间,还可以设置SDK开关。

image-kFyaKHWFvqCfWbg4-101

2、SDK开关

可以在空间管理的右边按钮配置上报开关,修改配置以后不会实时生效,需要重启/退出应用才能生效。如下图所示

image-kFyaKHWFvqCfWbg4-102

注:默认APM开关不打开,行为开关都打开

image-kFyaKHWFvqCfWbg4-103

results matching ""

    No results matching ""