# 外部用户属性关联导入功能
# 一、介绍
在一些情况下,您需要将外部的用户数据导入到 TE 集群,但是数据中的用户标识并不是 TE 系统中的#account_id 或#distinct_id,比如数据以手机号、身份证号或者其他标识 ID 作为主键。如果需要将这部分数据作为用户属性导入到 TE 系统,则需要通过update_user_by_foreignkey命令设定关联关系,将外部的用户属性更新到 TE 系统中,目前支持 datax 所有支持的数据源:
# 二、使用方法
# 2.1 命令说明
数据导入的命令如下:
ta-tool update_user_by_foreignkey -conf <config files> [--date xxx]
# 2.2 命令参数说明
# 2.2.1 -conf
传入的参数为导入任务的配置文件路径,每一个任务即为一个配置文件,支持多个任务同时导入,支持通配符的方式,例如:/data/config/或者 ./config/.json
# 2.2.1 --date
可选参数**--date**:可选,参数表示数据日期,时间宏会基于此基准时间进行替换,可不传,不传则默认取当前日期,格式为YYYY-MM-DD,时间宏的具体使用方法,可参考时间宏使用方法
# 2.3 时间宏使用方法
配置文件内部可以使用时间宏替换时间参数,ta-tool 工具会以导入的开始时间为基准,基于时间宏的参数做时间的偏移计算,并替换掉配置文件中的时间宏,支持的时间宏格式:@[{yyyyMMdd}], @[{yyyyMMdd}-{nday}], @[{yyyyMMdd}+{nday}]等等
- yyyyMMdd可以替换成任意可以被 Java- dateFormat解析的日期格式,例如:- yyyy-MM-dd HH:mm:ss.SSS,- yyyyMMddHH000000
- n 可以是任意整数,表示时间的偏移值
- day 表示时间的偏移单位,可以取如下几种: day,hour,minute,week,month
- 举例: 假设当前时间为2018-07-01 15:13:23.234- @[{yyyyMMdd}]替换为- 20180701
- @[{yyyy-MM-dd}-{1day}]替换为- 2018-06-31
- @[{yyyyMMddHH}+{2hour}]替换为- 2018070117
- @[{yyyyMMddHHmm00}-{10minute}]替换为- 20180701150300
 
# 三、功能说明
# 3.1 配置样例
{
	"job": {
		"content": [{
			 "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "username",
                        "password": "password",
                        "connection": [
                            {
                                "querySql": [
                                    "SELECT card_id, property1, property2,property3 FROM table1;"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://ip:port/database"
                                ]
                            }
                        ]
                    }
                },
			"writer": {
				"parameter": {
                    "appid": "6f9e64da5bc74792b9e9c1db4e3e3822",
					"column": [{
							"type": "string",
							"name": "card_id"
						},
						{
							"type": "string",
							"name": "property1"
						},
						{
							"type": "string",
							"name": "property2"
						},
						{
							"type": "double",
							"name": "property3"
						}
					],
						"joinkey":{
					      "importDataKey": ["card_id"],
						  "taUserTableKey": ["card_id"]
					}
				}
			}
		}]
	}
}
# 3.2 参数说明
# 3.2.1 reader 部分
- reader 的配置,与 datax 支持的 reader 一致
# 3.2.2 writer 部分
- appid
- 描述:对应项目的 appid。
- 必选:是
- 默认值:无
 
- column
- 描述:读取字段列表,type指定数据的类型,name指定为 reader 对应位置的列,导入 TE 系统时的属性名。
 
- 描述:读取字段列表,
用户可以指定Column字段信息,配置如下:
[
  {
    "type": "double",
    "name": "property1"
  },
  {
    "type": "string",
    "name": "property2"
  },
  {
    "type": "bigint",
    "name": "property3"
  }
]
- joinkey.importDataKey
- 描述:配置信息中 writer 的 column 作为关联的列名。
- 必选:是
- 默认值:无
 
- joinkey.taUserTableKey
- 描述:TE 系统中 user 表作为关联的列名。
- 必选:是
- 默认值:无
 
# 3.3 类型转换
| DataX 内部类型 | HIVE 数据类型 | 
|---|---|
| Long | TINYINT,SMALLINT,INT,BIGINT | 
| Double | FLOAT,DOUBLE | 
| String | STRING,VARCHAR,CHAR | 
| Boolean | BOOLEAN | 
| Date | DATE,TIMESTAMP | 
