*****
# description: 最细粒度的原始数据的完整性、准确性会直接影响到后续的数据分析和应用,因此使用前必须重视在接入环节的数据验证工作
# 数据验证
## 总体数据概览
通过SDK/API/文件等方式向方舟上报数据时会经过接收、校验、入库等多个环节,只有入库成功的数据会参与到分析计算当中。

**在数据接收环节,当上报数据中 AppKey 与当前项目 AppKey 不匹配时,数据将直接直接被丢弃**
其他 Appkey 符合当前项目时,数据会被分为三类:
**Debug日志**
开启了调试模式(集成SDK时设置 debug =1 或 2 )时上报的数据将进入Debug 日志,用作测试环节的数据正确性和完整性校验,其中
* debug = 1 的数据仅用于调试,不会入库参与计算
* debug = 2 的数据既可用于调试,又会入库参与计算
**入库成功数据**
开启数据入库模式(集成 SDK 时设置debug = 0 或 2 )时上报的数据,将进行多重校验,通过校验的数据,将会成功入库,即可用于后续分析和应用;
**入库失败数据**
入库模式下,未通过校验的数据,将进入错误日志,不会参与计算,开发者也可以据此修正上报的数据。
## **Debug 日志**
开发工程师埋点后希望快速了解埋点是否正确,可以设置`Debug = 1 或 2`开启调试模式,SDK 会向浏览器的控制台中输出日志。日志中会包含一些告警、错误,也会包含上报事件的内容。
以 Chrome 为例,步骤如下:
* 启动 Chrome,并访问已经埋好点的网站
* 按 F12 或 Ctl/Cmd + Alt/Opt + I 打开 “开发者工具”
* 点击 “Console” 页签进入控制台
* 正常浏览页面,接可以看到控制台有大量的日志

除了通过客户端验证外,可以用方舟内置的\*\* Debug 日志 \*\*模块来逐条验证,展示最新 1000 条数据,可选择日期、数据源等进一步过滤。

>[info] 从左上角支持切换 **事件日志** 和 **用户日志** 分别查看
### 1\. 条件过滤

#### A. 时间过滤
当一段时间里上报的数据量过大时,可以指定到某个小时或分钟区间来查看

>[danger] 日期过滤是基于展示的最新的1000条日志过滤的,也就是说如果今天日志已经超过1000条,则即使昨天实际有测试日志,日期切换到昨天也查询不到结果。
#### B. 数据源过滤
一个项目当中会接入多个平台,比如一个应用的Android端、iOS端、网页端等,不同端通常是不同的工程师负责集成SDK,如果只想验证自己集成的数据正确性,则可以选择数据源快速过滤

#### C. 其他条件过滤
当要验证某个事件的属性时,可以输入事件ID 来过滤;
当有多个测试设备时,可以输入当前设备绑定的用户ID来过滤,更方便查看
;

### 2\. 实时更新最新数据
当停留在当前页面时,有新的事件产生会实时记录提醒,点击可以加载最新事件;
也可以开始实时刷新按钮,实时加载数据;当实时会产生大量数据时,建议关闭,手动加载最新数据,否则自动加载过快,无法准确验证。

### 3\. Debug 日志中的错误日志
Debug日志会进行基础的格式、数据类型等校验,当校验不通过时,会直接在列表当中红色标识

也可以打开 **仅查看错误日志**开关 查看错误日志

### 4\. 设置在列表中展示的列
支持自定义展示的列,比如选择展示出常用的设备品牌、型号、IP等方便快速查看

### 5\. 展开单条事件的属性和JSON数据
点击单条事件,可以展开查看事件属性和JSON数据

## **入库成功数据(用于计算)**
展示开启数据入库模式(集成 SDK 时设置debug = 0 或 2 )时上报的行为数据(Event)(即用于分析计算的数据),最多展示选定时间和条件下的1000条。(注:用户日志用于更新用户属性,不提供单独查询)

{% hint style="info" %}
和Debug日志的差异
1. 可以展示选定条件(时间、数据源、事件ID等)下的1000条
2. 需手动点击刷新按钮更新最新数据
3. 不单独展示用户日志
{% endhint %}
## **入库失败数据(错误日志)**
展示关闭调试模式下(Debug=0)和调试模式下(Debug=2)入库失败的数据。通常这也是部分指标在查询时偏差的原因,所以发现错误时,请及时纠正,避免更大的影响。
同 Debug数据验证 的功能相似,同样
* 支持按照事件ID、用户ID、时间来搜索
* 支持筛选可展示的列
* 支持数据的实时更新
除此之外,可以筛选某些特定错误类型下的数据;点击行时,可以展示错误的原因

### 错误类型说明
| 错误类型 | 正常情况示例 | 错误情况示例 | 建议解决办法 |
| --- | --- | --- | --- |
| JSON 格式异常 | JSON Array对象或 JSON 格式 | \- | 上传正确JSON 格式数据 |
| 标准格式字段校验异常 | \- | \- | 上传正确标准格式字段 |
| appkey 校验异常 | \- | 数据中 appkey 与启动程序中appkey 不同 | 上传一致appkey |
| 事件ID不符合校验规则 | Java 命名规范:首位为字母或者$,后面为大小写字母、数字、下划线和$,最大长度125字符 | \- | 上传正确事件ID |
| 属性ID不符合校验规则 | Java命名规范:首位为字母或者$,后面为大小写字母、数字、下划线和$,最大长度125字符 | \- | 上传正确属性ID |
| 属性值个数超过规定范围 | 上限为300个(包含回数的预置属性和自定义属性) | \- | 减少属性值个数到300个以下 |
| 属性值不符合规范 | 请查看文档【[Part II-数据接入准备-数据格式](https://docs.analysys.cn/ark/integration/prepare/data-type)】 | \- | 上传正确属性值 |
| 属性值上传和现有数值类型不一致 | String | Boolean | 上传一致类型的属性值 |
| 属性值类型不支持 | 类型仅包含:String/Number/Boolean/数组 | \- | 上传支持的属性值类型 |
| 显示用户登录,但是数据库中不存在 | \- | \- | 确定该用户是否绑定 |
| IP解析异常 | \- | \- | 联系运维 |
| 数据信息超过限定时间 | \- | \- | 请重新确认数据接收时间范围(以当前时间为准,前10天内和未来3小时内) |
| 程序异常 | \- | \- | 联系易观运维 |
- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献