分析主体说明

1 分析主体概述

在Quicktracking中,分析主体目前主要分为设备ID、账号ID和实体ID(在分析中如下图所示)。

  • 设备ID:QuickTracking为每一台设备生成的应用级别唯一ID

  • 账号ID:由您通过接口传入的用户账号,用于定义您用户的唯一ID

  • 实体ID:Quick Tracking自主生成的用户标识,通过ID-Mapping将设备ID和账号ID进行关联,实现账号登录前后行为的打通。

1.1 分析模型中分析主体的选择

  1. 在事件分析中,分析主体的选择在“预置指标”中:

image

  1. 在漏斗分析、留存分析、分布分析、间隔分析模型中,分析主体的选择在“分析主体”中:

image

  1. 在session分析、路径分析和归因分析模型中,分析主体仅为设备ID。

  1. 在人群管理,新建人群时,分析主体仅为实体ID。

1.2 系统属性和用户属性中分析主体的区别

属性类别

分析主体

分析含义

系统属性

设备ID

存在于事件表中的设备ID值

账号ID

存在于事件表中的账号ID值

实体ID

存在于事件表中的实体ID值

用户属性

用户账号(账号ID)

存在于用户表中的账号ID

常见问题:

  1. 什么是事件表?

埋点上报的日志将会存入事件表中,即事件表保存的为埋点上报时上报的实际值,以及通过账号ID或设备ID生成的实体ID。如果上报日志存在账号ID则该条日志就有账号ID,如果上报日志没有账号ID则该条日志就没有账号ID。

  1. 什么是用户表?

    1. 埋点上报的日志中若包含账号ID,则会在日志存入事件表的基础上,将账号ID和实体ID存入用户表。

    2. 埋点上报的日志中事件编码为“$$_user_profile”,则会在日志存入事件表的基础上,将该事件的事件属性作为“用户属性”存入用户表。

  1. 系统属性中的账号ID与用户属性中的用户账号有什么区别?

    1. 系统属性中的账号ID查询的为事件表中的账号ID

    2. 用户属性中的用户账号查询的为用户表中的账号ID,是通过事件表中的实体ID在用户表中关联查询到的。

2 设备ID

2.1 App设备ID

Android设备和iOS设备的默认设备ID为应用级别唯一的设备ID,由Quicktracking自动生成

  • Android9及以下设备:SDK自动采集imei、wifimac、androidid、SN生成设备ID,生成后存入本地,只有删除应用获取删除应用数据才会重新生成设备ID。

  • Android10级以上设备:SDK自动采集oaid、gaid、androidid、SN生成设备ID,生成后存入本地,只有删除应用获取删除应用数据才会重新生成设备ID。

  • iOS设备:SDK自动采集openudid生成设备ID,生成后放入keychain中,只有恢复出厂设置才会重新生成。

  • 使用手机的C端用户同意采集idfa和oaid,QT SDK才会采集,只有app SDK可以采集到oaid、gaid、imei、wifimac、androidid、SN、idfa、idfv。

iOS C端客户需要开启下述配置,SDK才可以采集到idfa

image

android C端客户需要开启下述配置,SDK才可以采集到oaid

image

具体可查看Android SDK集成文档iOS SDK集成文档

2.2 小程序设备ID

小程序设备ID需要通过开发者获取上传

  • 设备ID指各个小程序官方生成的唯一ID(例如微信的openid)

  • 上传方式为赋值给"_anony_id"

//如采集用户ID是异步行为,需要先阻止SDK上报,设置BLOCK埋点
aplus.aplus_queue.push({
 action: 'aplus.setMetaInfo',
  arguments: ['_hold', 'BLOCK'] 
});

// 设置 _anony_id
aplus.aplus_queue.push({
 action: "aplus.setMetaInfo",
  arguments: ["_anony_id", "您获取的openid"]
});

 // 因为采集用户ID是异步行为,故需要先设置BLOCK,再设置START
 // 设置_hold=START后,事先被block住的日志会携带上用户信息逐条发出
