专栏首页木东居士的专栏《七天数据埋点之旅》第五天 埋点注意事项

《七天数据埋点之旅》第五天 埋点注意事项

本文为数据茶水间群友原创,经授权在本公众号发表。

关于作者:我是水大人,资深潜水员,一个基于开发、面向分析、走向全栈的饱经摧残的数据新手,爱折腾不爱玩,爱总结爱思考的老兵,错了改改了又错的惯犯。

0x01 前言

前两节我们介绍了埋点设计四大思维,并给出了四种典型场景的埋点设计方式,本节介绍在埋点设计中的注意事项,这些事项是在进行埋点设计的时候应该遵循的准则,通过本节的阅读,你将获得以下准则的认知:

  • 同质一致
  • 同质继承
  • 通用复用
  • 粒度平衡

0x02 同质一致

相同指标度量的上报时机和格式一致,比如:

  1. 实体返回键和app返回键及空白位置的点击clickid统一处理成return
  2. 页面停留时长信息的上报,其上报时机为离开页面的时候,时长单位ms
  3. 多同质元素的曝光,用统一的上报格式,如下:
  a=x,b=x,c=x;a=y,b=y,c=y #或者
  a=x&b=x&c=x,a=y&b=y&c=y 

  #此种格式十分利于后期处理:
  select
      str_to_map(pos,',','&')  # 转化为字典
  from db.tbl
  lateral view explode(split(cotentlist,','))ed as pos
  where xxx rlike '_list_show$'  # 此处多内容曝光事件的事件命名应该规范,和其它形式的内容曝光进行区分

曝光和点都采用列表的方式, 在统计该位置的点击率的时候,若点击事件的上报和曝光事件的上报格式一致,可极大的提高效率

同质参数的名称和类型应该保持一致

同质参数的设计一致主要体现在普通参数、维度参数、行为标识上,虽然这些要求是数仓规范上介绍的,但如果能事先治理,在数据采集的时候就规范化,其能减轻的工作量是巨大的。以下是一些通用的词根:普通字段

名称

意义

备注

渠道

channe

一般是渠道编号

版本

version

若同时有多个版本,加前缀

包名

package

一般在上报层处理为小写

来源

from

目的

to

qq/wechat/weibo/friends等

行为字段规范

行为

命名建议

备注

点击

click

曝光

show

分享

share

评论

comment

点赞

like

举报

report

安装

install

下载

download

升级

upgrade

退出

exit

注意:命名规范的应该遵循相应的逻辑,先要理解现有的埋点规范,然后对其进行沿袭,最好设计之初就严格按规范来执行,可以有效的避免后面统一的时候需要考虑新旧兼容的情况。

同页面同模块的事件名基本一致

同一个页面的点击事件,应该从事件名上可以直接进行区分,如下:1、进入页面即上报该页面的pv,作为分母(下滑等操作曝光的页面上部分的内容再单独上报各自的show事件)2、页面各个部分的点击遵循:页面名_模块部分名_click/show例如:

0x02 同质继承

  • 跳转继承

从A页面跳转到B页面,只在B页面的展现事件上报了from,而在B页面的后续重点操作都没有继承最初进入该页的from属性,或者在B页面的下一级需要重点关注来源的页面也漏报了from属性,都是继承中断的情况。

  • 初始继承

初始继承是指在用户当天(或者更长日期)首次发生某种行为的时候,该行为即成为用户的一种标签,在后续的其它事件的上报上都上报此标签。比如记录首次启动的方式,桌面图标的启动的,则标注为图标启动用户。虽然后台的数据处理可以计算出用户的这些首次行为标签,但是多个行为的时候可能会存在计算量大的情况。

0x03 通用复用

该准则的要求是尽量少的创建新的事件,而是想法复用原来的事件,这不仅是减少事件数量,方便后续的埋点管理,同时在思考能否复用的过程中,也是对自己埋点设计的能力的一次检验,检验埋点设计的扩展性如何。此处以弹窗的曝光和点击为例介绍

在此框架基础上,任何弹窗类型的交互事件都可以用该框架进行上报,其差异可能只是其中某些参数值的区别。在《埋点设计(上)》中介绍的适合抽象思维进行组织的事件,都适用于通用复用准则。但需要注意的是若参数层级的组合情况较多的时候,建议将参数的曾经用信息表的方式组织。每个参数一列,而没一行是一种参数组合情况。

0x04 粒度平衡

