背景
通常在移动端 APP 的数据统计分析中,用户在未登录的情况使用 APP 都会被赋予一个基于设备标识 ( 例如 IDFA , AndroidID ) 的访问用户 ID ,在登录后会被 APP 端根据账号信息赋予一个全局唯一的登录用户 ID ,基于访问用户 ID 或登录用户 ID , 数据平台可以轻松的统计出该用户在 APP 端的访问情况。
但是移动端的灵活导致了同一用户可以在多个设备上登录同一 APP , 也可以在同一设备上登录不同的账号,这些行为导致在做移动端数据分析时,会遇到下列几个问题:
同一个登录账号跨设备访问的问题
登录行为和非登录行为无法串联分析的问题
设备与登录账号多对多关联的问题
如何正确识别多个登录用户 ID 或访问用户 ID 的行为归属?如何将某个用户在多设备或多账号下的行为数据归一,是移动端统计的难题。
一般情况下都会建立两套 ID 系统来解决上述问题,将多个设备的登录用户 ID 或访问用户 ID 映射到一个统计 ID 上, 将每个用户 ID 下的用户行为统计数据都累计到统计 ID 上,这样一个用户跨账号或跨设备的行为可以被正确的统计。
常用解决方案
对于存在两套id系统时,通常的处理办法是维护一张 ID 关系表 (mapping_table)。
如上表,访问数据 (例如 访问,点击,页面浏览)中的ID是访问用户 ID , 先基于访问用户ID 计算出每个访问用户 ID 的数据 (pv_table)。
然后和关系表通过访问用户 ID 做 join。
select statistics_id, sum(pv) pv from (
(select visit_id, pv from pv_table) A
join
(select visit_id, statistics_id from mapping_table) B
on A.visit_id = B.visit_id
) T
group by statistics_id