课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
做数据的同学都知道,在数据分析的道路上,数据采集是重中之重。数据采集的质量直接决定了你的分析是否准确。而随着企业对数据的要求越来越高,埋点技术也被推到了“风口浪尖”。所谓,埋的好是高手,埋不好反倒伤了自己。而在数据采集的道路上大家经常会遇到各种各样的问题,今天我们就来分析一下埋点是否需要。
首先我把数据采集的问题归结为三类:
不知道怎么采,包括采集什么数据以及用什么技术手段采集;
埋点混乱,出现埋错、漏埋这样的问题;
数据团队和业务工程团队配合困难,往往产品升级的优先级大于数据采集的优先级。
上面这三类问题让数据团队相当痛苦,进而幻想弃用数据采集,而尝试新方案后,进而迎来的是更大的失望。这里我对这三类问题的现状及应对之策做一下分析。
不知道怎么采集数据
一般创业公司的数据采集,分为三种方式:
第一种直接使用友盟、百度统计这样的第三方统计工具
通过嵌入 App SDK 或 JS SDK,来直接查看统计数据。这种方式的好处是简单、免费,因此使用非常普及。对于看一些网站访问量、活跃用户量这样的宏观数据需求,基本能够满足。
但是,对于现在一些涉及订单交易类型的产品,仅仅宏观的简单统计数据已经不能满足用户的需求了,他们更加关注一些深度的关键指标分析,例如:用户渠道转化、新增、留存、多维度交叉分析等。这个时候才发现第三方统计工具很难满足对数据的需求,而出现这样的问题并不是因为工具的分析能力薄弱,而是因为这类工具对于数据采集的不完整。 通过这种方式 SDK 只能够采集到一些基本的用户行为数据,比如设备的基本信息,用户执行的基本操作等。但是服务端和数据库中的数据并没有采集,一些提交操作,比如提交订单对应的成本价格、折扣情况等信息也没有采集,这就导致后续的分析成了“巧妇难为无米之炊”。
通过客户端 SDK 采集数据还有一个问题就是经常觉得统计不准,和自己的业务数据库数据对不上,出现丢数据的情况。这是前端数据采集的先天缺陷,因为网络异常,或者统计口径不一致,都会导致数据对不上。
第二种是直接使用业务数据库做统计分析
一般的互联网产品,后端都有自己的业务数据库,里面存储了订单、用户注册信息等数据,基于这些数据,一些常用的统计分析都能够搞定。这种方式天然的就能分析业务数据,并且是实时、准确的。
但不足之处有两点:一是业务数据库在设计之初就是为了满足正常的业务运转,给机器读写访问的。为了提升性能,会进行一些分表等操作。一个正常的业务都要有几十张甚至上百张数据表,这些表之间有复杂的依赖关系。这就导致业务分析人员很难理解表含义。即使硬着头皮花了两三个月时间搞懂了,隔天工程师又告诉你因为性能问题拆表了,你就崩溃了。另一个不足之处是业务数据表的设计是针对高并发低延迟的小操作,而数据分析常常是针对大数据进行批量操作的,这样就导致性能很差。
第三种是通过 Web 日志进行统计分析
这种方式相较于第二种,完成了数据的解耦,使业务数据和统计分析数据相互分离。然而,这种方式的问题是“目的不纯”。Web 日志往往是工程师为了方便 Debug 顺便搞搞,这样的日志对于业务层面的分析,常常“缺斤少两”。并且从打印日志到处理日志再到输出结果,整个过程很容易出错,我在百度就花了几年的时间解决这一问题。
所以,以上三种方式虽然都多多少少解决了一部分数据采集的问题,但又都解决的不彻底。