数据导入常见问题

最后更新于:2019-11-27 17:01:23

1. 数据类型不一致

Age 属性最先是 数值(如:12),之后使用了 字符串(如:"12",注意多了双引号)。某个属性的类型确定后(由该属性首次出现时的类型决定)不能改变.

2. 批量导入多次使用相同目录

建议每次批量导入都使用不同目录,方便出现问题后重新导入.

3. 实时数据无法正常导入

  1. 请检查 SDK 或 LogAgent 发送数据目标机器是否填写正确,注意端口号和 sa,一般是:http://sa_host:8006/sa
  2. 请检查数据是否符合 数据格式

字符串的属性最长为 255 字节,超过会被忽略。类似 COOKIE 的字段建议做 ETL 转化为 用户 ID 等.

5. 某个 property 在前端看不到

可能的原因:

  1. 类型不符:使用了与之前不同的数据类型
  2. 数据过长:如字符串最长 255 字节。
  3. 非有效类型:使用了 数据格式 中未定义的数据类型,比如某个 property 是一个 JSON object。若如此,请将此对 JSON object 内含字段单独抽取出来作为 property 使用
  4. 非固有字段加了$:只有 数据格式 中定义的固有字段的 key 可以以$开头

6. LogAgent 无法导入数据

一般由 LogAgent 日志可以定位问题。

  1. LogAgent 读取的数据为每行一个 JSON,需要符合 数据格式
  2. 请检查接收数据的 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:

  1. Normal Token:使用该 Token 可以导入已经存在的事件(仅可包含已经存在的属性)和用户属性数据,若事件不存在或事件或用户的某个属性未在 Sensors Analytics 里建立,那么这条数据将被抛弃;
  2. Super Token:用该 Token 除了可以导入数据,还可以在 Sensors Analytics 创建不存在的事件和属性;

其他:

  • 云版不支持自定义数据导入 Token;
  • 默认情况下 Normal Token 和 Super Token 值为空;
  • 不同项目可以设置不同的 Token;

13.1 判断 Token 类型

判断一条数据使用哪一种 Token 将采取如下流程:

  1. 初始化,标记数据为 无效数据
  2. 将数据的 Token 与 Normal Token 比较,若值相同或 Normal Token 值为空,那么标记数据为 Normal 数据
  3. 将数据的 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 获取流程如下:

  1. 取数据中的 'token' 字段(与 'type' 字段平级),如:

     {"distinct_id":"a","time":1471586368135,"type":"track","event":"ViewProduct","properties":{},"token":"my_token"}
    
  2. 若上一步没有取到,取数据接入地址中的 token 值,如:

     http://SA:8006/sa?token=my_token
    
  3. 若仍然没有取到,那么认为值为空。

13.3 设置 Token

通过 多项目管理工具 设置 Normal Token 和 Super Token。

14. 使用sdk导入在埋点管理发现报错,如何找回错误的数据?

我们在系统的日志目录下保留了一段时间的错误日志,需要登录到机器上查看,具体方法是:

  1. 登录到机器上。切换到 sa_cluster 帐号,注意集群版需要登录每台机器才能获取全部错误数据。云版目前不支持登录后台机器,需要联系我们来操作。

  2. 获取日志目录。

    2.1 若神策分析大版本 < 1.14,则执行 grep 'sensors_analytics.log_dir' ~/sa/conf/sensors_analytics.property 查看结果,然后进入结果中的目录后再 cd extractor,会发现有一系列invalid_records开头的文件,即为错误日志保留的文件。

    2.2 若神策分析大版本 = 1.14,则执行 grep 'sensors_data.log_dir' ~/conf/sensors_data.property 查看结果,然后进入结果中的目录,cd sa/extractor,会发现有一系列invalid_records开头的文件,即为错误日志保留的文件。

    2.3 若神策分析大版本 = 1.15,则执行 grep 'sensors_data.log_dir' ~/conf/sensors_data.property 查看结果,然后进入结果中的目录,cd sp/extractor,会发现有一系列invalid_records开头的文件,即为错误日志保留的文件。 注意:

  3. 错误日志只会保留一段时间,默认是 14 天,但是如果磁盘报警可能会清理部分日志。

  4. 错误日志文件包含了所有项目的所有错误,请自行解析选择需要的日志。

  5. 注意:从 extractor 的 invalid_records 日志里拿出来的数据重新导入的时候,数据清理时需要要把 errer_type 和 error_reason 字段去掉,否则重新导入数据时会报错

  6. 神策分析大版本号可以咨询值班同学获取