技术标签: 大数据
作者介绍
前网易出口大数据产品经理一枚
负责过数据采集、bi系统、ab测试、画像平台等应用层平台搭建
酷爱健身、钟爱咖啡、喜爱摩托、热爱生活
如今互联网人对于数据的使用可畏常态化,虽然有的是日常工作,有的只是几次需求,但无论对与数据有多少依赖,在数据的使用或解读上,以下情况大家应该都会遇到一二。
1)团队来了一位新同学,想分析某个功能的数据情况,但感觉无从下手。便问老员工这个功能对应的埋点,那个页面对应的参数,得到的不是口口相传就是看着聊天记录中的文档地址,面对着黑压压一片的埋点信息,内心估计已经开始神兽奔腾了;
2)新版本上线后进行效果分析,发现埋点出现纰漏,此时若是重要数据,需要紧急找人发版,时间紧张又担惊受怕;若此时是一般数据,开发同学的回复大概率是:“和下个版一起迭代”,时隔半年一年再进行分析,这段数据波动的原因估计也没人能说清了;
3)测试同学拿着协作的埋点文档,测试过程中发现不是字段对应错误就是信息维护不全,解读起来麻烦不说,如果碰到大版本还需要进行埋点回归,不仅测试过程中工作量大,还有漏测的风险。
埋点数据作为日常数据最重要的三大来源之一(包括业务数据和对外合作数据),其重要性不言而喻。上能影响推荐、ab实验、数据分析的准确;下能影响仓库的结构设计和日常维护成本。当前数据更是作为资产被各家公司所重视。想象一下到年终盘点时,面对一团“剪不断,理还乱”的数据,会是一种什么心情。
笔者通过对最近接手的埋点质量项目的一些经验总结,希望通过这篇文章给大家分享一下心得体会。
01 埋点质量问题有哪些?
埋点过程整体链路环节较长,囊括的角色也相对较多。出了问题排查难度大,周期长,而且涉及团队配合问题也不好把控,下面我们来总结一下哪些环节容易出问题导致埋点质量问题.
如果在数据产出阶段不进行把控,等到了应用阶段就会出现:数据不完整、数据重复、数据不一致、数据不匹配等数据问题,所以解决埋点质量问题要做到“预防为主、防治结合、综合治理”的方针,下面我们来看下如何进行埋点质量管理。
02 如何进行埋点质量管理?
要开展埋点质量的管理,笔者认为可以从以下三个角度开始执行:意识、制度&流程、工具。
01 意识
这里所谓的意识更多的是一种价值观、信念或者说是一种行为“动机”。是每个同学做事对自我要求的一项软性标准,类似于“道德”,可能读到这大家觉得有些浮夸,怎么管理个埋点都上升到道德层面了。别着急,继续往下看~
对于执行层,无论是分析师或埋点产品必须要对出自自己手中的需求要负责,时刻意识到,埋点需求是整条数据链路的源头,并且用户实时发生数据拥有着不可回溯性。如果要是从源头开始“错、缺、乱”,那后续的环节不仅增加了成本,同时这部分数据也“白白流失”了。
而对于高层管理者在任职期间要适当的给予数据治理一些侧重,无论是在人力上还是时间上。让自己或自己的上级领导提升一些基础建设的意识,磨刀不一定会误砍柴功。用产品进行向上管理固然重要,毕竟是一个看的见、用得到并且能“体会”价值的载体。
如果只在乎表面光鲜,那背后的“千疮百孔”要何时才能有机会修补。任何一个组织创建时都需要有一个文化或者信念,在做事的时候可以时刻提醒自己。所以在质量管理的第一个重要角度是意识。
02 制度&流程
上面讲述了意识层面上的统一,下面开始说的就是行为上的规范。所谓无规矩不成方圆,任何一件事有一个良好的规范去执行,那出错的概率就会比每个人自由发挥低很多。这里所说的制度包括两个方面:角色流程和采集规范。
1) 角色流程
埋点从需求产出开始要经历:埋点开发、数据上报、数据采集、数据清洗、数据入库最终到业务应用,涉及的人员包括埋点产品&分析师、开发、测试、采集工程师、仓库工程师等。
各个环节能有机组合就需要一个良好的配合制度,既能保证工作有条不紊,同时又避免了权责混乱导致的问题无法及时响应。以下有个简短的配合流程可以简单作为参考:
2) 采集规范
a) 文档规范
文档规范要求负责埋点的同学列清相关需求点,包括:所需要的事件信息、统计位置、打点逻辑、上报时机。甚至还可能有失败后如何处理、失败原因、变更历史等相关内容,细化的需求文档有利于降低其他环节同学的理解偏差,也便于埋点使用时了解前因后果及错误信息。
b) 接入规范
是指业务开发同学在使用埋点组件时要严格遵守组件方提供sdk的使用规则,例如通用事件内扩展字段的埋点位置、上报时机等。切不可根据“自我经验”进行更改优化。
c) 命名规范
命名规范适用于埋点信息的命名,包括事件id、事件参数以及实际的参数值,做到以下原则:
方便解读
不要有特殊字符,不要采用系统关键字或预置关键字进行命名
字段不易过长
版本前后字段映射统一等
无法挨个维护的的参数值可以采用spm或scm模型来制定采集规范。
spm叫超级位置模型,最早是受到土地户籍制度启发而设计的位置系统,目的应用于页面的统计、追踪页面的来源等场景,通常在埋点时作为埋点参数上报到数据后台。其编码形式采用A.B.C.D四层级进行组合,分别代表了业务、页面、页面区块、区块内的点位,
我们以小红书的商城首页举例:
业务:商城(shop_center)
页面:首页(home_page)
页面区块:变美季(beauty)
区块内点位:3
spm模型命名澳大利亚·秋冬必备神级修复的位置内容就可以写成:shop_center.home_page.beauty.3
在统计数据时可以通过该参数知道这个模块的位置的流量大小情况。
scm叫超级内容模型,用来标识唯一一块内容的模型,在埋点时scm模型的数据作为埋点参数上报到数据后台,其编码形式和spm一样也是通过A.B.C.D四个层级进行编码,只不过四个层级记录的信息与spm有所差别,分别是:内容来源、投放算法、算法版本以及对应的人群,还以上面的内容为例:
内容来源(content_source):shop
投放算法(algorithm):cf
算法版本(version):3.3
对应人群(crowd):woman
该条内容:澳大利亚·秋冬必备神级修复的内容情况如下:shop.cf.3.3.woman, 可以统计不同位置下该条内容所展示的信息和流量情况
spm和scm作为两种不同的编码规范,我觉得可以根据自己的需要进行相关的改良,比如更改层级或更改定义等。
03 工具
1) 埋点模型
埋点模型采用的是事件模型,事件模型描述了一个人做某件事情所需要的几个重点要素:时间(when)、地点(where)、人物(who)、途径(how)、结果(what)
例如:
小明4月3号早上9点用小米手机在京东买了一个iphone12,转译到埋点语言就是:
以上设备信息均为虚拟信息,仅作参考
实现以上信息采集的埋点方式当前行业内有:代码埋点、无埋点。
代码埋点:代码埋点是根据具体埋点需求进行数据采集的方式,这也是用户行为数据最早的采集方式,代码埋点可支持客户端埋点和服务端埋点。客户端埋点主要采集用户行为,服务端埋点更多采集的是业务数据。
优点:
埋点可以做到按需采集、减少无效的信息上报;
事件触发方式可以自定义,降低端上的资源消耗
缺点:
新增埋点周期较长,需要跟随版本迭代
管理成本较高,造成系统代码“冗余”
采集数据有“缺失”,只能获取到上线之后的数据
无埋点:无埋点是识别端上各区块元素,对其进行全面的采集
优点:
新版本上线也可看到历史数据
前端埋点成本低,管理成本低
埋点范围覆盖相对较广
缺点:
数据冗余过剩
对应用开发的元素命名和开发规范要求严格
不能进行自定义数据的采集
服务端压力较大
为了埋点数据全&准的两个准则,一般可以采取两种方式组合的方式,重点业务、非重点页面采用代码埋点,重点页面非重点业务采用无埋点,合理分配两种埋点策略做到不丢不漏在合理的维护成本范围内,尽可能多而全的采集。
埋点模型的具体原理和如何埋点如有兴趣可在公众号内自行学习。
2)埋点平台
虽然有了意识上的“统一“、制度上的规范,但我相信依旧有一些团队在沿用公用文档维护埋点信息,文档化维护方式在信息量小的时候问题还不凸显,但当面对成百上千的埋点就会出现:埋点信息维护不全查找困难、测试同学面对“海量”的上报数据头晕眼花极容易漏测、实际上报与需求不符无法及时发现等。
所以埋点质量的最后一个环节就需要通过平台化来进行辅助管理,主要管理的方向有以下几个方向:
元数据管理完善、可溯源,提升查询效率
自动化测试+人工校验、降低漏测风险
质量监控,提升对错误埋点的发现效率
引入埋点流程、辅助进行“团队管理”
a) 元数据的完善
元数据管理主要包含以下内容:事件基础信息、业务组织架构、当前开发状态、操作日志及变动日志
事件基础信息:事件id&名称、参数id&名称、参数值id&名称,统计口径、上报时机、版本、需求地址等。
业务组织架构:事件归属的页面、功能层级结构等信息
当前开发状态:该事件所处的流转状态,包括:需求中、需求完成、开发中、开发完成、测试中、测试上线、灰度、正式上线
操作日志及变动日志:记录系统上所有人员对于元数据的操作日志以及该事件历史版本变动日志等
有了完备的元数据信息,还需要提供完善的筛选和查找机制,让埋点使用人员可以方便管理和查询;同时平台可以根据埋点组件规范和埋点信息自动生成一段代码给到业务开发同学,即降低了代码埋点的开发成本,也降低了出错的概率。
b) 自动化测试
对于测试而言,有了完善元数据后埋点平台可以提供:
1.自动化的测试功能
可以根据实际上报的数据明细自动比对元数据模块下维护的信息内容,在每次测试任务中都会自动提醒哪些事件不符合规范,极大的提高了测试效率,加上后期的人工校验,也会降低漏测的概率。
2.规范的数据展示方式以及详细的信息记录
传统的测试方式一边需要对着文档、一边需要看着一条巨长的上报数据来找到需要比对的信息来确认埋点是否准确。平台完全可以结构化上报数据,隐藏无关维度信息,并根据上报内容关键字(事件或参数信息)自动去元数据内进行数据查询,埋点同学每次测试任务只需要了解版本需求范围即可。
c) 质量监控
即使测试通过了,埋点数据就一定让人放心了么,肯定不是的,上线后面对大样本使用,用户app什么样的机型都有,甚至会被篡改一些信息。为了能让最终上报的数据减少错误,埋点平台可以提供质量管理模块,具体监控策略可以根据数据质量评估标准通用的5项准则:完整性、及时性、唯一性、稳定性、准确性进行设定。
d) 引入埋点流程辅助管理
整个埋点平台使用流程可以根据上面2.制度&流程的角色流程进行划分和管理,上线前每个环节由相关负责人员进行确认,多层确认机制可以保证埋点信息的完善和准确,也为后续管理上带来了极大的便利性。
埋点平台功能框架参考如下:
03 写在最后
数据质量问题在业务发展到一定阶段都会遇到,就像升职以后需要管理团队一样,不同级别面临的问题不一样,所需要采用的手段也不一样。希望本篇文章可以让那些即将面临这个问题或已经身在其中的小伙伴能有一部分可借鉴的地方,因篇幅问题涉及sdk、埋点设计以及平台搭建的部分都没法详细展开描述,如果对此感兴趣或有疑问的同学欢迎一起交流。
一个数据人的自留地是一个助力数据人成长的大家庭,帮助对数据感兴趣的伙伴们明确学习方向、精准提升技能。关注我,带你探索数据的神奇奥秘
1、回“数据产品”,获取<大厂数据产品面试题>
2、回“数据中台”,获取<大厂数据中台资料>
3、回“商业分析”,获取<大厂商业分析面试题>;
4、回“交个朋友”,进交流群,认识更多的数据小伙伴。
最近一个项目开发需要采用非常简单的MVC+Ajax技术,实现对网页部分更新操作,因为Ajax在实际项目开发中使用较多,所以自行整理一份,以便将来的运用。
来源| 程序员秘密作者 | 叶帆科技 刘洪峰《程序员》创刊已经20余年了, 我参加工作也已经20多年了,我专职做程序员的时间和《程序员》创刊的时间几乎一样长。记得很多年前曾为CS...
单板启动后,会经常看到提示“perf interrupt took too long (n &gt; x)”,这样的打印信息。相关配置参数有:/proc/sys/kernel/下perf_cpu_time_max_percent: perf分析工具最大能够占用CPU性能的百分比0:不限制1~100:百分比值perf_event_max_sample_rate: 设置per...
准备1,dvwa源码压缩包 和 蓝莲花源码压缩包(GitHub官网下载即可)2,phpstudy 集成环境(需要注意一些服务的版本)搭建步骤0x01打开小皮,开启Apache 和mysql 服务,mysql 版本需要选择 5.x版本:然后搭建 dvwa ,将 dvwa的源码压缩包解压到网站根目录 WWW :将 dvwa 文件下的 config 中的config.inc.php.dist 重命名为 config.inc.php:并修改其中的数据库名,数据库用户名以及密码,自定义..
神经网络中损失函数后一般会加一个额外的正则项L1或L2,也成为L1范数和L2范数。正则项可以看做是损失函数的惩罚项,用来对损失函数中的系数做一些限制。正则化描述:L1正则化是指权值向量w中各个元素的绝对值之和;L2正则化是指权值向量w中各个元素的平方和然后再求平方根;一般都会在正则化项之前添加一个系数,这个系数需要用户设定,系数越大,正则化作用越明显。正则化作用:L1正则化可以产生稀疏权值矩阵,即...
该消息总线主要是解决多个模块间的耦合问题,是阻塞式的。+ 设计思路:被通信对象向消息总线发布一个主题,这个主题包含消息主题、消息类型和消息处理函数,消息主题标示某个特定的主题,消息类型用来区分标示这个主题会响应某个特定的消息,消息处理函数用来响应该主题的某种消息类型。通信对象向消息总线发送某个特定主和某个特定消息,总线就会根据消息主题和消息类型找到对应的消息处理函数处理该请求。..................
环境 nginx 1.0.5configure 配置通过./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre/ --with-openssl=/usr/local/openssl/ --with-http_ssl_module --with-http_flv_module...
SLAM【十】回环检测回环检测的作用及意义作用意义回环检测方法准确率和召回率词袋模型字典字典的结构功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入回环检测的作用及意义作用问题:为了解决整个SLAM出现的累计误差,导致无法构建全
今天的日期datetime.date.today()>>> import datetime>>> datetime.date.today()datetime.date(2021, 4, 10)>>> d=datetime.date.today()>>> print(d)2021-04-10>>> type(d)<class 'datetime.date'>
iso快门光圈Getting a nice camera is just the first step in taking great photos—you also have to learn how to use it. Shooting on auto will only take you so far. Shutterspeed, aperture, and ISO may sound ...
代码链接: https://github.com/wjw1758548031/Golang/blob/master/tcp.gotcp协议相对于udp协议的差别TCP UDP是否连接 面向连接 面向非连接传输可靠性 可靠 不可靠应用场合 少量数据 传输大量数据速度 慢 快根据这个确定运用场...
smbclient用法 : 参 数: [网络资源] [网络资源]的格式为//服务器名称/资源分享名称。 [密码] 输入存取网络资源所需的密码。 -B 传送广播数据包时所用的IP地址。 -d 指定记录文件所记载事件的详细程度。 -E 将信息送到标准错误输出设备。 -h 显示帮助。 -i 设置NetBIOS名称范围。