服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

B站埋点分析平台的构建之路

日期: 来源:哔哩哔哩技术收集编辑:李奎

本期作者



李奎

哔哩哔哩资深数据产品经理


前言


B站内各业务产品迭代离不开各种数据决策,而依托于埋点的用户行为数据在其中起到了 关键作用。埋点也是算法推荐、渠道投放、业务决策的重要数据来源,鉴于此,如何规范埋点设计,高效采集,让业务团队快速直观分析成为了推进业务发展的重要一环。
本文主要分享B站过去在埋点规范设计、埋点分析应用的经验,我们相信数据只有流动起来,才能发挥它的价值,The data must flow!


业务背景简介


在 B站,产品的迭代少不了数据指标的监测,公司内各业务线的产品经理、运营、分析师会关注产品内部的各个指标,从数据采集到分析一整套的流程都需要有高效的工具支持,大家日常会使用各种分析模型进行获客、活跃、留存、转化等数据指标分析。

北极星埋点分析平台是内部统一的埋点定义管理、录入、分析平台,目前已经接入B站内数十项业务,管理12W+ 埋点事件信息,日增量上报埋点数据过千亿。通过埋点分析平台提升营销、产品、运营的数据驱动能力。


埋点分析平台框架


如图所示,B站的埋点分析平台实现了埋点从设计管理-采集-测试-入库存储-查询分析-埋点下线的全过程管理


图:埋点分析平台框架


过去几年B站的埋点分析平台经历了不断的填坑成长,整体可以分为 2 个阶段

阶段一 :Excel+info 文档管理埋点设计信息,埋点日志单点上报至不同 Hive 表,下游使用通用型 BI 工具进行可视化分析+离线表 SQL 自定义查询数据指标

阶段二:统一埋点数据上报模型及上报通道,规范埋点采集 SDK,设计迭代埋点分析专用可视化平台,引入 Clickhouse 查询引擎提升查询速度


平台设计及实现


基于埋点数据流在各个环节流转及管理,抽象为埋点分析平台的主要结构如下


图:埋点分析平台产品主要能力


各个环节中相互配合,相互协作,接下来我们简单介绍一下中间的关键模块

埋点设计规范及管理:引入 Spmid 埋点设计命名规范,同时通过埋点管理模块对埋点事件名称、公共属性、类型公共属性、私有属性进行结构化管理,从 Excel/ Info 文档各自管理升级到平台统一录入

埋点测试:通过扫码连接测试设备,并关联埋点管理元数据信息,对上报埋点进行直观的可视化校验

埋点分析:抽象日常埋点数据分析中会高频使用场景,形成了事件分析、漏斗分析、留存分析、路径分析、单用户行为细查、用户分群、自定义 SQL 查询等分析模块,形成低门槛的分析

数据看板:通过存储埋点分析模块的结果,沉淀业务分析指标,提升整体分析结果的复用性,通过数据看板的分享、复制等功能进一步降低普通用户查看埋点数据指标的门槛

运维监控:通过对埋点 event采集时对用户侧触发、上报、服务器接收、数仓归档等几个时间均增加时间戳字段,在下游准确监控埋点上报及延迟情况,另外对埋点新建、使用、存储成本等T+1 同步至数仓补充相关效率指标监控


埋点设计规范及管理


在业内通常通过 Event track 记录Event(埋点事件)、Session(会话)、User(用户) 三方面的信息,然后在下游数仓中进行梳理清洗使用,形成基于Event-User 为主要结构的埋点数据模型。基于此我们定义了新的事件模型和数据传输协议,序列化及反序列化协议(protocol buffer协议)

为什么事件(Event)和用户(User)两个核心实体结合在一起就可以清晰地描述清楚用户行为,实际上,我们在描述用户行为时,往往只需要描述清楚几个要点,即可将整个行为描述清楚,要点包括:是谁、什么时间、什么地点、以什么方式、干了什么。



对于埋点的命名,我们采用了业内比较通用的 Spmid (Super Position Model)全称超级位置模型命名规范,一个埋点名称由 5 段组成,分别是业务.页面.模块.位置.类型。对于各段信息进行标准化定义管理,例如埋点类型,我们枚举了点击、曝光、浏览、播放、系统全局、性能 几种类别,在设计埋点时便严格按照这些类型进行枚举选择。

同时在埋点属性的基础命名上我们做了一些限制,能有效的提升规范性

  • 事件和属性命名统一采用下标命名法或驼峰命名

  • 事件和属性的命名单词全部为名词 属性命名时,使用单词为通用名词

  • 方便复用通用的字段属性复用已有字段,如 topic_id 、order_id

  • 服务避开默认字段属性名避开使用 / | * 空格等特殊字符

基于 Spmid 的埋点命名规范,在我们进行数仓建模时可以根据关键字段信息进行业务域DWD 中间表划分,并进行相关分区字段添加,优化查询速度。



埋点的上报协议侧,我们采取了公共参数、类型公共参数、私有参数的结构。其中类型公共参数、私有参数我们均放在独立扩展字段中使用 JSON 嵌套方式上报,在下游查询中解析。