粒度平衡指埋点粒度在最小化的原子粒度和抽象粒度概括之间要平衡,常见的有以下几个方面:

时间粒度

时间粒度在盒子不变,其交互也不变,而盒子里的内容通过左右滑动或者点击跳转而改变,简言之就是复用同一套模板的交互情况下要特别注意。此处以某详情页的停留时长粒度来举例:事件名:离开详情页事件id: x_detail_exit 上报时机:

  • 点击返回、切后台等常规形式的退出
  • 点击页面交互元素跳转非同类模板页
  • 点击相关推荐等进入同类模板页

参数: stay_duration:停留时长,单位ms 在设计埋点的时候,该事件的停留时长参数就一定要精确到原子粒度,即单个内容的停留时长,而不是该类页面的停留时长。基于单个时长可以统计同类时长,若埋点粒度太粗,就没法分解,这样在计算类似TopN条目的情况,埋点数据就无法支撑了。

事件粒度

虽然我们在设计埋点的时候要求采集的信息要完善,不能漏采,但并不是意味事件的上报并不是越多越好,要全但是不要滥,至于上报哪些事件,则要从整个产品交互逻辑和漏斗分析的重点对象出发,在满足版本迭代功能需求统计基础上,不断补齐漏斗环节。

事件的串联此外事件粒度也体现在埋点设计上,可以将一个串的事件用一个时间id,而在params里使用attribute1这个参数来代表不同的阶段,进行了埋点展平,同时这样的拆分设计也可以避免在不同的阶段下,附带的参数不一致,而需要不断的说明层级的关系。

时间粒度的上报数据量度量此外在处理类似心跳事件这样可能造成大量数据上报的情况,要有事前的预估,如果可能超出数据的接收能力,则在客户端进行选择性的上报,但要注意上报样本的均匀合理,能够反映总体的特征。

0x05 总结

本节从同质一致、同质继承、通用复用、粒度平衡四个方面介绍了埋点的注意事项,严格遵循这些准则能很大程度上提高埋点设计的效率,保障埋点设计的质量。

本文分享自微信公众号 - 木东居士(Data_Engineering),作者:水大人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《七天数据埋点之旅》第三天 埋点设计(上)

    在前两篇《初识埋点》和《埋点之前》的基础上,我们应该有了对埋点的基本认识、知道了具体的开发流程。本篇在前面铺垫的基础上进入具体的埋点设计环节。通过本篇的阅读,你...

    木东居士
  • 程序员该如何管理后宫:朕只爱一个皇后!(单例模式)

    木东居士
  • 【收藏】SQL经典面试50题 | 附答案

    今天给大家分享一份星友对SQL经典面试50题的刷题记录,稍作了一些修改,以下是星友自述正文:

    木东居士
  • AngularJS应用页面切换优化方案

    葡萄城的一款尚在研发中的产品,对外名称暂定为X项目。其中使用了已经上市的Wijmo中SpreadJS产品,另外,在研发过程中整理了一些研发总结分享给大家。如本篇...

    葡萄城控件
  • 数学|欧拉公式的简单证明

    在数学中,sin函数和cos函数是最近乎完美的周期函数,e是自然对数的底,i是数学界中唯一一个平方为负的数字,这几者一般很少有联系,而欧拉公式则很完美的将它们联...

    算法与编程之美
  • SHELL(bash)脚本编程八:技巧

    至此,我们介绍了linux系统中常用命令的使用方法,简述了bash程序的使用方法和工作流程。在使用bash编写脚本程序时,熟练掌握这些工具的用法,往往能够达到事...

    用户5030870
  • Excelize发布2.0.1版本,Go语言Excel文档基础库

    Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 OOXML Spec。可以使用它来读取、写入 X...

    xuri
  • Android开发笔记(五十二)通知推送Notification

    准备工作复习一下PendingIntent,前面的博文《Android开发笔记(五十)定时器AlarmManager》已经提到了它。PendingInten...

    用户4464237
  • 於災害前預先作好準備 GPU 加速技術模擬地震損害情況

    311 東日本九級地震發生屆滿四週年,讓人明白天災能帶來無可想像的破壞,造成的嚴重損害難以預料,為了在發生災害前做好準備, NVIDIA GPU 高效能運算技術...

    GPUS Lady
  • 通过欧拉计划学Rust编程(第686题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾。

    申龙斌

扫码关注云+社区

领取腾讯云代金券