aplus.aplus_queue.push({
 action: 'aplus.setMetaInfo',
  arguments: ['_hold', 'START'] 
});

具体可查看小程序 SDK集成文档

2.3 Web/H5设备ID

Web/H5设备ID有Quicktracking自动生成开发者手动上传两种方式:

  • 自动生成:默认逻辑,Quicktracking SDK通过获取到的浏览器cookie等参数生成设备ID,网站的设备ID只有浏览器发生变化或用户主动清除cookie和缓存时,设备ID会重新生成,用户的浏览器和IP地址不变的情况下,重新生成的设备ID不会发生变化。

  • 手动上传:上传方式为赋值给"_dev_id"

//如采集用户ID是异步行为,需要先阻止SDK上报,设置BLOCK埋点
aplus.aplus_queue.push({
 action: 'aplus.setMetaInfo',
  arguments: ['_hold', 'BLOCK'] 
});

// 设置 _dev_id 
aplus.aplus_queue.push({
 action: "aplus.setMetaInfo",
  arguments: ["_dev_id", "自定义设备ID"]
});

 // 因为采集用户ID是异步行为,故需要先设置BLOCK,再设置START
 // 设置_hold=START后,事先被block住的日志会携带上用户信息逐条发出
aplus.aplus_queue.push({
 action: 'aplus.setMetaInfo',
  arguments: ['_hold', 'START'] 
});

具体可查看Web/H5 SDK集成文档

3 账号ID

3.1 App账号ID

App端调用固定的API即可上传用户账号。

  • Android:

//登录API
public static void onProfileSignIn(String ID);
//登出API
public static void onProfileSignOff();

//示例
MobclickAgent.onProfileSignIn("userID");
MobclickAgent.onProfileSignOff();

  • iOS:

//登录API
+ (void)profileSignInWithPUID:(NSString *)puid;
//登出API
+ (void)profileSignOff;

//示例
[MobClick profileSignInWithPUID:@"UserID"];
[MobClick profileSignOff];

具体可查看Android SDK集成文档iOS SDK集成文档

3.2 小程序账号ID

小程序用户账号上传

用户登录时,和在登录态进入时,都需要上传

aplus_queue.push({ 
 action: "aplus.setMetaInfo",
 arguments: ["_user_id", "您获取的用户会员ID"]
});

具体可查看小程序 SDK集成文档

3.3 Web/H5 账号ID

web用户账号上传

用户登录时,和在登录态进入时,都需要上传

aplus_queue.push({ 
 action: "aplus.setMetaInfo",
 arguments: ["_user_id", "您获取的用户会员ID"]
});

具体可查看Web/H5 SDK集成文档

4 实体ID

实体ID是通过将账号ID与设备ID进行关联后的唯一ID(EID),通过EID可以将小程序、H5和App关联至唯一用户。具体例子如下:

image

  1. App 设备A第一条日志进入数据库时,为其生成唯一EID_1。之后用户进行的浏览事件也会携带该EID。

  2. App 设备A触发了登录事件,上传了用户账号“188*”,QT将设备A、账号188*与EID_1进行绑定,所以第一条日志和“浏览事件日志”可以与账号188*关联。

image

  1. 小程序设备B第一条日志进入数据库时,为其生成唯一EID_2。用户使用账号“188*”登录后,因为“188*”已经和“EID_1”绑定,所以设备B的EID_2变为EID_1,之后设备B、账号188*与EID_1进行绑定。

5 字段流转

代码示例字段

SDK上报日志字段

ods层字段

dwd字段

App-设备ID

umid

utdid

utdid

小程序-设备ID

_anony_id

umid

utdid

utdid

web-设备ID

无或_dev_id

umid

utdid

utdid

App-用户账号

puid

active_user:{puid:""}

active_user:{puid:""}

ll_userid

小程序-用户账号

_user_id

active_user:{puid:""}

active_user:{puid:""}

ll_userid

web-用户账号

_user_id

active_user:{puid:""}

active_user:{puid:""}

ll_userid