数据导入常见问题
最后更新于:2018-08-08 15:15:18
1. 数据类型不一致
如 Age
属性最先是 数值(如:12
),之后使用了 字符串(如:"12"
,注意多了双引号)。某个属性的类型确定后(由该属性首次出现时的类型决定)不能改变.
2. 批量导入多次使用相同目录
建议每次批量导入都使用不同目录,方便出现问题后重新导入.
3. 实时数据无法正常导入
- 请检查 SDK 或 LogAgent 发送数据目标机器是否填写正确,注意端口号和 sa,一般是:
http://sa_host:8006/sa
- 请检查数据是否符合 数据格式
4. 数据中包含 COOKIE 字段但前端没有显示
字符串的属性最长为 255 字节,超过会被忽略。类似 COOKIE 的字段建议做 ETL 转化为 用户 ID 等.
5. 某个 property 在前端看不到
可能的原因:
- 类型不符:使用了与之前不同的数据类型
- 数据过长:如字符串最长 255 字节。
- 非有效类型:使用了 数据格式 中未定义的数据类型,比如某个 property 是一个 JSON object。若如此,请将此对 JSON object 内含字段单独抽取出来作为 property 使用
- 非固有字段加了$:只有 数据格式 中定义的固有字段的 key 可以以$开头
6. LogAgent 无法导入数据
一般由 LogAgent 日志可以定位问题。
- LogAgent 读取的数据为每行一个 JSON,需要符合 数据格式
- 请检查接收数据的 URL
7. 怎样统计前端的点击和展示?
使用 Javascript SDK,在前端的 点击/展示 行为发生时调用 SDK 的 track 方法即可.
8. 如何清除某个事件?
0.1 不支持数据的删除。请使用 “事件管理” 的 “隐藏” 功能(0.2支持)将不需要的事件隐藏,然后使用新的事件名导入.
9. 如何清理某个时间段导入的数据?
暂时不支持该功能.
10. 修改某个字段的数据类型:
某个属性的数据第一次出现后会确定该属性的类型,之后不能改变.
11. 如何区分系统固有属性和自定义属性?
只有系统固有属性使用 $
前缀,其余均为自定义属性.
12. track_signup 的作用是什么?
- track_signup 的用途是关联新旧 id,当且仅当此时 original_id 为必须字段且有意义.
- distinct_id 为必须字段,没有该字段会被认为是无效数据.
13. 数据导入 Token 的作用是什么?
自 Sensors Analytics 1.6 开始,我们增加了数据导入 Token。现在有两种类型的 Token:
- Normal Token:使用该 Token 可以导入已经存在的事件(仅可包含已经存在的属性)和用户属性数据,若事件不存在或事件或用户的某个属性未在 Sensors Analytics 里建立,那么这条数据将被抛弃;
- Super Token:用该 Token 除了可以导入数据,还可以在 Sensors Analytics 创建不存在的事件和属性;
其他:
- 云版不支持自定义数据导入 Token;
- 默认情况下 Normal Token 和 Super Token 值为空;
- 不同项目可以设置不同的 Token;
13.1 判断 Token 类型
判断一条数据使用哪一种 Token 将采取如下流程:
- 初始化,标记数据为 无效数据;
- 将数据的 Token 与 Normal Token 比较,若值相同或 Normal Token 值为空,那么标记数据为 Normal 数据;
- 将数据的 Token 与 Super Token 比较,若值相同或 Super Token 值为空,那么标记数据为 Super 数据;
从上到下经过这 3 步流程,即一条数据将尝试获取能取到的最大的权限,若最终仍然是“无效数据”,那么这条数据将被抛弃。
举例如下:
- Super 数据: 可根据数据创建事件、属性等;
- Normal 数据: 可导入但不能创建事件、属性等。若数据中包含不存在的事件、属性,数据将被抛弃;
- 无效数据: 抛弃这条数据;
Super Token | Normal Token | 数据 Token | 类型原因 | 数据类型 |
---|---|---|---|---|
(空) | (空) | (空) | 第三步中“Super Token 值为空” | Super 数据 |
(空) | (空) | ABC | 第三步中“Super Token 值为空” | Super 数据 |
(空) | 123 | (空) | 第三步中“Super Token 值为空” | Super 数据 |
(空) | 123 | ABC | 第三步中“Super Token 值为空” | Super 数据 |
(空) | 123 | 123 | 第三步中“Super Token 值为空” | Super 数据 |
XYZ | (空) | (空) | 第二步中“Normal Token 值为空” | Normal 数据 |
XYZ | (空) | ABC | 第二步中“Normal Token 值为空” | Normal 数据 |
XYZ | (空) | XYZ | 第三步中“与 Super Token 值相同” | Super 数据 |
XYZ | 123 | (空) | 第一步中标为无效数据 | 无效数据 |
XYZ | 123 | ABC | 第一步中标为无效数据 | 无效数据 |
XYZ | 123 | 123 | 第二步中“Normal Token 值为空” | Normal 数据 |
XYZ | 123 | XYZ | 第三步中“与 Super Token 值相同” | Super 数据 |
13.2 取数据 Token
数据的 Token 获取流程如下:
取数据中的 'token' 字段(与 'type' 字段平级),如:
{"distinct_id":"a","time":1471586368135,"type":"track","event":"ViewProduct","properties":{},"token":"my_token"}
若上一步没有取到,取数据接入地址中的 token 值,如:
http://SA:8006/sa?token=my_token
- 若仍然没有取到,那么认为值为空。
13.3 设置 Token
通过 多项目管理工具 设置 Normal Token 和 Super Token。
14. 使用sdk导入在埋点管理发现报错,如何找回错误的数据?
我们在系统的日志目录下保留了一段时间的错误日志,需要登录到机器上查看,具体方法是:
登录到机器上。切换到 sa_cluster 帐号,注意集群版需要登录每台机器才能获取全部错误数据。云版目前不支持登录后台机器,需要联系我们来操作。
获取日志目录。执行
grep 'sensors_analytics.log_dir' ~/sa/conf/sensors_analytics.property
查看结果。进入上面的目录,然后
cd extractor
,会发现有一系列invalid_records
开头的文件,即为错误日志保留的文件。
注意:
错误日志只会保留一段时间,默认是 14 天,但是如果磁盘报警可能会清理部分日志。
错误日志文件包含了所有项目的所有错误,请自行解析选择需要的日志。