1. 数据强校验模式具体报错和处理方式

数据上报场景上报流程元数据是否无法创建代码是否返回错误埋点数据查询是否报错数据是否被抛弃抛弃数据是否可被找回
元事件中有对应的事件名或者属性名,且上报符合神策数据格式的数据
  • 埋点数据查询显示没有报错,无报错显示如下:

//
未创建事件,上报元事件中不存在的事件数据
  • 代码收到服务返回的报错:Can not create undefined event:'xxxx' with normal token

  • 埋点数据查询报错:

/整条数据被抛弃
元数据中创建自定义事件加了 $ 字符并上报数据

如果开启强校验之前没有设置过带 $ 字符的事件名,则创建事件时报错

////

如果开启强校验之前已经设置过带 $ 字符的事件名

  • 元数据中保留已经创建的带 $ 字符的事件名

  • 已经创建成功的带 $ 字符的事件可正常上报数据

//
元数据中创建属性名包含了神策保留字段并上报数据
  • 创建属性时报错(device_id、user_group 开头、user_tag 开头 除外)

  • SDK 上报数据也会校验,报错: property key must be a valid variable name

//
元数据中创建事件名不合法并上报不合法事件名数据
  • 创建事件时报错

  • SDK 上报数据也会校验,报错:event name must be a valid variable name

//
创建和虚拟事件同名的事件名,并上报数据

  • 创建事件报错: DUPLICATED_NAME ,命名重复

  • 代码收到服务返回的报错:Can't import virtual event,event_name:xxx

  • 埋点数据查询报错

整条数据被抛弃
创建属性名大小写和元事件中已有的属性名大小写不一致,并上报数据

  • 创建属性时报错:此属性名已被占用,请重命名

  • 代码收到服务返回的报错:{"type":"UNDEFINED_PROPERTY","reason":"Won't create undefined properties: {xxxxx}"}

  • 埋点数据查询报错:传入的数据中,存在「元数据-元事件」未定义的事件/用户属性,未定义的事件/用户属性不入库,但当前数据的其它已定义属性正常入库。如果需要新增属性,请到「元数据-元事件」新增后再进行上传

错误属性不入库,其他数据正常入库
上报数据中包含元事件中不存在的属性名
  • 代码收到服务返回的报错:Won't create undefined properties:{"xxx":"xxx"}

  • 埋点数据查询会报错:传入的数据中,存在「元数据-元事件」未定义的事件/用户属性,未定义的事件/用户属性不入库,但当前数据的其它已定义属性正常入库。如果需要新增属性,请到「元数据-元事件」新增后再进行上传

/错误属性不入库,其他数据正常入库
上报数据中属性和元事件中的已有的属性类型不一致

类型强转成功,正常入库(比如 number 强转 string 类型)

///

类型强转失败(比如 string 强转 list),之前这个属性有数据:

  • 代码收到服务返回的报错:

PROPERTY_WITH_WRONG_TYPE,数据类型错误,之前已将其定义为 xxx,但本次传值为...

  • 埋点数据查询会报错

/默认拦截整条数据。可以修改为只拦截属性

类型强转失败(比如 string 强转 list),之前这个属性没有上报过数据:

  • 代码收到服务返回的报错:

Data type not match with pre defined properties

  • 埋点数据查询会报错

/错误属性不入库,其他数据正常入库
上报数据属性长度超过限制

string 类型长度超过限制

  • 超出 Python SDK 本身限制则报错(SDK 限制是 8192,不含 8192):the max length of property key is 8192

///

string 类型长度超过限制

  • 超出 SDK (非 Python SDK )本身限制不报错,数据被截断
  • 未超出 SDK 限制,但是超过神策后端预设的 1024 字节
/截断超出字节长度(截断超出 1024 字节)的,正常入库/

number 类型超出限制(number 属性长度超过限制或者小数点后超过 3 位)

  • SDK 报错:nmber property 'xx' value 'xxxx' overflow

  • 埋点数据查询报错

/错误属性不入库,其他数据可以正常入库
元数据中创建自定义属性加了 $ 字符并上报数据
  • 创建属性报错:100 个字符:默认仅支持字母,数字,下划线,其他字符不支持

  • SDK 报错:invalid preset properties

  • 埋点数据查询报错

错误属性不入库,其他数据正常入库
元数据中创建属性名不合法并上报不合法属性名数据
  • 创建属性报错:100 个字符:默认仅支持字母,数字,下划线,其他字符不支持

  • 数据无法上报,SDK 报错: property key must be a valid variable name

////
SDK 新增的预置属性,但是神策分析版本较老同“元数据中创建自定义属性加了 $ 字符并上报数据”/错误属性不入库,其他数据正常入库
创建和虚拟属性同名的属性名,并上报数据
  • 创建属性时报错:DUPLICATED_NAME ,命名重复

  • 代码收到服务返回的报错:Won't create undefined properties

  • 埋点数据查询报错

错误属性不入库,其他数据正常入库
创建属性名使用了 user_tag 或者 user_group 为前缀并上报数据

带有  user_tag 或者 user_group 前缀的属性被抛弃,其他数据正常入库
设置了 normal_token 或者super_token 的数据校验

不影响元数据创建

参考文档:https://manual.sensorsdata.cn/sa/latest/数据导入常见问题-47677442.html#id-.数据导入常见问题v2.3-判断数据Token类型

