为什么埋点治理这么难?

5 评论 8297 浏览 42 收藏 13 分钟

编辑导语:数据埋点并没有看上去的那么容易,若没有做好埋点治理,后续的业务数据准确性则可能受到影响,从而降低业务处理效率。那么,导致埋点治理困难的原因有哪些?本篇文章里,作者就埋点治理困难这一现象的背后缘由做了分析,一起来看一下。

从做数据产品开始,自己的日常工作就被埋点占据了大部分,到后面做平台类数据产品之后,发现埋点问题依旧占据很多精力且治理困难,写这篇文章也是跟大家讨论讨论自己做埋点治理的心得,以及深入剖析下为什么埋点质量这么难保障。

做埋点时间长了,越来越觉得埋点并不像自己想象的那么简单,仅仅是开发在自己要统计的业务场景下,写埋点代码、打包上传统计数据就完成工作,从最开始的埋点需求规划,再到最后数据上报,只要有一个环节有坑就会影响数据准确性。而数据准确性估计是每个数据人工作中必须要面对的难题。

下面简单聊聊自己遇到的坑,这些或许仅仅是表述了现象,至于导致此现象发生的本质相信就仁者见仁,智者见智了。

一、埋点混乱且缺少管控

产品和运营作为埋点需求的常见提出方,当新功能或活动上线时会提很多埋点需求。

数据产品在这个环节如果对埋点需求没有明确的提需规范和把控,就会导致埋点需求爆炸,对于开发和维护成本都是压力,并且后续做数据分析的时候经常会发现数据不可用或数据不准确,那其实后续排查问题的成本非常大,所以数据产品一定要对埋点需求有全局把控。

1. 明确埋点要统计哪些指标

数据产品在评审埋点需求的时候很重要的一点就是:明确埋点要统计哪些指标。

埋点统计是服务于指标的,如果对埋点需求没有管控放任提需,经过几个版本的迭代就会发现埋点维护很难,而且这样也能反推运营和产品思考自己到底关注哪些核心指标,对后期的数据统计和复盘都是有帮助的。

2. 明确埋点提需规范

埋点需求规范的价值是帮助业务方和数据产品拉齐对即将开发的埋点认知一致,所以在设计埋点提需规范时不仅仅要让业务方标明要统计哪些指标、事件如何规划、触发时机,最好能写出每个自定义参数的触发时机、参数打在哪个层级、是否需要透传等,对于刚起步做埋点治理的阶段可以先将精力focus在提需规范的设计和落实上。

划重点:埋点提需规范越详细越好,可以帮忙拉齐各方对埋点的认知。

3. 埋点需求评审会及设定需求接口人

埋点需求评审就不具体展开了,大体说就是将业务方、开发、测试、数据产品等组织起来对埋点需求进行评审。我想多说说需求接口人这个角色。

进了大厂发现需求接口人很重要,没有接口人的话仅靠数据产品跟业务对接在大体量和复杂业务场景的公司里是不现实的,所以接口人的定位是埋点需求master甚至是数据需求master。

划重点:建议接口人可以考虑经常对接埋点需求的业务或是有开发背景的业务方,这样沟通起来会方便一些。

二、埋点设计环节缺少整体性思考

规划埋点是数据产品的基本工作,但真正能做好埋点规划很难,我觉得这个环节的痛点在于:很难以全局视角规划埋点并且具有可扩展性,所以为了后续的可扩展性,我简单列几条可参考的tips。

1. 埋点设计要具有简洁性

这里的简洁性是指同类场景下的埋点是否能合并成一个埋点规划,比如“点击支付按钮”事件,该事件在很多页面都可以触发,那么就可以把这个事件规划为一个埋点,在不同的页面点击时将页面名称或页面ID作为参数传递。

但这些还是比较初阶的埋点设计方案,当很多业务属性以参数形式传递时,如何管理及规划这些参数,让数据RD看到埋点日志时很容易就能理解这条埋点携带了哪些信息,那么就引出来我要讲的下一点。

2. 埋点设计要具有规范性

其实规范性这个词很宽泛,我们通篇也都在探讨如何基于埋点治理的痛点制定规范。上面讲到我们如何管理埋点日志里的参数,我觉得可以按照性质和层级给这些参数进行个简单划分:

公共参数:每条买点日志都要上报的参数,包含设备信息、上报时间、IP地址等信息(这里不具体讲,大家可以参考第三方数据分析工具如神策、GrowingIO等公共参数的采集)。

那么数据产品对于公共参数的设计和管理体现在要规划号公共参数并协调各个埋点端上报格式一致,降低数仓解析成本。

私有参数:也叫自定义参数,每条买点在不同场景、不同操作、不同逻辑下会触发并传递不同参数,此类参数叫做私有参数。

这里的层级指的是埋点日志的json层级,如果能做好json层级的划分,那么对于不同角色的RD可以按照自己关注的参数去解析,大大降低了解释成本。

1)公共信息层:如果读了上面的公共参数,那么会很好理解什么叫公共信息层:顾名思义就是存放公共参数层。

2)业务信息层:里面存放自定义参数,针对同类或同场景的采集信息可以抽象成一个对象,在对象里存放这些信息,例如上面提到的“点击支付按钮”事件,可以把页面信息存放到一个对象里、位置信息存放到一个对象里,下面举个巨简单的栗子:

