1. 简介

标签有独立的导入工具.

导入数据,需要先按格式要求准备好数据,并存放于 HDFS 之上。再使用导入工具进行导入。

#QA
1运行环境只能在部署神策分析的单机或集群机器上使用。
2执行账户

需要切换到 sa_cluster 用户执行,可使用如下命令:

su - sa_cluster
CODE

下文介绍使用方法。

2. 在 HDFS 上准备数据

首先,你需要自行在 HDFS 上,按照以下格式准备需要导入的数据,数据格式为每行一个 JSON 字符串。行分隔符为 '\n'。

例:

数据格式示例

# 字符串类型示例
{"property":"mike","value":"北京"}
{"property":"john","value":"上海"}
{"property":"alice","value":"北京"}
{"property":"bob","value":"合肥"}

# 数值类型示例
{"property":"alice","value":25}
{"property":"bob","value":24}
CODE

字段含义解释:

#固定字段名含义举例取值如何选择?
1property

property 即属性匹配字段。

ID 匹配场景,对于未登录用户,这个 ID 可以是 cookie、设备 ID 等匿名 ID;对于登录用户,则建议使用后台分配的实际用户 ID。详见标识用户相关文档


用户其他属性匹配,详见:神策分析系统->元数据->用户属性

这里的  ID 匹配,要求与神策分析埋点、批量导入时,采用相同的  ID 定义。

因为标签需要与 Event/User 数据进行联合分析,这就要求标签与 Event/User 中的 distinct_id 的含义必须相同。

例如:

  • 存在一个事件:用户 "mike@example.com" 在某时刻做了 PageVisit;
  • 存在一个标签 "会员等级":用户 "uid00001" 会员等级为 "铂金会员"。

可能 "mike@example.com" 与 "uid00001" 是相同的用户。

但我必须在神策分析中,先对这二者做过用户关联,而后再导入标签 A,这二者才能在分析时正确被识别为一个人。

其他用户属性匹配

例如:

使用「性别」属性匹配创建标签,所有「性别」属性值为「男」的标签值为「帅哥」,所有「性别」属性值为「女」的标签值为「美女」

样例:

{"property":"男","value":"帅哥"}

{"property":"女","value":"美女"}

2value标签的取值,也可称之为分层取值。

字符串类型标签:

  • 标签名为 「会员等级」;
  • value 可为「白银会员」、「黄金会员」、「钻石会员」。

数字型标签:

  • 标签名为 「年龄」;
  • value 可以为 15、25、30、31。


以业务使用为出发点,做取值的设计。

3. 数据类型

标签数据类型对应的 JSON 数据类型举例限制
数值型 NUMBERNUMBER12 或 12.0-9E15 到 9E15 小数点后最多保留 3 位。
布尔值 BOOLBOOL

true

注意 BOOL 类型不能导入 false 值。
字符串 STRINGSTRING"SensorsData"使用 UTF-8 编码,单 value 长度建议不要超过 1kB。
字符串列表LISTLIST
["通用", "火车票", "理财", "外卖"]
CODE

字符串元素的数组,最大元素个数为 500,其中每个元素使用 UTF-8 编码后最大长度 255 字节。

标签的 LIST 类型,不做去重,可以包含重复元素。

日期时间 DATETIMESTRING

以下几种均可:

  • "2015-06-19 17:51:21.234"
  • "2015-06-19 17:51:21"
  • "2015-06-19"
格式建议用 yyyy-mm-dd,年取值范围是 [1900, 2099]。

参考资料:神策分析属性数据类型定义。

4. 使用工具导入

在神策分析的服务器上,切换到 sa_cluster 用户:

su - sa_cluster
CODE

启动导入工具:

# 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
CODE

参数说明:

#参数名必传(Y/N)取值举例含义注意
1--projectY"default"项目名
2--user_nameN"some_user"创建 tag 的⽤户名,可选,默认 admin导入的时候,标签或分群不存在的时候,会记录创建者
3--nameY"en_name"标签英文名导入的时候,如果标签或分群不存在时,标签会默认为name加上user_tag_前缀;分群会默认为name加上user_group_前缀
4--cnameY"cn_name"标签中文名
5--dirN"dir0/dir1"标签目录设置,如:dir0/dir1,其中 dir0 是⼀级⽬录名,dir1 是二级目录名,不填写目录,则放置于未分类目录中
6--pathY/sa/runtime/some_dir/some_file_name数据⽂件⽬录,这是一个 hdfs ⽬录,或者⼀个 hdfs ⽂件路径建议放在 /sa/runtime/ 下面, 其他目录可能会有权限问题
7--data_typeNSTRING数据类型,默认是 BOOL,可选:BOOL, STRING, NUMBER, DATETIME、LIST英文字母需要大写
8--format, -fNJSON数据格式,默认 JSON,还有 LINE_OF_DISTINCT_ID (LINE_OF_DISTINCT_ID 为一行一个 distinct_id,只支持 BOOL 类型,值为 true)
9-bN"2018-10-25 10:00:00"数据基准时间(既版本,仅导入标签有效)
10--overlayN

是否覆盖原有版本(弃用)

加上该参数为 true,不加就是 false
11--tag_typeNUSER_TAG导入的标签类型,默认为 USER_TAG 即导入标签。可选:USER_GROUP 分群;USER_TAG 标签英文字母需要大写
12--matched_file,-mfN$first_id

导入匹配属性字段,详见:神策分析系统->元数据→用户属性

支持 ID 匹配;设备 ID 传$first_id,登录 ID 传$second_id;关于 ID 说明,详见标识用户

默认使用设备 ID($first_id)匹配

注意:$符号需要转义一下,即:\$
13--sync_profile,-sN
ID 匹配时,是否将不在全量表中的用户 ID 同步到全量表中不传默认为false,加上该参数为 true
14--model,-moNCREATECREATE创建、OVERWRITE 覆盖CREATE第一次导入时使用,本质和OVERWRITE是一样的
15--without_data_process,-wN
是否不等待数据处理完成后结束不传默认为 false,加上该参数为 true

输出示例:

正常情况下无输出,发生异常时会将错误打印在控制台。
CODE