在没有产品化管理之前,采用文档或表格的方式对埋点信息进行维护


图:文档录入埋点参数用例


在产品功能上线后我们通过标准化的操作完成埋点的定义和录入管理


图:埋点管理产品


在埋点的元数据信息中,我们增加抽样比例、核心埋点标记、自定义分流标记,通过埋点管理平台推送至埋点采集 SDK,针对抽样埋点,实现不发版上报量就能动态控制埋点上报抽样比例,从全量上报到远程下线采集的自助配置,在业务高峰期能降低下游传输、存储压力;对标记为核心埋点数据传输链路上单独分流至高优队列,提升 SLA 保障等级。

埋点元数据产品化管理中我们实现了对属性、属性枚举资产化管理,引入埋点属性组(模板)概念,一次设计,多处引用,降低埋点设计中重复录入,属性命名不统一的问题,长期看来实现埋点设计逐步沉淀为业务资产。

从设计到埋点应用的过程中,各团队在各环节各司其职相互配合,实现从需求->埋点->数据->指标的流转。



埋点测试模块


为了提升埋点数据准确性,我们设计了埋点测试模块,移动端(iOS端、Android端、iPad端等) 扫码连接后,所有测试设备上报数据通过Nginx转发到Lancer的gateway组件,并直接写入到Kafka集群(用于缓冲),lancer-Collector组件将数据从kafka提取,然后在下游实现可视化的直观展示。在测试模块中关联埋点元数据信息进行直观展示,用于判断埋点是否正常上报。


图:数据测试流程图


图:数据测试操作示意图


埋点分析


业务分析中比较高频的场景是对查询埋点的UV、PV 等基础指标,这类场景我们经过拆解后,发现主要包含以下诉求,基于以下的需求场景我们重新设计了埋点分析产品模块。

  • 进行埋点私有参数的过滤

  • 进行不同参数的分组聚合

  • 对多个埋点事件的结果再进行二次的计算,CTR 指标等

  • 查询结果能查看明细和汇总指标

  • 查询结果能快速分享并支持二次编辑


图:埋点数据分析产品设计


用户在前端页面发起查询后,会将event_id、 filter param、group param 等参数传递给服务端,在后端的 query engine 中拼接完整的查询 SQL,提交查询任务。在服务端首次接到查询任务后,会将任务提交查询队列,并同时返回任务ID。异步执行查询任务,在获取到结果后存入缓存。前端应用在获取到任务ID后,会根据任务ID定时获取任务结果,直到查询到结果展示。

在计算引擎的选择上 ,早期使用 Hive 作为计算引擎,单个事件分析查询通常耗时超过 10min,后续采用 clickhouse 做为查询引擎后,相同的查询分析控制在 亚秒级就能得到结果,85%+查询分析控制在 30s 内完成。


图:埋点数据分析流程示意图


服务端在前端传参后的分析 SQL 基于最简单的单个事件分析逐步叠加,完善为单事件、多事件、关联用户标签、用户人群等复杂场景,以下为事件分析发起查询时拼接的查询样例。


--已过滤敏感信息select  AA.logDate,  AA.flag,  CAST(AA.indicator AS String) AS indicator,  AA.private_sourcefrom(    select      log_date AS logDate,      'A' AS flag,      CAST(SUM(pv) AS Float64) AS indicator,      extended_field_values [indexOf(extended_field_keys,'source')] AS private_source    from      event_table_name    where      log_date BETWEEN '20211209'AND '20211215'      AND event_id = 'event_id'      AND app_id = xx    group by      log_date,      extended_field_values [indexOf(extended_field_keys,'source')]    order by      SUM(pv) desc    limit      5000    union all    B query  ) AA settings max_execution_time = 150;  


漏斗分析


对于用户关键业务流程中的转化,这类我们一般使用漏斗模块进行分析。通过拆解 BI 分析师及访谈业务产品和运营,对漏斗分析需要包含以下几项能力

  • 转化步骤间能设置不同事件转化的先后触发

  • 每个步骤过滤不同的埋点私有参数

  • 能查看每个转化步骤过去一段时间变化趋势

  • 单独设置漏斗转化窗口期


图:埋点漏斗分析产品设计


针对产品页面上简化后的漏斗分析


