BitMap 转置算法:不一样的 count 求解方式

本文介绍了在移动端数据分析中,如何利用Bitmap的转置算法高效地解决大数量级下的ID转换问题,以替代传统join操作,提高计算性能。通过CBitmap存储映射关系,结合位运算进行数据统计,实现了在500万到1500万数据规模下的显著性能提升。
摘要由CSDN通过智能技术生成

背景

通常在移动端 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值