草庐IT

终于有人将数据埋点讲明白了

杨楠楠、李凯东等 2023-03-28 原文

​一、数据埋点的应用场景

数据埋点可以记录用户的被动行为和主动行为,对用户行为的各种数据进行统计和分析。

1.数据埋点的作用

对于互联网公司来说,数据埋点有着多方面的实际作用,包括但不限于以下这些。

  • 了解和跟踪数据的总体情况:PV 、UV 、曝光点击数、用户数、会员数、复购率等。
  • 用户行为分析:用户的使用习惯、用户的决策路径、用户使用产品的热 力图分布等。
  • 掌握产品的变化趋势:产品每日流量、产品所处的生命周期,以及电商 大促活动前后一周、两周的数据变化趋势等。
  • 数据形成反馈,用于产品迭代:用户行为的转化漏斗,基于用户行为  (浏览、点击、关注、收藏、加购、评论、分享)、商品、店铺、品类、 大促活动等的转化率。

2.后端数据埋点的分类

按照统计数据的不同,后端数据埋点分为曝光埋点、点击埋点和页面事件。

1)曝光埋点

页面曝光是为了统计各业务端(App、内嵌 H5 、PC 、WAP、微信小程序) 内的页面局部区域是否被用户有效浏览,比如淘宝App 首页联版、微信朋友圈  露出的广告资源位、抖音 App 的开屏页等。

要衡量页面各区域用户的点击率,需要先弄清楚各个区域分别被多少用户 看到过。一个区域每被用户看到一次,就可以记为一个曝光事件。有了曝光, 才会有用户点击行为。对于页面曝光需要单独埋点,即页面曝光埋点。

进行曝光埋点时需要获悉以下两点。

  • 曝光统计逻辑。同一用户上下滑动页面只算一次曝光,不会重复统计。如果用户在浏览时页面重新请求接口 , 认为用户浏览的区域发生了替换, 则会重复统计用户的曝光。(这是数据采集时统计曝光的逻辑,与客户端 按照请求次数来统计有所不同。)
  • 曝光统计标准。曝光统计并无一致的标准,各家公司要求不同。在页 面曝光的区域大小上,一般来说,  App 、WAP 等终端露出 100px (不到1cm )就算曝光了;在页面曝光的停留时间上,以笔者的经历来看,  10s 甚至 15s 的用户停留时长才算曝光。用户曝光是用户的被动行为。
2 )点击埋点

用户在各应用内的任意一次点击都可以记为一次点击行为。比如,购物车 的点击、微信朋友圈的点击、图片的点击等都可以记为一次页面点击。区别于被动的用户曝光行为,用户点击是主动行为。对页面点击进行单独埋点就是页 面点击埋点。

我们可以通过用户行为得到点击 PV 、点击 UV,也可以通过页面曝光和页面点击计算出页面各个区域的点击率(点击率 = 页面点击数 / 页面曝光数)。

3 )页面事件

页面事件通常指对页面各种维度的信息的统计,常见的有当前页面URL、 用户账号等。事件往往通过页面各个参数进行透传并最终落表。

页面事件统计的信息通常包括以下几部分。

  • 用户来访设备信息:用户设备标识码、浏览器版本、浏览所用的终端、 站点编码、屏幕分辨率等。
  • 当前页面访问信息:用户账号、用户会员编码、当前页面 URL、用户访问 时间、上次访问时间、访问时长、页面停留时间、用户退出页面时间等。
  • 页面来源信息:广告来源、上一页面 URL 等。
  • 页面去向信息:去向页 URL 、去向页标题等。
  • 商品信息:商品编码、供应商编码、店铺编码、商品名称、商铺名称等。

二、数据埋点的工作流程

日常工作中数据埋点的完整工作流程,它既有流程图,也有数据埋点的需求,涉及项目需求(含产品经理自提需求)的承接、评审、跟进、上线 以及项目复盘的各个业务环节。

1.数据埋点的流程图

数据埋点工作是以数据产品为核心来推动的。数据产品经理负责数据埋点的整体工作, 包括验证数据埋点的质量、判断数据埋点的准确性(包括日常工作 中上线的数据埋点的准确性)等。一般的数据埋点需求关联的工作人员如下(另外还有部分需求会涉及数据采集、数据仓库),  其工作流程会在本节的流程图中体现。

  • 业务方:页面运营人员、产品运营人员。
  • 数据产品线:数据产品经理、数据产品测试人员。
  • 广告产品线:广告产品线产品经理。
  • 页面产品线:页面产品经理、页面测试人员、页面前端开发人员。
互联网公司的点击埋点、曝光埋点的协作流程图如下图所示。

