# 埋点方案

在实际应用中，很多数据不准确、无法计算的问题最后多数定位到是埋点缺失、错误等造成的，因此严格控制数据质量是非常必要和重要的事情。

埋点方案功能正是通过以下三点来保障数据质量：

1. 数据采集需求管理，方案可共享保证需求来源一致，来源可记录，变更可追踪 —— 通过埋点的增删改、记录变更历史功能实现
2. 将埋点方案作为数据处理规则，规避无效数据污染数据源 —— 通过设定计划外（埋点方案外）的数据处理规则实现
3. 通过埋点方案自动化校验，提高验证效率 —— 通过检测埋点状态功能来实现

![](/files/-MVQrZN0pxobSyPZC2eX)

## 设计埋点方案

### 设计前准备

**确定数据分析和应用的核心诉求**

* 验证功能设计是否合理？帮助产品迭代？
* 关键流程的转化情况？
* 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、姓名、用户等级等等，也需要进行梳理，方法同事件属性。

埋点方案整理成方舟提供的埋点模版整理即可

![](/files/-MVQddEiVeVD7g2tcG5A)

整理完埋点方案后点击批量导入，作为后续研发埋点的需求来源和数据处理的规则。以下将以事件方案为例说明在方舟中如何管理埋点方案：

## 管理埋点方案（以事件方案为例）

### 1 管理计划中的事件方案

计划中即表示在数据上报前做好了规划要采集的事件；计划外表示不在埋点方案中，但实际上报了数据的事件和属性。

{% hint style="info" %}
通过可视化埋点部署的埋点自动会被视为计划中的事件
{% endhint %}

#### A 添加方案

按照埋点方案模版的格式整理完成后，即可批量导入；

系统预置部分事件及属性，如有需要可以直接使用，如果不需要也可以清空；后续需要使用时，选择导入预置事件/属性即可。

![](/files/-MVQrl18Eez89tdQaDqg)

当已上传过埋点方案，后续有新的产品功能迭代需要新增少量埋点时，可以选择单条添加

![](/files/-MVQs-Hh55MbuLQWfvut)

对于所有事件都有的通用属性不必在埋点方案中每个事件中添加，在通用属性中导入一份即可，方舟默认会采集部分属性（预置的通用属性），详见<https://docs.analysys.cn/integration/prepare/default-data>

![](/files/-MVQpUpBwo8lLeI5VSGq)

此外若有需要也可以添加自定义通用属性，集成SDK时注册为通用属性即可。

![](/files/-MVQqeKiyItHqFht9wpa)

#### B 修改方案

支持修改埋点的平台、事件显示名称、事件说明、事件标签、显示状态、数据类型等；

![](/files/-MVQsJWw1s8mblM9AArX)

{% hint style="danger" %}
当属性已回数时，属性的数据类型无法进行修改
{% endhint %}

也可以进行删除、设置是否在分析时显示

![](/files/-MVQx_geOPb7o_Fs53RA)

{% hint style="info" %}
删除操作说明：

当事件**未回数**时，删除即表示从方案中删除，不打算采集，后续完全可以使用相同ID重新定义，当未定义时有相同事件ID的数据上报时，将根据设置的数据处理规则处理；

当事件**已回数**时，删除代表从埋点方案中移除，相应事件和属性会进入到计划外，并不会删除历史数据；也不能定义相同ID的事件和属性，或者添加数据类型不同的属性，若想要再次启用可以从计划外再次添加到计划中
{% endhint %}

{% hint style="info" %}
显示开关说明：

开关打开时，相应事件/属性在分析的事件和属性下拉框中可见；

开关关闭时，相应事件/属性在下拉框中不可见，同时不可见的事件也不会被计入【任意事件的用户数/次数和人均次数】的指标计算中；

部分预置的事件/属性用于热图计算，如果关闭同样在事件/属性下拉框中不可见，但不影响热图分析的结果。
{% endhint %}

对于通用属性同样支持删除、设置是否显示的操作

{% hint style="info" %}
删除操作说明

已回数的属性删除后仅代表该属性不再是通用属性，将会出现在各个已回数的事件下；&#x20;

未回数的属性删除后仅表示各个事件都不需要采集该属性， 如果有个别事件需要该属性，需在计划中埋点该事件下添加。
{% endhint %}

{% hint style="info" %}
显示开关说明：&#x20;

开关打开时，在相应的条件和维度中可以选择到该属性； 若不需要分析，可以选择关闭； 部分预置通用属性不支持作为条件和维度，禁止删除、禁止打开显示开关。
{% endhint %}

![](/files/-MVQxm5N-vAjfrcbZq4v)

**对于埋点的改动系统都会记录，谁在什么时间修改了什么，修改前后变化是什么，方便异常追踪。**

![](/files/-MVQsTInRexZmRcbWL13)

#### C 查看方案

当有多个平台、多种埋点方式时，可以通过分组、过滤条件、搜索等快速找到相应的埋点

**C1 展开/收起全部属性**

点击 **展开全部属性** 可以查看全部事件下的属性，也可以展开部分事件

![](/files/-MVQsj7T15E_LV2vNLpv)

**C2 分组显示**

可以按照平台、是否预置、埋点方式、是否回数、标签等分组查看

![](/files/-MVQtOWwjE1Z9i0XqN9N)

当按分组查看时，默认收起全部分组，可以展开全部分组，也可以点击分组所在行的空白处可以展开单个分组

![](/files/-MVQtXiEpY5q2PgUDQA1)

