# 埋点方案 在实际应用中,很多数据不准确、无法计算的问题最后多数定位到是埋点缺失、错误等造成的,因此严格控制数据质量是非常必要和重要的事情。 埋点方案功能正是通过以下三点来保障数据质量: 1. 数据采集需求管理,方案可共享保证需求来源一致,来源可记录,变更可追踪 —— 通过埋点的增删改、记录变更历史功能实现 2. 将埋点方案作为数据处理规则,规避无效数据污染数据源 —— 通过设定计划外(埋点方案外)的数据处理规则实现 3. 通过埋点方案自动化校验,提高验证效率 —— 通过检测埋点状态功能来实现 ![](<https://img.kancloud.cn/4c/2c/4c2c6b318aca0830eae2976de25714da_2474x1360.png>) ## 设计埋点方案 ### 设计前准备 **确定数据分析和应用的核心诉求** * 验证功能设计是否合理?帮助产品迭代? * 关键流程的转化情况? * banner广告/推荐位的效果转化? * 注册/登录的用户情况? * 自动化运营 **确定核心业务的关键路径** 拆解各环节,设定环节指标(如各环节转化率),根据环节指标,提取动作行为,即事件,该事件就是我们要进行统计的埋点位。 **确定用户属性** 确定描述用户的维度,比如性别、用户等级等后续用于分析的属性。 ### 设计埋点方案 经过前期准备,按照方舟当中的数据模型,可以把埋点方案拆分为两部分: * 事件方案——确定上报哪些用户行为 * 用户方案——确定上报哪些用户属性 一份完整的埋点方案由事件、事件属性和用户属性三部分组成。 **事件** 记录用户在使用网站、APP 或小程序的过程中触发的行为。 用户的行为有一部分会在他们使用的过程中自动被采集上来,常见的如:跟访问有关的“页面浏览”,“停留时长”;另外一部分包含具体业务含义的,则需要通过埋点才能得到,例如:“注册”、“登录”、“支付”等等。 **事件属性** 可以通过属性为事件补充相关的信息,例如:位置,方式和内容。 用户产生行为时就会上报具体的属性值,比如对“购买事件”定义了“支付方式”的属性值,则根据不同的行为可能上报的是微信支付,支付宝支付。 小舟在电商平台上花一万元购买了一台联想电脑。这个动作就会产生一个名为“购买”的事件; 而“购买”事件,同时也可以包含:“品牌”,“价格”这两个属性,而“联想”和“一万元”就是属性的具体值了。 | Event要素 | 要素说明 | 采集的数据 | 示例 | | ------- | --------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------- | | Who | 参与事件的用户 | 用户唯一ID | H522a3bd525a2af | | When | 事件发生的时间 | 自动获取 事件当时时间 | 11月11日00:02:03 | | Where | 事件发生的地理位置 | 自动获取 IP、GPS信息 | 114.242.249.113 | | How | 事件发生的方式 | 使用的环境 | <p>设备品牌:Apple </p><p>设备型号:iPhone 6s 操作系统:iOS </p><p>屏幕分辨率:1920*1680 </p><p>运营商:中国联通 </p><p>网络类型:Wifi ……</p> | | What | 事件的内容 | 自定义采集的事件:EventID 事件属性:Key-Value | add_to_cart product_name:耳麦 product_price:666 | **用户属性** 在分析过程中,需要引入注册用户的更多维度,比如注册用户ID、姓名、用户等级等等,也需要进行梳理,方法同事件属性。 埋点方案整理成方舟提供的埋点模版整理即可 ![](<https://img.kancloud.cn/95/3c/953c45303b64c02b8974b39c45528963_1556x676.png>) 整理完埋点方案后点击批量导入,作为后续研发埋点的需求来源和数据处理的规则。以下将以事件方案为例说明在方舟中如何管理埋点方案: ## 管理埋点方案(以事件方案为例) ### 1 管理计划中的事件方案 计划中即表示在数据上报前做好了规划要采集的事件;计划外表示不在埋点方案中,但实际上报了数据的事件和属性。 >[info]通过可视化埋点部署的埋点自动会被视为计划中的事件 #### A 添加方案 按照埋点方案模版的格式整理完成后,即可批量导入; 系统预置部分事件及属性,如有需要可以直接使用,如果不需要也可以清空;后续需要使用时,选择导入预置事件/属性即可。 ![](<https://img.kancloud.cn/71/cc/71ccb345aef4ad79a7837f066a1a204f_2474x1358.png>) 当已上传过埋点方案,后续有新的产品功能迭代需要新增少量埋点时,可以选择单条添加 ![](<https://img.kancloud.cn/d7/6b/d76b3e66ef9134063674a0ecd24a6653_2474x1360.png>) 对于所有事件都有的通用属性不必在埋点方案中每个事件中添加,在通用属性中导入一份即可,方舟默认会采集部分属性(预置的通用属性),详见[https://docs.analysys.cn/integration/prepare/default-data](https://docs.analysys.cn/integration/prepare/default-data) ![](<https://img.kancloud.cn/d4/84/d484ee47883cff37aee138fe5280cea8_2356x1356.png>) 此外若有需要也可以添加自定义通用属性,集成SDK时注册为通用属性即可。 ![](<https://img.kancloud.cn/94/74/9474ae929526a62f60141019bf8fa313_2474x1366.png>) #### B 修改方案 支持修改埋点的平台、事件显示名称、事件说明、事件标签、显示状态、数据类型等; ![](<https://img.kancloud.cn/77/0f/770f1037a97e900b0fcc3e73b4f03502_2474x1360.png>) >[danger]当属性已回数时,属性的数据类型无法进行修改 也可以进行删除、设置是否在分析时显示 ![](<https://img.kancloud.cn/40/81/408138b72218583196de5261ce7f7134_1090x754.png>) >[info]删除操作说明: 当事件**未回数**时,删除即表示从方案中删除,不打算采集,后续完全可以使用相同ID重新定义,当未定义时有相同事件ID的数据上报时,将根据设置的数据处理规则处理; 当事件**已回数**时,删除代表从埋点方案中移除,相应事件和属性会进入到计划外,并不会删除历史数据;也不能定义相同ID的事件和属性,或者添加数据类型不同的属性,若想要再次启用可以从计划外再次添加到计划中 >[info]显示开关说明: 开关打开时,相应事件/属性在分析的事件和属性下拉框中可见; 开关关闭时,相应事件/属性在下拉框中不可见,同时不可见的事件也不会被计入【任意事件的用户数/次数和人均次数】的指标计算中; 部分预置的事件/属性用于热图计算,如果关闭同样在事件/属性下拉框中不可见,但不影响热图分析的结果。 对于通用属性同样支持删除、设置是否显示的操作 >[info]删除操作说明 已回数的属性删除后仅代表该属性不再是通用属性,将会出现在各个已回数的事件下; 未回数的属性删除后仅表示各个事件都不需要采集该属性, 如果有个别事件需要该属性,需在计划中埋点该事件下添加。 >[info]显示开关说明: 开关打开时,在相应的条件和维度中可以选择到该属性; 若不需要分析,可以选择关闭; 部分预置通用属性不支持作为条件和维度,禁止删除、禁止打开显示开关。 ![](<https://img.kancloud.cn/e8/7d/e87dee3803008f7a9fae831fbb854112_856x652.png>) **对于埋点的改动系统都会记录,谁在什么时间修改了什么,修改前后变化是什么,方便异常追踪。** ![](<https://img.kancloud.cn/cd/20/cd20e5c7f3bbac1b5ecf3eb37401b7f1_2474x1358.png>) #### C 查看方案 当有多个平台、多种埋点方式时,可以通过分组、过滤条件、搜索等快速找到相应的埋点 **C1 展开/收起全部属性** 点击 **展开全部属性** 可以查看全部事件下的属性,也可以展开部分事件 ![](<https://img.kancloud.cn/38/fd/38fd133cd226c310465d53d05ee1682f_1530x832.png>) **C2 分组显示** 可以按照平台、是否预置、埋点方式、是否回数、标签等分组查看 ![](<https://img.kancloud.cn/16/cf/16cf688241a66c02f26e5d5ff96b3bbc_526x616.png>) 当按分组查看时,默认收起全部分组,可以展开全部分组,也可以点击分组所在行的空白处可以展开单个分组 ![](<https://img.kancloud.cn/4b/10/4b10171270f91050e117a643b8275254_2300x1032.png>) **C3 过滤条件** 同样支持根据平台、是否预置、埋点方式、是否回数、标签等进行过滤 ![](<https://img.kancloud.cn/cf/e2/cfe2780e351a5b87876c24fef4349049_1122x766.png>) **D 埋点列表展示字段** 支持事件、事件属性、平台、平台、是否预置、埋点方式、是否回数、是否显示、创建人、创建时间、首次出现时间、最后出现时间等。 通过埋点最后出现时间、近7日的触发次数等指标可以总和判断埋点是否仍然有效,当达到埋点限额的时候可以做埋点清理。 通过Debug日志、入库日志、错误日志的入口可以直接进入到日志中去查看相应事件的日志数据,帮助做数据校验。 ![](<https://img.kancloud.cn/9f/d7/9fd77ee4b3c22f10fb588ad01ede3233_2256x832.png>) ### 2 设定数据处理规则 对于不在埋点方案中,但实际上报了数据的情况,可以自定义设置数据处理规则,更改规则后新进入的数据将按照更新后的规则进行处理,通常1分钟内即可生效。系统预置三种处理模式: * 严格模式:适合对数据质量要求严格的企业 * 半严格模式:适合对数据质量要求较为严格的企业 * 宽松模式:仅适合研发快速回数测试产品功能 ![](<https://img.kancloud.cn/52/80/5280b67ab3546408f79d3b7cca049603_832x474.png>) >[warning]埋点方案和数据处理模式设置会做为数据处理的规则。 注意更改规则后仅对新进入的数据生效,根据历史规则处理后的历史数据不会变更。 比如,原来对于计划外的事件,原来选择的是规则 2:数据入库,加入到计划外列表中,默认不启用该事件,手动选择是否加入到埋点方案中。 已有一批数据根据此规则处理,其中有10个计划外的埋点在计划外列表中了,此时将处理规则变更为规则1:数据入库,并将事件加入到埋点方案,默认启用该事件。那么,原来进入计划外列表中的10个事件并不会自动添加到埋点方案中,可以手动选择批量添加到埋点计划中 ![](<https://img.kancloud.cn/20/b1/20b140e4c7fbb74f33799930f7730190_772x498.png>) >[info]系统默认半严格模式,对于对数据质量要严格要求的用户 ,可以切换到鹅严格模式 ### 3 验证和更新埋点状态 系统会根据实际回传的数据与埋点方案做自动化校验,在列表中可以根据颜色标识直观判断当前埋点的状态 ![](<https://img.kancloud.cn/c4/73/c473a5bc1c1a9f43cd0d3e43e88187b6_2474x1358.png>) **埋点状态 = (事件状态 + 事件属性状态)\* 平台** >[info]只有平台icon **全部高亮**、事件和属性标识都是 **绿色 **时,表示定义的事件在各个平台上各个属性都有数据回传,且正确 >[warning]当事件前标识是**黄色**时,表示该事件有部分平台没有上报,或者部分属性没有上传完整;可以根据哪个平台icon 未高亮,哪个属性前面的标识为灰色或者黄色来定位具体问题 当属性前标识是**黄色**时,标识该属性有部分平台没有上报;可以查看哪个平台icon未高亮,则标识哪个平台没有上报 >[danger]当平台icon未高亮、事件和属性前标识都为灰色时,标识全部还没有数据上报,或者全部进入错误队列 进入页面时会更新最新的埋点回数状态,停留在当前页面时,可以点击右上角 **更新埋点状态** 强制刷新 >[info]除了以上场景外,有两种特殊情况需要注意: **1**当计划外的事件/属性添加到埋点方案中时,会自动高亮实际回数的平台,相应的事件和属性 **2** 定义了A平台的事件和属性,但实际该事件在B平台也回数了时,将自动高亮出该平台 ### 4 计划外事件和属性的处理 当有计划中埋点之外的事件上报了数据,且数据处理规则选择的是半**严格模式**时,计划外的数据将入库,埋点会显示计划外列表中,若这些事件或属性在实际分析过程中也有需要,支持添加到计划中;若不需要,且后续不希望数据入库占用资源,也可以选择停止入库 ![](<https://img.kancloud.cn/4c/a0/4ca07d219155c3c6b28c5c42f9b24647_2474x1360.png>) 支持批量加入到计划中 >[info]若同一个事件即在计划中又在计划外,则表示该事件下有部分属性不在埋点方案中,因为属性不能独立存在,所以事件也会同时显示在计划外列表中。 ![](<https://img.kancloud.cn/8b/d0/8bd0a9a0566778ac3909c6863398b081_1000x558.png>) >[info]入库操作说明: 对于计划外已入库的完整事件,支持停止入库(当一个事件仅有部分属性属于计划外时,不支持关闭入库操作) 入库开关关闭后,后续产生的数据将不再入库(注:Nginx 仍然正常接收,只是不再处理数据入库后参与计算,如果不想让继续上线,需要从代码层面删除埋点) 如果根据实际需要,又需要继续获取此事件上报的数据,可以打开入库开关,但这期间历史未入库的数据不会被恢复 ![](<https://img.kancloud.cn/b5/06/b506a33a67e04473e82c303d4bfb42a2_1230x804.png>) ## 管理用户方案 切换左上角进入到用户方案,可以管理和校验用户属性的埋点,使用方案类似事件方案,不做赘述。 ![](<https://img.kancloud.cn/7d/a0/7da0fa5f5ddc565d1574988d07747e39_2772x1358.png>)