3)策略信息层:里面存放为策略服务的参数,之所以把它单独划分一层是因为策略多变且灵活,最好还是规划在同一层级下管理。

4)透传信息层:这种后端透传前端的参数也建议单独规划,便于后续做链路追踪等应用。

当埋点设计形成了规范,那么其实也完成了埋点最难的高度抽象的部分,接下来就是基于抽象好的规范甚至是数据模型来复用到后续的埋点规划中,抽象的思路可以先关注重点场景:先设计核心指标有关的核心点位或者场景复杂的点位。

3. 埋点设计要具有可扩展性

埋点设计的可扩展性与上面的规范性密不可分,当规范建立好数据产品要思考是否具有较强的扩展性,还有后面规范的新增和变更该如何管理和维护。要知道埋点不仅仅只是服务于指标统计,想要全面的规划埋点还要设计分析产品性能、使用体验的埋点,比如上报启动时间、崩溃事件、页面加载时间等事件。

三、埋点开发不规范

这个问题也很有意思,数据产品经常有个疑问:为什么我规划好了的埋点,实际开发或上线后根本不符合预期。这个环节共设计到两个角色:数据产品和埋点开发,那么到底是哪一方在沟通理解上出现了问题呢?

  • 数据产品:技术背景较薄弱,针对不同开发环境和生态了解欠缺;
  • 埋点开发:了解开发逻辑,对于未明确的细节用惯用逻辑实现。

大家发现了吗,当埋点场景复杂时,由于两个角色的侧重点不同很容易会出现gap,有人问有什么好的办法去规避吗?

其实除了上面讲的,只能不同角色补齐自己的短板,还有就是两方一定要多沟通,埋点开发在埋点评审时要思考不同实现逻辑和异常场景是否会影响埋点上报,在开发埋点之前尽量把问题暴露出来。

四、埋点验收不够全面

埋点验收环节作为埋点上线的最后一道保障,也是很容易踩坑的。具体的现象不多说,只说如何在验收环节尽量不踩坑:

  1. 验收是否多报;
  2. 验收是否少报;
  3. 验收是否缺参数上报;
  4. 验收上报参数是否符合预期;
  5. 验收上报为空日志的比例;
  6. 验收上报不符合预期日志的比例除了上面的验收重点,验收方式一定要手动验证+平台自动化一起配合,最好能进行一遍回归测试,多方式进行验收。

五、欠缺埋点生命周期的管理

做埋点治理和数据治理的小伙伴应该深有体会,当缺少生命周期的管理一味放任熵增,后续治理的成本实在很高,所以埋点生命周期的管理必不可缺。

简单来说要做好后续埋点梳理、埋点瘦身、埋点升级的工作,定期统计一段时间内低频上报的埋点和这些埋点相关指标、报表的访问量,以此为依据开展埋点生命周期管理工作。

说了这么多,越写越觉得想埋点想不踩坑对数据产品的要求实在很高,不仅要有需求管控能力、数据抽象能力、技术背景,还要有多部门协调能力和全局把控能力。

所以本文也只能大体讲讲这些关键环节,但估计也是日常困扰大家比较多的问题了。相信有此经历的小伙伴们看到文章应该很有共鸣,欢迎留言交流~如果有更好的想法欢迎一起讨论学习~

 

作者:图图,BAT数据产品经理;专注数据产品、持续学习中;“数据人创作者联盟”成员。

本文由@一个数据人的自留地 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 我们公司的埋点不归数据产品负责, 各业务产品自己写~~好难

    来自江苏 回复
  2. 好像上海人名字

    来自上海 回复
  3. 从多年的实操经验发现,要想实现埋点规范化、数据可管理,且内部业务、研发协调高效,必须要上IT管理!
    一般公司觉得有元数据管理就够了,但还是马后炮,随着版本迭代,业务变化,越多后面,数据越乱。
    所以必须从需求到流程到研发、测试一体化的管理。
    网舟开发的埋点管控平台是业内较好的工具选择。

    来自北京 回复
  4. “这里的简洁性是指同类场景下的埋点是否能合并成一个埋点规划,比如“点击支付按钮”事件,该事件在很多页面都可以触发,那么就可以把这个事件规划为一个埋点,在不同的页面点击时将页面名称或页面ID作为参数传递。”
    如果不同页面的同一事件做合并,后续遇到:
    1.部分页面的事件名称(按钮上文字)变更,不再是”点击支付按钮”时,如何应对呢?
    2.页面的重构、改版、增删等情况,相应的埋点和页面ID、页面路由维护成本是否会过高?
    我们现在采用的是分离方式,而非合并,虽然会遇到埋点膨胀的问题,但感觉上比埋点合并方案好一些。

    来自北京 回复
    1. 文章作者飘过~~~
      1.如果支付按钮名称经常变动,可以考虑加个参数,含义为按钮名称,把按钮名称传入value值
      2.在规划过程中会遇到页面信息变化的情况,这里的解决方案是:如果页面路径经常变化那么是否可以拉上前端、后端的开发,一起确定好页面路由,尽量只新增不修改,这样也是站在埋点的角度帮助前后端统一代码认知
      埋点合并其实不仅仅起到精简数量的作用,关键的还是抽象出埋点模型,尽量为数仓模型建设和多维分析提供方便~

      来自北京 回复