京东到家埋点治理实践
导读: 京东到家作为行业领先的即时零售电商平台,又是数据驱动型的公司,埋点的价值日益重要,埋点的可用性、准确率也成了一直在攻克的难题。本文主要讲解京东到家在治理埋点数据、提高埋点数据质量工作中的一些实践经验。
目录:
一 什么是埋点
二 为什么要治理埋点
三 如何治理埋点
3.1 建立统一的埋点流程
3.2 建立完善的埋点规范
3.3 建立完善的质量规范
3.4 优化埋点平台
四 埋点治理收益
五 总结与展望
一 什么是埋点?
二 为什么要治理埋点
京东到家历史的埋点是可以满足一些常规的数据分析的,但随着业务的发展,历史埋点方案的弊端也就逐渐体现出来了:
流程规划缺失: 没有统一的流程规范,关键节点缺失,埋点上线难;
设计规范缺失: 埋点上报时机不一致、同样的业务组件上报的内容不一致、数据差异性高;
三 如何治理埋点
3.1 建立统一的埋点流程
经过几个版本的需求迭代,我们发现埋点治理新流程有如下 优势:
1) 提升了设计质量 :数据产品对业务更加了解,设计埋点的效率提升了50%,同时埋点设计考虑更加全面,比如全归因、推荐场景等;
2) 埋点支持扩展、复用 :比如商品组件,节省研发以及测试成本,无需重复开发;
3) 埋点需求口径一致 :节省了数据分析30%的人力成本。
3.2 建立完善的埋点规范
3.2.1 产品提需规范
我们对历史埋点进行梳理,从中归纳了四大类型,包括ep精准曝光、浏览、点击、api接口下发:
ep精准曝光: 资源位露出并且达到一定条件的时候,在同一接口ID下,组合够一定的条数进行上报。
"epDuration":1,"epPercent":0.5
res_type|unit_index|res_unit|tpl|index|res_name|sub_pageres_type---资源位类型unit_index---实际楼层res_unit---实际房间号tpl----资源位样式index---cms配置的楼层res_name---资源位名称sub_page---资源位所属父级tab
示例:正向触发:pv参数{当前页面参数,ref_par{来源页相关参数}}----------------------------------逆向触发:pv参数{当前页面参数,ret_Type:back}}
3.2.3 研发落地规范
埋点开发 : 严格按照数据产品方案落地,包括上报时机和技术规则;
private void addCart(View v) { if (entity == null || context==null || (context instanceof Activity) && ((Activity) context).isFinishing()) { return; } if (entity.getIconType() == 1) { if (isAllCart(params)) { //全局购物车spu加车 addCartSpu(v); } else { //mini购物车spu加车 if (context != null && params != null) { String userAction; if (!TextUtils.isEmpty(entity.getUserActionSku())) { userAction = entity.getUserActionSku(); } else { userAction = entity.getUserAction(); } DataPointUtil.addRefPar(DataPointUtil.transToActivity(context), pageName, "userAction", userAction, "traceId", traceId); new SpuSelectDialog(context, params).showDialog(); } } //加车监听spu if (onClickAddListener != null) { onClickAddListener.onClickSpu(v); } } else { //mini购物车sku加车 if (isMiniCart(params)) { addMiniCartSku(v, params); } else if (isAllCart(params)) { //全局购物车sku加车 addCartSku(v, (OnSpuAdapterParams) params); } //加车监听sku if (onClickAddListener != null) { onClickAddListener.onClickSku(v); } } //sku加车埋点 if (params != null && params.getPointData() != null) { pointData.put("storeId", entity.getStoreId()); pointData.put("skuId", entity.getSkuId()); pointData.put("spuId", entity.getSpuId()); pointData.put("traceId", traceId); if (pointData.get("userAction") == null) { if (!TextUtils.isEmpty(entity.getUserActionSku())) { pointData.put("userAction", entity.getUserActionSku()); } else { pointData.put("userAction", entity.getUserAction()); } } DataPointUtil.addClick(DataPointUtil.transToActivity(context), pageName, "click_add", pointData); } }
3.3 建立完善的质量规范
四 埋点治理收益
五 总结与展望
随着京东到家用户的逐渐壮大和新项目的启动,业务越来越复杂,埋点的数据质量必须得到保障,我们不得不考虑埋点的种种隐患,做到未雨绸缪。埋点数据上报不准确、每个版本人工回溯核心埋点成本的上升、埋点量级的上升对存储以及服务器的压力等,都需要我们有一个完善的埋点监控机制,来持续改善我们的现状。到家埋点后续将重点在监控完善的道路上继续前进。