▲图 点击埋点、曝光埋点的协作流程

2、数据埋点的日常流程

1)提出埋点需求

运营人员提出埋点需求:不仅涉及埋点的位置,比如App 的开屏页、App 首页联版、App 首页 banner 位,还涉及需要埋点的终端,比如有的埋点需求只 需要进行 App 端的埋点,而有的埋点需求需要进行 App 端、微信小程序、  WAP 端等多端的埋点。

产品经理自提埋点需求:数据产品经理在进行竞品分析及日常使用产品时, 也会根据业务情况提出埋点需求。

2)梳理埋点需求,整理埋点方案

不同终端(App、内嵌 H5 、PC 、WAP 、微信小程序等)的埋点方案各不相 同,通常至少需要包括以下几点。

  • 埋点的位置:需要添加埋点的位置,比如登录页上的按钮、页面底部导 航、搜索结果页等。
  • 埋点的参数:用户浏览、点击的页面位置需要通过前端页面开发埋入的 参数,  比如页面编码、模块编码、区位编码、商品编码、店铺编码、页 面特殊参数等。每个位置的埋点必须是全站唯一的,不能重复。
  • 终端类型:对各终端进行约定,表示终端的标识。比如,约定App终端 为数字 1,  WAP终端是数字 2,等等。
  • 模板名称:需要埋点的页面的模块位置、页面的模板名称。例如,模块 位置 —App 首页轮播 banner,模块名称 — 轮播 banner 位第二个资 源位。
数据产品经理需要将自己整理的数据埋点方案与业务方、前端开发人员核 对,以确保埋点方案可行。

3)需求评审,埋点文档评审

数据产品经理写出数据埋点需求文档,列出埋点位置、埋点所需的参数、 涉及的埋点终端、埋点需要调用的接口、埋点是否需要异步触发、本次埋点需求期望的上线日期和联调日期等。

埋点需求评审的参与人员有业务线产品经理、数据产品经理、页面产品经理、前端开发人员、测试人员、业务线开发人员、数据开发人员。在必要时, 比如新增埋点的产品类型时,还需要与数据采集人员、数据仓库管理人员沟通数据埋点需求。

4)埋点开发阶段

前端开发人员需要根据埋点需求进行埋点开发,实现相应的曝光埋点、点 击埋点、埋入页面参数、异步触发请求(对于广告等埋点需求,在点击埋点关联到广告扣费结算时,需要再触发一次请求)。

5)埋点联调测试阶段

埋点开发结束后,进入埋点联调测试阶段。在联调测试阶段,需要在测试 环境下验证曝光埋点和点击埋点是否正确、埋点的参数是否有遗漏或错误。

6)埋点上线

埋点测试验证通过后,将埋点按照约定的日期上线。上线时同样需要测试。在生产环境下,可以下订单来验证订单归因(简单来说,  订单归因就是通过订单 能否验证订单的来源、来源对应的埋点位置)。

7)埋点需求复盘

埋点上线后,及时更新埋点验证情况,列出每期上线的埋点及需求内容。总结在每期埋点项目中遇到的问题,这样后面在推进新的埋点需求的过程中可以少踩一些坑。

8)埋点数据统计与用户行为分析

部分公司会开发数据埋点平台,这些平台会按天、按周、按月对每个数据 埋点进行数据统计;可以对同一个位置进行曝光埋点、点击埋点和页面事件的同比、环比趋势对比,比如淘宝App 首页在 618、双 11等大促活动的趋势对 比;可以根据埋点数据做用户增长,提升用户留存率,比如根据淘宝App 商品 四级页的点击到达率来分析用户在之前哪个环节跳出。

三、数据“七字诀”

经过大量的埋点需求项目实践,笔者总结出埋点的七个要点,简称“七字 诀”(对应上图所示的点击埋点、曝光埋点协作流程)。

  • 位:埋点的位置。
  • 埋 :埋点规范对接,前端开发埋点。
  • 时 :开发进行埋点后的联调时间、上线时间。
  • 测:埋点在联调、上线时测试。
  • 传:埋点测试通过后传的参数,埋点传参经过数据采集、数据仓库(对 部分字段进行解析)。
  • 表:埋 点经过数 据采集、 数据仓库 传参后 落表,为实 时或离线 的 Hive 表。
  • 统:埋点验证成功后的统计。
关于埋点需求实战案例、埋点规范样例与测试样例,更多精彩内容推荐阅读《数据产品经理:解决方案与案例分析》。​

有关终于有人将数据埋点讲明白了的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  3. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  4. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  5. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  6. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  7. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  8. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  9. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  10. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

随机推荐