数据采集的目的,其实是希望从数据层面对用户行为进行还原,并通过科学的分析方法,对数据背后的行为及价值进行挖掘,从而推动产品的运营及优化。所以,数据采集或者数据上报的触发器是用户行为。
那么问题回到,当用户发生某些行为时,我们该怎么进行对应的数据采集呢?
1、数据模型
当用户发生某个行为的时候,我们就需要记录一些信息。
如何将用户某次的行为,用科学、合理并且准确的数据模型来表示呢?行业内对应有非常多的方案,以DataTower.ai系统为例,我们采用的是“用户+事件”模型来描述行为数据。
举个例子,假设一个行为是:用户在页面上点击了购买商品按钮,并完成付款。
那么抽象过程就分为用户数据抽象和事件数据抽象:
-
用户数据抽象
1)是哪个用户?我们需要有一个id来标识这个用户,这个id要求是唯一的;
2)这个用户有哪些属性特征,我们需要关注,如:用户名是什么?用户当前的ip?用户是否是vip客户?用户当前使用的平台是什么?(具体要关注和获取哪些用户的特征和信息,可以根据实际需求来进行)
-
事件数据抽象
1)这个事件是哪个用户发生的?同样需要有一个id来表明事件主体,应该与用户的id有一定的映射关系,从而可以将事件与用户关联起来;
2)这个事件有什么属性特征呢?例如付款事件,我们会关注付款金额、是否有折扣、付款商品信息、从加入购物车到付款的时间等等一系列必要信息。
最终存储的数据,用伪代码来描述一下就是:
经过上述步骤,我们就完成了从行为到数据的抽象。
那接下来该如何采集这些数据呢?我们可以继续来讨论和思考一下采集方式。
2、数据采集方式
在应用侧,最为常见的还是通过代码进行埋点,然后进行数据上报。以App应用为例,我们可以直接在开发过程中,对需要关注的用户行为进行埋点设计,自己写一段代码进行数据收集和上报,或者接入第三方SDK来进行数据采集和上报,如DataTower.ai 就提供了全量的数据采集 SDK 和集成方案,可以帮助开发者做数据采集与上报。
数据采集的SDK在采集功能上包括手动采集与自动采集两部分。手动采集是由使用者自己填写数据,而自动采集,顾名思义就是SDK会自动收集一些数据进行上报。下面我们来重点看看自动采集的策略。
自动采集的数据往往是一些公共事件或事件/用户特征。以Android应用为例,SDK可以监测用户的首次安装、应用打开与关闭、应用跳转等一些公共行为,然后进行上报;同时在用户授权的情况下,可以获取设备的一些基本信息,例如系统时间、系统语言等。这些自动采集的数据往往与SDK相关,主要目的都是为了后续一些标准化的数据分析。例如DataTower.ai提供的Android-SDK在用户授权的情况下,可以收集用户在应用内的广告相关的行为(比如广告点击、加载、查看和关闭等等),完成后可以直接在DataTower.ai系统后台上查看应用内的投放效果数据,方便运营者更好地进行投放变现。
数据的采集不光只是数据的获取,还有数据的存储。以App应用来说,收集的数据不一定会立刻上报到后台,而是会受到用户的实际网络情况、后台服务等一系列不确定因素影响。那么采集数据的SDK一定程度上也需要做数据的缓存。另外,如果使用的是上述介绍的“用户+事件”模型,还需要有一个唯一id来关联事件和用户等一系列必备操作。