错误场景:

  1. 如果设置 super_token 且设置了 normal_token ,导入数据 token 为空/或与设置 token(super_token /normal_token) 不一致,则被标记为无效数据
  • SDK 报错:

{"type":"INVALID_IMPORT_TOKEN","reason":"Invalid import token "}

  • 埋点数据查询报错:Invalid import token

2. 如果设置了 super_token,但是导入数据 token 为空/或与设置 super_token 不一致,且上报了元数据中不存在的元事件

  • SDK 报错: {"type":"UNDEFINED_EVENT","reason":"Can not create undefined event: 'xyz11123' with normal token"}

  • 埋点数据查询报错:

整条数据被抛弃

如果设置了 super_token,但是导入数据 token 为空/或与设置 super_token 不一致,且上报了元数据中不存在的事件/用户属性

  • SDK 报错:{"type":"UNDEFINED_PROPERTY","reason":"Won't create undefined properties: {xxxxx}"}

  • 埋点数据查询报错:Won't create undefined properties: {xxxxx}

错误属性不入库,其他数据正常入库

2. 自由上报模式具体报错和处理方式

数据上报场景截图代码是否返回错误埋点数据查询是否报错数据是否被抛弃抛弃数据是否可被找回
上报数据中,上报符合神策数据格式的数据

正常上报数据,埋点数据查询显示没有报错,无报错显示如下:

//
上报数据中,原始数据中自定义事件加了 $ 字符

正常上报数据

//
上报数据中,原始数据中属性名包含了神策保留字段

数据无法上报:The property 'xx' is invalid

//
上报数据中,原始数据中事件名不合法

数据无法上报:The Event Name 'xx' is invalid 

//
上报数据中,原始数据中包含元事件中不存在的元事件正常上报数据//
上报数据中,原始数据中包含和虚拟事件同名的事件名
  • 代码收到服务返回的报错:Can't import virtual event,event_name:xxx

  • 埋点数据查询报错

整条数据被抛弃
上报数据中,原始数据中的属性名大小写和元事件中已有的属性名大小写不一致
  • 代码收到服务返回的报错:与已存在但大小写不同的其他属性名冲突

  • 埋点数据查询报错:已存在与需新创建属性的属性名仅大小写不相同的属性,例如存在 'Abc' 属性则不能创建使用 'abc' 属性

整条数据被抛弃
上报数据中,原始数据中包含元事件中不存在的属性名正常上报数据//
上报的数据中,原始数据中属性和元事件中的已有的属性类型不一致类型强转成功,正常上报数据(比如 number 强转 string 类型)//

类型强转失败(比如 string 强转 list)

  • 代码收到服务返回的报错:数据类型错误,之前已将其类型定位 'List',但本次传值为 

  • 埋点数据查询会报错:属性(properties)类型错误

整条数据被抛弃
上报数据中,原始数据中属性长度超过限制

string 类型长度超过限制

  • 超出 SDK 本身限制则报错(SDK 限制是 8192,不含 8192):the max length of property key is 8192

//

string 类型长度超过限制

  • 未超出 SDK 限制,但是超过神策后端预设的 1024 字节
截断超出字节长度的,其他数据正常入库/

number 类型超出限制:number property 'xx' value 'xxx' overflow

  • SDK 报错:

  • 埋点数据查询报错

错误属性不入库,其他数据可以正常入库
上报数据中,原始数据中自定义属性加了 $ 字符
  • SDK 报错:invalid properties 

  • 埋点数据查询报错

错误属性不入库,其他数据可以正常入库
上报不合法属性名数据

数据无法上报

  • SDK 报错:property key must be a valid variable name



SDK 新增的预置属性,但是神策分析版本较老同“元数据中创建自定义属性加了 $ 字符并上报数据”新增预置属性不入库,其他数据正常
上报数据中,数据中包含和虚拟属性同名的事件属性

将虚拟属性的数据清空/
上报数据中,属性名使用了 user_tag 或者 user_group 为前缀

带有  user_tag 或者 user_group 前缀的属性被抛弃,其他数据正常入库
设置了 normal_token 或者super_token 的数据校验

参考文档:https://manual.sensorsdata.cn/sa/latest/数据导入常见问题-47677442.html#id-.数据导入常见问题v2.3-判断数据Token类型

错误场景:

  1. 如果设置 super_token 且设置了 normal_token ,导入数据 token 为空/或与设置 token(super_token /normal_token) 不一致,则被标记为无效数据
  • SDK 报错:

{"type":"INVALID_IMPORT_TOKEN","reason":"Invalid import token "}

  • 埋点数据查询报错:Invalid import token

2. 如果设置了 super_token,但是导入数据 token 为空/或与设置 super_token 不一致,且上报了元数据中不存在的元事件

  • SDK 报错: {"type":"UNDEFINED_EVENT","reason":"Can not create undefined event: 'xyz11123' with normal token"}

  • 埋点数据查询报错:

整条数据被抛弃

如果设置了 super_token,但是导入数据 token 为空/或与设置 super_token 不一致,且上报了元数据中不存在的事件/用户属性

  • SDK 报错:{"type":"UNDEFINED_PROPERTY","reason":"Won't create undefined properties: {xxxxx}"}

  • 埋点数据查询报错:Won't create undefined properties: {xxxxx}

错误属性不入库,其他数据可以正常入库