背景
在之前的文章中,我们介绍了纳米镜的功能和背后的分析算法,而闲鱼目前业务线多且复杂,怎么构建一个可扩展性强的数据分析系统,使每个业务线都能够便捷地接入,成为首要关注的问题。
分析思路
▐ 标准数据集
纳米镜的分析算法,输入输出是固定的,要求输入是一个固定的标准ODPS数据集,字段包含userid/分桶id/人群切面1/人群切面2/指标1/指标2等,但实际业务场景中,每个业务关注的人群切面与数据指标都是大相径庭的,为了在约束中寻找灵活性,我们必须对纳米镜的标准数据集做些改造。由于纳米镜存在数据集依赖,比如说预测算法和切面显著性算法,就需要依赖具体的某张表去做二次计算,比较好的解决方案是让业务方按照数据集规范往标准数据集的中间表里面插数据。
▐ 数据集自动生成
只要让每个业务将自己的数据按照标准数据集的规范插入到纳米镜中间表中,就能开始使用纳米镜的功能。但实际场景中,业务产出数据集的开发成本很大,并且这种方式对使用方的开放权限很大,假如使用方不按照规范插入数据,会对源数据造成污染,使其变得不可控。那是否能做到数据集自动生成,让使用方不需要关注数据采集流程呢?可以看看,在平常的业务开发流程中,生成ODPS数据源的工作流程是:这整个过程下来,一般都会花费至少2天(1天埋点梳理与开发、1天写SQL生成报表)的时间,并且很多时候会出现埋点遗漏的问题,又需要重新走一遍开发和发布流程,造成很多人力上的浪费。
设计方案