简介
标签有独立的导入工具.
导入数据,需要先按格式要求准备好数据,并存放于 HDFS 之上。再使用导入工具进行导入。
# | Q | A |
---|---|---|
1 | 运行环境 | 只能在部署神策分析的单机或集群机器上使用。 |
2 | 执行账户 | 需要切换到 sa_cluster 用户执行,可使用如下命令:
|
下文介绍使用方法。
在 HDFS 上准备数据
首先,你需要自行在 HDFS 上,按照以下格式准备需要导入的数据,数据格式为每行一个 JSON 字符串。行分隔符为 '\n'。
例:
数据格式示例
# 字符串类型示例
{"property":"mike","value":"北京"}
{"property":"john","value":"上海"}
{"property":"alice","value":"北京"}
{"property":"bob","value":"合肥"}
# 数值类型示例
{"property":"alice","value":25}
{"property":"bob","value":24}
字段含义解释:
# | 固定字段名 | 含义 | 举例 | 取值如何选择? |
---|---|---|---|---|
1 | property | property 即属性匹配字段。 | ID 匹配场景,对于未登录用户,这个 ID 可以是 cookie、设备 ID 等匿名 ID;对于登录用户,则建议使用后台分配的实际用户 ID。详见标识用户相关文档 用户其他属性匹配,详见:神策分析系统->元数据->用户属性 | 这里的 ID 匹配,要求与神策分析埋点、批量导入时,采用相同的 ID 定义。 因为标签需要与 Event/User 数据进行联合分析,这就要求标签与 Event/User 中的 distinct_id 的含义必须相同。 例如:
可能 "mike@example.com" 与 "uid00001" 是相同的用户。 但我必须在神策分析中,先对这二者做过用户关联,而后再导入标签 A,这二者才能在分析时正确被识别为一个人。 其他用户属性匹配 例如: 使用「性别」属性匹配创建标签,所有「性别」属性值为「男」的标签值为「帅哥」,所有「性别」属性值为「女」的标签值为「美女」 样例: {"property":"男","value":"帅哥"} {"property":"女","value":"美女"} |
2 | value | 标签的取值,也可称之为分层取值。 | 字符串类型标签:
数字型标签:
| 以业务使用为出发点,做取值的设计。 |
数据类型
标签数据类型 | 对应的 JSON 数据类型 | 举例 | 限制 |
---|---|---|---|
数值型 NUMBER | NUMBER | 12 或 12.0 | -9E15 到 9E15 小数点后最多保留 3 位。 |
布尔值 BOOL | BOOL | true | 注意 BOOL 类型不能导入 false 值。 |
字符串 STRING | STRING | "SensorsData" | 使用 UTF-8 编码,单 value 长度建议不要超过 1kB。 |
字符串列表LIST | LIST |
| 字符串元素的数组,最大元素个数为 500,其中每个元素使用 UTF-8 编码后最大长度 255 字节。 标签的 LIST 类型,不做去重,可以包含重复元素。 |
日期时间 DATETIME | STRING | 以下几种均可:
| 格式建议用 yyyy-mm-dd,年取值范围是 [1900, 2099]。 |
参考资料:神策分析属性数据类型定义。
使用工具导入
在神策分析的服务器上,切换到 sa_cluster 用户:
su - sa_cluster
启动导入工具:
# sps1.5+
spsadmin import \
--project "default" \
--user_name "some_user" \
--name "en_name" \
--cname "cn_name" \
--dir "dir0/dir1" \
--path /sa/runtime/some_dir/some_file_name \
--data_type STRING \
-f JSON \
-b "2018-10-25 10:00:00" \
-mo CREATE \
-s \
-w
参数说明:
# | 参数名 | 必传(Y/N) | 取值举例 | 含义 | 注意 |
---|---|---|---|---|---|
1 | --project | Y | "default" | 项目名 | |
2 | --user_name | N | "some_user" | 创建 tag 的⽤户名,可选,默认 admin | 导入的时候,标签或分群不存在的时候,会记录创建者 |
3 | --name | Y | "en_name" | 标签英文名 | 导入的时候,如果标签或分群不存在时,标签会默认为name加上user_tag_前缀;分群会默认为name加上user_group_前缀 |
4 | --cname | Y | "cn_name" | 标签中文名 | |
5 | --dir | N | "dir0/dir1" | 标签目录设置,如:dir0/dir1,其中 dir0 是⼀级⽬录名,dir1 是二级目录名,不填写目录,则放置于未分类目录中 | |
6 | --path | Y | /sa/runtime/some_dir/some_file_name | 数据⽂件⽬录,这是一个 hdfs ⽬录,或者⼀个 hdfs ⽂件路径 | 建议放在 /sa/runtime/ 下面, 其他目录可能会有权限问题 |
7 | --data_type | N | STRING | 数据类型,默认是 BOOL,可选:BOOL, STRING, NUMBER, DATETIME、LIST | 英文字母需要大写 |
8 | --format, -f | N | JSON | 数据格式,默认 JSON,还有 LINE_OF_DISTINCT_ID (LINE_OF_DISTINCT_ID 为一行一个 distinct_id,只支持 BOOL 类型,值为 true) | |
9 | -b | N | "2018-10-25 10:00:00" | 数据基准时间(既版本,仅导入标签有效) | |
10 | --overlay | N | 是否覆盖原有版本(弃用) | 加上该参数为 true,不加就是 false | |
11 | --tag_type | N | USER_TAG | 导入的标签类型,默认为 USER_TAG 即导入标签。可选:USER_GROUP 分群;USER_TAG 标签 | 英文字母需要大写 |
12 | --matched_file,-mf | N | $first_id | 导入匹配属性字段,详见:神策分析系统->元数据→用户属性 支持 ID 匹配;设备 ID 传$first_id,登录 ID 传$second_id;关于 ID 说明,详见标识用户 默认使用设备 ID($first_id)匹配 | 注意:$符号需要转义一下,即:\$ |
13 | --sync_profile,-s | N | ID 匹配时,是否将不在全量表中的用户 ID 同步到全量表中 | 不传默认为false,加上该参数为 true | |
14 | --model,-mo | N | CREATE | CREATE创建、OVERWRITE 覆盖 | CREATE第一次导入时使用,本质和OVERWRITE是一样的 |
15 | --without_data_process,-w | N | 是否不等待数据处理完成后结束 | 不传默认为 false,加上该参数为 true |
输出示例:
正常情况下无输出,发生异常时会将错误打印在控制台。