埋点方案选择
全埋点 or 分模块埋点,直接影响数据存储成本
- 如果数据结构优化不做好,每年浪费的存储成本可能会是百万级的消耗,随着周期的增加、成本浪费会更严重。
技术层面问题
事件上报机制
- 例如:APP,需要做延时上报,将数据预先存储在手机上,等到有 WIFI 环境时再上报;
业务兼容的问题
- 前期规范执行之后,后续随着业务的拓展,已有数据字段满足不了业务的分析需求。
前端版本兼容的问题
- 埋点从应用端来区分,web/ios/android,小程序,公众号;
- 然后还要区分一下是原生、还是 H5,新老版本之间肯定会带来一些模块化的差异。
前端埋点数据丢失问题
- 前端请求服务端的数据大多存在 binlog 里面的,数据日志同步解析的过程里面可能会存在丢包的可能性,数仓的稳定性也会影响数据质量。
埋点数据和后端数据不一致
- 后端服务信息存储的数据是存在 mysql,表字段结构化,分多表存储,需要靠主键进行关联,有大量的ETL过程。
- 两者之间可能因为数据清洗、处理、实时技术等原因,造成数据差异化;
埋点开发技术执行不到位的问题
- 绝大多数情况下我们说埋点,一般都是说前端埋点,前端开发工程师在做埋点的时候又多是人为埋点,在开发过程中,会造成部分信息冗余、重复、记录不完整的情况存在;
应用层面问题
多产品之间的模块差异化问题
- 埋点不能够只有一套标准规范,多生态应用下,业务繁琐,在产品、技术的架构上有明显的差异,不同的产品、模块、坑位、点击事件的定义也可能有一定的区别,这时候可能需要根据场景划分不同的埋点标准;
自定义埋点信息的键对设计问题
- 往往会在埋点里面增加一个json的字段(bdata),在埋点的时候写入自定义的业务信息进行场景识别,譬如活动id、业务信息、用户快照的基本信息等,不同开发写入的自定义字段格式可能会有差异;
自埋点和第三方应用统计口径的问题
- 自埋点一般都会定义一个唯一id作为区分用户的标志,但是第三方是缺少用户属性信息的判断,一般会以设备号uuid/imse,或者IP地址段、mac地址段作为区分标志,从而造成统计数据上的差异化;
- 对于留存分析、转化分析、流失分析需要用到明细数据的场景,可兼容性不是很友好,需要进行 ID Mapping 操作。
预留字段问题
基于业务需求、预留字段
- 基于业务分析框架,梳理常规分析案例中需要用到的埋点数据集,核心指标必须要有埋点;
- 基于算法模型框架,梳理算法所需要构建的数据特征需要用到的字段信息;
- 基于业务诉求,梳理非常规、当前没需求未来有应用场景的字段信息;
基于用户标签、预留字段
- 基于用户画像的标签建设,需要考虑画像的多层属性,社会属性、基本属性、市场属性、交易属性、行为属性等,通过画像筛选人群的时候,可能需要通过数据模型建立用户分层的过程,所需要用到的辅助数据;
- 基于智能运营的标签建设,运营策略、活动、方案的数据需求收集,哪些标签需要用到埋点中的信息;
- 基于营销系统的标签建设,涉及到渠道分配、广告投放、点击预测等,可能需要对曝光、点击、转化进行全链路的埋点建设,或者基于某一个产品使用链路,埋点数据要完备;
基于推荐系统、预留字段
- 推荐算法中需要用到的数据特征中包含哪些数据指标,其中埋点的部分所需要的数据格式是怎样的;
- 推荐算法的设计方案包括,基于用户、基于物品、协同过滤、基于规则、基于融合模型,不同的方案下、对数据底层的要求可能也会有一定的差异;
数仓落表问题
数仓建模设计
- 埋点数据落到数仓后,需要预先建立哪些表,如何做埋点数据的分层;
数仓库表的开发成本
- 埋点的数据体量是非常大的,TB级数据的存储本身就是一个比较大的成本,再加上调度系统、计算资源、运行性能等方面,就需要数仓团队在一开始就要把数据模型提前建立好,做好ods层到dw层、ads层的划分,维度和事实之间的建设;
数仓性能问题
- 因为埋点数据的体量问题,落表的时候、一定会存在大量的冗余字段,如果集群资源比较紧张,对于常规数据的统计、计算都会带来性能上的问题;
查询响应时效问题
- 在数据团队的架构中,有对外提供数据应用服务,对于数据的实时计算就有一定的要求,什么场景下应该是T+1,什么场景下应该是伪实时,避免数据调度任务影响前台应用产出;