--已过滤敏感信息SELECT level,       uniq(buvid) AS cntFROM     (SELECT buvid,         windowFunnel(86400)(ctimes,(event_id = 'event_id123'), (event_id = 'event_id456'), (event_id = 'event_id789')) AS level    FROM         (SELECT buvid,         event_id,         ctimes        FROM event_table_name1        WHERE ((log_date            BETWEEN '20220915'AND '20220915')                AND (event_id = 'event_id123')                AND arrayExists(x -> splitByChar('`', x)[indexOf(extended_field_key, 'parent_area_id')] IN ('1'), extended_fields_value_1))        UNION        ALLSELECT buvid,         event_id,         ctimes        FROM event_table_name1        WHERE ((log_date            BETWEEN '20220915'AND '20220915')                AND (event_id = 'event_id456')        UNION        ALLSELECT buvid,         event_id,         ctimes        FROM event_table_name1        WHERE ((log_date            BETWEEN '20220915'AND '20220915')                AND (event_id = 'event_id789')) )        GROUP BY  buvid SETTINGS distributed_group_by_no_merge = 1)        GROUP BY level


其他分析模块


除了事件分析、漏斗分析,我们不断抽象业务分析的模型,实现了一系列的基础查询模块,让业务运营、产品和分析师能对埋点数据的基础查询直接通过产品页面拖拽点选完成分析。



数据分析结果沉淀上遇到的坑,在分析结果的保存上,我们集合到了数据看板中。

这个部分在随着业务分析的增加,到后期已经达到了过千个业务分析数据看板,用户第一次打开时并发的查询导致加载缓慢。

  1. 初期用户打开即刷新看板内的分析卡片,结果做缓存,避免重复查询

  2. 随着卡片越来越多,为了提升看数效率,我们在每日凌晨刷新一遍 T+1 动态更新类型的看板卡片

  3. 随着刷新的卡片增加,以及公司降本增效的要求,我们优化了查询更新机制。对所有看板进行访问日志记录,根据看板过去7 日访问情况针对新的刷新。在不降低业务查看体验前提下,大大降低了服务器压力


图:埋点数据看板设计


总结及未来展望


埋点分析平台致力于提升B站对埋点数据的采集、管理、分析提效,目前已经接入B站数十个业务端产品,周新增数百个埋点,我们也在思考如何进一步提升埋点管理和分析应用的效率,以发挥数据价值。

  • 埋点动态 TTL 生命周期管理,能自动化的精细到每个 event_id,降本增效

  • 基于埋点管理平台配置化的中间表生成机制,高效划分业务 DWD 表

  • 与公司内 AB 系统、用户标签等系统更深度的融合,让数据在各系统间流转


References

[1] https://mp.weixin.qq.com/s/dUs7WUKUDOf9lLG6tzdk0g

[2]  https://blog.naaln.com/2017/08/alibaba-data-track-1/


以上是今天的分享内容,如果你有什么想法或疑问,欢迎大家在留言区与我们互动,如果喜欢本期内容的话,欢迎点个“在看”吧!


往期精彩指路

相关阅读

  • ChatGPT解放“PPT民工”?他们也担心被“革命”

  • ▲ 面对做不完的PPT,受访者说,“我反感,但我又依赖于它。”(视觉中国 / 图)全文共5568字,阅读大约需要13分钟GPT-4的惊艳表现让黄泽森感受到什么叫“工业革命级别的效率提升”。“
  • 8小时删!全是付费买的资源,请低调使用!

  • 众所周知,想查找一些书籍、资料或者国外的东西来看,要么付费,要么翻墙风险高,有时各种网站来回折腾,还不一定找得到。但对我来说,这些都是小意思。最近后台也收到一些读者问我有没
  • UNI品牌 TYPE-C to Lightning数据线,C94认证MFI线

  • ---爱扫货发车第 1557 期---产品介绍跨境电商UNI 品牌TYPE-C to Lightning数据线,全新原封精美盒装包装,MFI认证C94头子,支持系统持续升级,充电不弹窗~月初开团过一次,热销600多
  • 前沿 | 付玉明:数字足迹的规范属性与刑事治理

  • 数字足迹的规范属性与刑事治理作者简介:付玉明,西北政法大学刑事法学院教授,博士生导师,中国刑法学研究会常务理事兼副秘书长。《法律科学》副主编,西北政法大学刑事法律科学研究
  • 期刊 |《华东政法大学学报》2023年第2期要目

  • 《华东政法大学学报》2023年第2期要目全文转载自“华东政法大学学报”微信公众平台要 目数字时代民法的发展与完善王利明 中国人民大学民商事法律研究中心研究员,法学博士
  • 期刊 | 《中外法学》2023年第2期要目

  • 《中外法学》2023年第2期要目全文转载自“中外法学编辑部”微信公众平台目 录特稿1、刑法教义学中的形式理性陈兴良数字法学2、论数据持有者权 构建数据流通利用秩

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 沙伊同意复交后,又一大突破将至?

  • ► 文 观察者网 熊超然3月10日,“沙伊北京对话”发表三国联合声明,不仅沙特阿拉伯和伊朗两国紧张关系有所缓解,中东地区也迎来了更多和平稳定的曙光。当地时间3月23日,沙特媒体
  • 印度"对等报复"英国

  • ► 文 观察者网 杨蓉在过去的周末,印度驻英国外交机构遭海外“分裂分子和极端分子”侵入并撤下国旗,引发印度政府及海外侨民愤怒,印方指责英国警方对“暴力行为”“漠不关心”
  • 以分权弥合医患冲突

  • JMSC管理科学学报以分权弥合医患冲突罗家德,张雅娟等 2022年第7期 考察近年来公立医院综合改革的路径与步骤,显现出资源配置从“重财与物”到“重人与技”的政策走向,这同时意
  • 小心被溯源反制,还不注意??

  • 声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试