神策中如何进行用户关联
神策中关于几个id的整理:
1、如何确定神策中的distinct_id:若用户没有登录,就是device_id(first_id);如果用户已经登录,则显示为登陆ID(second_id),用户在账号体系中的唯一标识。
2、users表中的3个字段
字段名 | 说明 |
---|---|
id | 神策ID,对应events表中的user_id |
first_id | 设备id,device_id |
second_id | 登录id;登录后才有,也就是distinct_id |
传统方法缺陷
WHY
用户关联的注意事项
- 调用事项:用户登陆和注册的时候进行调用
- 调用规则:前后端在用户登陆注册的时候要同时调用;前端可能数据丢失,所以后端也要进行调用
- 先调用用户关联,再进行登录注册事件的采集
具体操作
客户端的用户关联:
服务端的用户关联:
代码语言:javascript复制# distinct_id 表示用户 is_login_id 布尔类型,表示用户是否登录,event_name 事件名,properties 事件属性
sa.track(distinct_id, is_login_id,event_name,properties)
- 如果是登录用户的行为:传入的值必须是登录ID:registerID,设置成True
- 如果是匿名ID产生的行为:传入的是deviceID
用户关联校验
如何识别未关联的用户
1、匿名用户触发的某个事件
2、指定distinct_id
3、查看用户信息
登录ID未知,说明匿名ID还没和任何一个登陆ID进行关联
4、查看具体信息(Hue中脚本查询,users表中)
代码语言:javascript复制select * from users where first_id = "******" -- first_id就是设备ID,second_id就是登陆ID,关联之后才有
目前没有登陆ID
5、用户登陆后会关联到登陆ID
比如$signup事件:此时distinct_id就是用户登陆ID
通过SQL查询的结果:
此时表示已经成功关联。用户关联之后无法更改,神策采用神策ID(上图的第一个字段id来进行识别)
神策ID在用户表中是id字段,事件表中是user_id字段
代码语言:javascript复制-- events表:查询某个用户的各种行为操作
select
user_id,
distinct_id,
event,
time,
$lib
from events
where user_id=1234567890
order by time
代码语言:javascript复制-- users表:查询用户的相关个人信息
select
id,
first_id, -- 设备ID device_id
second_id, -- 登录ID distinct_id
$device_id_list, -- 设备列表
EPOCH_TO_TIMESTAMP(register_time / 1000) `register_time` -- 注册时间$signup_time
from users
where second_id in ('12345','987654')