1. badcase 探索
1.1 一个fid对应多个品牌
这样的指纹一般都有问题
select fid, count(1)
from (
select fid, brand
from test.table_name
group by fid, brand
) t
group by fid
having count(1)>1;
1.2 同一用户、同一场景、同一时间上报多次情况
select user_id, user_scence, msg_upload_time, count(1)
from (
select user_id, user_scence, from_unixtime(cast(msg_upload_time/1000 as bigint),'yyyy-MM-dd HH:mm:ss') as msg_upload_time
from test.table_name
) t
group by user_id, user_scence, msg_upload_time
having count(1)>1;
1122
2. 召回分析
基于线上指纹召回真实数据情况,统计设备指纹命中策略及其对应分布,及子指纹覆盖度,分析指纹召回准确性及是否存在过度召回等情况。
2.1 首次匹配到的子指纹分布
|
策略编号 |
策略规则 |
cnt |
rate |
备注 |
|
gk2 |
A + B1 + C1 |
15310 |
46.23% | |
|
新设备 |
9631 |
29.08% | ||
|
gk1 | A + B2 + C2 |
7508 |
22.67% | |
|
gk6 | A + B3 + C3 |
654 |
1.97% |
2.2 匹配到的多个子指纹分布
备注:A、B等指标覆盖度高,唯一性也相对较高。
|
策略编号 |
策略规则 |
子指纹匹配数量 |
匹配率 |
备注 |
|
gk8 |
A + B + C |
23469 |
70.86% | |
|
gk10 |
A + B1 + C1 |
23464 |
70.85% | |
|
gk2 |
22816 |
68.89% |
2.3 指纹表命中结果解析
指纹命中结果字段res1存储35个子指纹是否匹配的情况,是一个长度为35位的字符串,
需要通过sql解析出,每一个子指纹是否匹配,以及命中(从前往后第一个匹配)的子指纹。
-- select '00000111010000100000000000000000000' as res1
select t.*,
coalesce(gk1_res, gk2_res, gk35_res) as res1_new -- 第一个非null的
from (
select t1.*,
if(split(res1, '')[0]='1', 'gk1', null) as gk1_res,
if(split(res1, '')[1]='1', 'gk2', null) as gk2_res,
if(split(res1, '')[34]='1', 'gk35', null) as gk35_res
from test.table_name
where length(res1)=35 or res1=''
) t;
文章探讨了设备指纹数据库中遇到的问题,如一个FID关联多个品牌和同一用户多次上报。同时,作者对召回分析进行了深入研究,包括首次匹配子指纹分布、多个子指纹分布和指纹命中结果解析,以评估策略准确性和效率。
2853

被折叠的 条评论
为什么被折叠?



