# 외부 유저 속성 연동 데이터 가져오기
# 1. 개요
외부 유저 데이터를 TA 클러스터에 가져와야 하는 경우가 있습니다. 하지만 데이터의 유저 ID가 TA 시스템의 #account_id 또는 #distinct_id가 아닐 때가 있습니다. 예를 들어, 데이터가 휴대폰 번호, 주민등록번호 또는 다른 식별 ID를 기본 키로 사용하는 경우입니다. 이 데이터를 TA 시스템의 유저 속성으로 가져오려면 update_user_by_foreignkey명령을 사용하여 연동 관계를 설정해야 합니다. 현재 datax에서 지원하는 모든 데이터 소스를 사용할 수 있습니다.
# 2. 사용 방법
# 2.1 명령어 설명
데이터 가져오기 명령은 다음과 같습니다:
ta-tool update_user_by_foreignkey -conf <config 파일 경로> [--date xxx]
# 2.2 명령어 파라미터 설명
# 2.2.1 -conf
이 파라미터는 가져오기 작업의 설정 파일 경로입니다. 각 작업은 하나의 설정 파일로 구성되며, 여러 작업을 동시에 가져오는 것도 가능합니다. 와일드카드 문법을 지원합니다. 예를 들어, /data/config/ 또는 ./config/.json과 같이 사용할 수 있습니다.
# 2.2.2 --date
선택적 파라미터 ** --date **: 데이터 날짜를 나타내며, 이 참조 시간을 기준으로 시간 매크로가 대체됩니다. 이 파라미터를 생략하면 기본적으로 현재 날짜가 사용됩니다. 형식은 YYYY-MM-DD입니다. 시간 매크로 사용에 대한 자세한 내용은 아래를 참조하세요.
# 2.3 시간 매크로 사용법 설정
파일 내에서 시간 매크로를 사용하여 시간 파라미터를 대체할 수 있습니다. ta-tool은 가져오기 시작 시간을 기준으로 시간 매크로의 파라미터를 계산하여 설정 파일 내의 시간 매크로를 대체합니다. 사용 가능한 시간 매크로 형식은 다음과 같습니다:
- @[{yyyyMMdd}], @[{yyyyMMdd}-{nday}], @[{yyyyMMdd}+{nday}] 등
 - yyyyMMdd는 Java dateFormat으로 파싱할 수 있는 모든 날짜 형식으로 대체할 수 있습니다. 예를 들어, yyyy-MM-dd HH:mm.SSS, yyyyMMddHH000000 등
 - n은 시간의 오프셋 값을 나타내는 정수입니다.
 - day는 시간의 오프셋 단위를 나타내며, day, hour, minute, week, month 중에서 선택할 수 있습니다.
 - 예시: 현재 시간이 2018-07-01 15:13:23.234인 경우
- @[{yyyyMMdd}]는 20180701로 대체됩니다.
 - @[{yyyy-MM-dd}-{1day}]는 2018-06-30으로 대체됩니다.
 - @[{yyyyMMddHH}+{2hour}]는 2018070117로 대체됩니다.
 - @[{yyyyMMddHHmm00}-{10minute}]는 20180701150300으로 대체됩니다.
 
 
# 3. 기능 설명
# 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에서 지원하는 설정과 동일합니다. 자세한 내용은 datax 문서를 참조하세요.
 
# 3.2.2 writer 부분
- appid
- 설명: 프로젝트 appid
 - 필수 여부: 예
 - 기본값: 없음
 
 - column
- 설명: 필드 목록을 읽어오며, type은 데이터의 유형을 지정하고, name은 reader의 해당 위치에 있는 열을 지정하며, TA 시스템에 가져올 때 속성 이름을 지정합니다.
 
 
사용자는 Column 필드 정보를 지정할 수 있으며, 구성 예시는 다음과 같습니다:
[
  {
    "type": "double",
    "name": "property1"
  },
  {
    "type": "string",
    "name": "property2"
  },
  {
    "type": "bigint",
    "name": "property3"
  }
]
- joinkey.importDataKey
- 설명: 구성 정보에서 writer의 열을 연관된 열 이름으로 사용합니다.
 - 필수 여부: 예
 - 기본값: 없음
 
 - joinkey.taUserTableKey
- 설명: TA 시스템의 유저 테이블에서 연관된 열 이름으로 사용합니다.
 - 필수 여부: 예
 - 기본값: 없음
 
 
# 3.3 유형 변환
DataX 내부 유형  |  HIVE 데이터 유형  | 
|---|---|
Long  |  TINYINT,SMALLINT,INT,BIGINT  | 
Double  |  FLOAT,DOUBLE  | 
String  |  STRING,VARCHAR,CHAR  | 
Boolean  |  BOOLEAN  | 
Date  |  DATE,TIMESTAMP  | 
← 커스텀 테이블 삭제 데이터 백트랙 기능 →