**C3 过滤条件**

同样支持根据平台、是否预置、埋点方式、是否回数、标签等进行过滤

![](/files/-MVQtmgSjc58PwSjSk80)

**D 埋点列表展示字段**

支持事件、事件属性、平台、平台、是否预置、埋点方式、是否回数、是否显示、创建人、创建时间、首次出现时间、最后出现时间等。

通过埋点最后出现时间、近7日的触发次数等指标可以总和判断埋点是否仍然有效，当达到埋点限额的时候可以做埋点清理。

通过Debug日志、入库日志、错误日志的入口可以直接进入到日志中去查看相应事件的日志数据，帮助做数据校验。

![](/files/-MVQgHPug3tkDlxchJYA)

### 2 设定数据处理规则

对于不在埋点方案中，但实际上报了数据的情况，可以自定义设置数据处理规则，更改规则后新进入的数据将按照更新后的规则进行处理，通常1分钟内即可生效。系统预置三种处理模式：

* 严格模式：适合对数据质量要求严格的企业
* 半严格模式：适合对数据质量要求较为严格的企业
* 宽松模式：仅适合研发快速回数测试产品功能

![](/files/-MVQhKsQOyXOv-d-pBSM)

{% hint style="warning" %}
埋点方案和数据处理模式设置会做为数据处理的规则。

注意更改规则后仅对新进入的数据生效，根据历史规则处理后的历史数据不会变更。

比如，原来对于计划外的事件，原来选择的是规则 2：数据入库，加入到计划外列表中，默认不启用该事件，手动选择是否加入到埋点方案中。

已有一批数据根据此规则处理，其中有10个计划外的埋点在计划外列表中了，此时将处理规则变更为规则1：数据入库，并将事件加入到埋点方案，默认启用该事件。那么，原来进入计划外列表中的10个事件并不会自动添加到埋点方案中，可以手动选择批量添加到埋点计划中
{% endhint %}

![](/files/-LjKDnLtSlESyVJYYPtm)

{% hint style="info" %}
系统默认半严格模式，对于对数据质量要严格要求的用户 ，可以切换到鹅严格模式
{% endhint %}

### 3 验证和更新埋点状态

系统会根据实际回传的数据与埋点方案做自动化校验，在列表中可以根据颜色标识直观判断当前埋点的状态

![](/files/-MVQu2NnctfDAqphCpQ9)

**埋点状态 = （事件状态 + 事件属性状态）\* 平台**

{% hint style="success" %}
只有平台icon **全部高亮**、事件和属性标识都是 **绿色** 时，表示定义的事件在各个平台上各个属性都有数据回传，且正确
{% endhint %}

{% hint style="warning" %}
当事件前标识是**黄色**时，表示该事件有部分平台没有上报，或者部分属性没有上传完整；可以根据哪个平台icon 未高亮，哪个属性前面的标识为灰色或者黄色来定位具体问题

当属性前标识是**黄色**时，标识该属性有部分平台没有上报；可以查看哪个平台icon未高亮，则标识哪个平台没有上报
{% endhint %}

{% hint style="danger" %}
当平台icon未高亮、事件和属性前标识都为灰色时，标识全部还没有数据上报，或者全部进入错误队列
{% endhint %}

进入页面时会更新最新的埋点回数状态，停留在当前页面时，可以点击右上角 **更新埋点状态** 强制刷新

{% hint style="info" %}
除了以上场景外，有两种特殊情况需要注意：

**1** 当计划外的事件/属性添加到埋点方案中时，会自动高亮实际回数的平台，相应的事件和属性

**2** 定义了A平台的事件和属性，但实际该事件在B平台也回数了时，将自动高亮出该平台
{% endhint %}

### 4  计划外事件和属性的处理

当有计划中埋点之外的事件上报了数据，且数据处理规则选择的是半**严格模式**时，计划外的数据将入库，埋点会显示计划外列表中，若这些事件或属性在实际分析过程中也有需要，支持添加到计划中；若不需要，且后续不希望数据入库占用资源，也可以选择停止入库

![](/files/-MVQuKpxGqd_uKQuHdg9)

支持批量加入到计划中

{% hint style="info" %}
若同一个事件即在计划中又在计划外，则表示该事件下有部分属性不在埋点方案中，因为属性不能独立存在，所以事件也会同时显示在计划外列表中。
{% endhint %}

![](/files/-MVQn6UVfNINF-PbyClQ)

{% hint style="info" %}
入库操作说明：

对于计划外已入库的完整事件，支持停止入库（当一个事件仅有部分属性属于计划外时，不支持关闭入库操作）

入库开关关闭后，后续产生的数据将不再入库（注：Nginx 仍然正常接收，只是不再处理数据入库后参与计算，如果不想让继续上线，需要从代码层面删除埋点）

如果根据实际需要，又需要继续获取此事件上报的数据，可以打开入库开关，但这期间历史未入库的数据不会被恢复
{% endhint %}

![](/files/-MVQvK-Vkg7nWLa5Wc8P)

## 管理用户方案

切换左上角进入到用户方案，可以管理和校验用户属性的埋点，使用方案类似事件方案，不做赘述。

![](/files/-MVQnLj6wRlBMpeL-gJB)

{% hint style="info" %}
以上内容没有解答我的问题？[点击我来反馈](https://support.qq.com/products/118522/) 🚀
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://arkdocs.analysys.cn/features/project-manegement/data-integration/schema.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
