menu
Is this helpful?

# 데이터 백트랙 기능

# 1. 개요

데이터 백트랙 기능은 SQL 문을 통해 TA 데이터베이스의 데이터를 조회한 후, 반환된 결과를 TA 데이터베이스에 입력하여 새로운 이벤트 또는 새로운 유저 속성을 생성하는 기능입니다.

# 2. 사용 지침

# 2.1 명령어 설명

TA 서버에 로그인한 후 su - ta 명령어를 실행하여 TA 유저로 전환합니다. ta-tool user_event_import -conf 명령어를 실행하여 구성 파일을 읽습니다. 명령어는 다음과 같습니다:

ta-tool user_event_import -conf <config file> [--date data date]

# 2.2 명령어 파라미터 설명

# 2.2.1 -conf

필수 파라미터로, 데이터 백트랙 작업 구성 파일의 경로를 지정합니다. 와일드카드 방법을 지원하며, 예를 들어 /data/config/ 또는 ./config/.json 과 같이 지정할 수 있습니다.

# 2.2.1 --date

선택적 파라미터로, 데이터 날짜를 나타내며, 이 참조 시간을 기준으로 시간 매크로가 대체됩니다. 파라미터가 없으면 기본적으로 현재 날짜를 사용하며, 형식은 YYYY-MM-DD입니다. 시간 매크로 사용에 대한 자세한 내용은 시간 매크로 사용법을 참조하십시오.

# 2.2.3 예제

ta-tool user_event_import -conf /data/home/ta/import_configs/*.json

파라미터는 구성 파일의 전체 경로이며, 와일드카드를 사용하여 여러 구성 파일을 읽는 것을 지원합니다.

# 2.3 구성 파일 설명

# 2.3.1 샘플 구성 파일

데이터 백트랙 기능의 핵심은 쿼리 문과 구성 파라미터를 포함하는 구성 파일입니다.

구성 파일 하나는 하나의 데이터 백트랙 작업에 해당하며, 백트랙 이벤트에 대한 구성 파일은 다음과 같습니다:

{
  "event_desc": {
    "ltv_event": "user life cycle"
  },
  "appid": "APPID",
  "type": "event",
  "property_desc": {
    "register_date": "registration date",
    "date_prop": "LTV days"
  },
  "sql": "SELECT 'thinkinggame' \"#account_id\",'ltv_event' \"#event_name\",register_date \"#time\",register_date,ltv,date_prop FROM  (SELECT recharge_money ltv,register_date,CASE date_trunc('day', cast(register_date AS TIMESTAMP)) WHEN CURRENT_DATE - interval '1' DAY THEN 'next day' WHEN CURRENT_DATE - interval '2' DAY THEN '3 days' WHEN CURRENT_DATE - interval '6' DAY THEN '7 days' WHEN CURRENT_DATE - interval '13' DAY THEN '14 days' WHEN CURRENT_DATE - interval '29' DAY THEN '30 days' ELSE NULL END date_prop FROM (SELECT sum(recharge_money) recharge_money ,register_date FROM (SELECT \"#user_id\" ,sum(recharge_value) recharge_money ,\"$part_date\" recharge_date FROM v_event_0 WHERE \"$part_event\" = 'recharge' AND \"$part_date\" > '2018-06-30' AND \"$part_date\" < '2018-07-30' GROUP BY \"#user_id\" , \"$part_date\") a LEFT JOIN (SELECT \"#user_id\" , \"$part_date\" register_date FROM v_event_0 WHERE \"$part_event\" = 'player_register' AND \"$part_date\" > '2018-06-30' AND \"$part_date\" < '2018-07-30') b ON a.\"#user_id\" = b.\"#user_id\" WHERE b.\"#user_id\" IS NOT NULL AND recharge_date >= register_date GROUP BY register_date) c) d WHERE date_prop IS NOT NULL"
}

TIP

List 타입을 역추적해야 할 때, 기본 저장 리스트 타입이 탭 문자로 구분된 문자열이기 때문에 다음과 같이 해야 합니다:

split("arrayColumn", chr(0009)) as arrayColumn

# 2.3.2 설정 파라미터 설명

각 설정 파일은 JSON 형식으로 나타내며, 각 요소의 의미는 다음과 같습니다:

  • event_desc
    • 설명: 선택적 설정, 새 이벤트의 표시 이름을 설정하기 위한 JSON 객체
    • 키: 이벤트 이름
    • 값: 표시 이름
  • appid
    • 설명: 필수 설정, 쿼리 결과의 대상 프로젝트의 APPID를 작성
  • type
    • 설명: 필수 설정, 대상 항목의 이벤트 테이블 또는 사용자 테이블을 작성
    • 사용 가능한 값: event, user
  • property_desc
    • 설명: 선택적 설정, 속성 이름의 표시 이름을 설정하기 위한 JSON 객체
    • 키: 속성 이름
    • 값: 표시 이름
  • sql :
    • 설명: 필수 설정, 문자열, 쿼리문. 반환된 결과의 열 이름이 열 데이터의 구체적인 의미를 결정하므로 다음을 반드시 포함해야 합니다:
      • 필수 열 이름 1: #account_id 또는 #distinct_id, 둘 중 하나는 트리거 유저의 계정 ID 및 익명 ID에 대응해야 함. 생성된 이벤트가 개인에 의해 트리거되지 않은 경우(예: 위의 예에서 LTV), 'system', 'admin'과 같은 ID 규칙 외부의 고정 값을 사용하는 것이 좋습니다.
      • 필수 열 이름 2: #event_name, 이벤트 이름, 권장 설정 값
      • 필수 열 이름 3: #time, 이벤트 시간, 형식 yyyy-MM-dd HH:mm:ss 또는 yyyy-MM-dd HH:mm:ss.SSS

위의 열 이름 외에도, 나머지 열의 데이터는 이벤트의 속성으로 사용되며, 열 이름이 속성 이름이 됩니다.

역추적 이벤트 외에도 쿼리 결과를 통해 새 사용자 속성을 생성하거나 기존 사용자 속성을 덮어쓸 수 있습니다. 설정 파일은 다음과 같습니다:

{
  "appid": "8d1820678a064397bbfcc9732f352e75",
  "type": "user",
  "property_desc": {
    "user_level": "user level",
    "coin_num": "coin number"
  },
  "sql": "select \"#account_id\",localtimestamp \"#time\",user_level,coin_num from v_user_0"
}

역추적 이벤트와 유사하게, 설정 파일은 JSON 형식으로 표시되며, 역추적 이벤트의 설정 파일과의 차이점은 다음과 같습니다:

  • event_desc 불필요
  • type은 "user"
  • sql의 필수 열 이름은 #event_name을 필요로 하지 않으며, 다음 두 가지 열만 필요:
    • 필수 열 1: #account_id 또는 #distinct_id, 둘 중 하나
    • 필수 열 2: #time, 시간을 나타냄

# 2.4 시간 매크로 사용

데이터 역추적 작업 설정 파일 내에서 시간 매개변수를 시간 매크로로 대체할 수 있습니다. 데이터 역추적 명령을 실행할 때 ta-tool 도구는 --date를 기준으로 시간 매크로의 매개변수를 기반으로 시간의 오프셋을 계산하고 설정 파일의 시간 매크로를 대체합니다. 사용 가능한 시간 매크로 형식은 @[{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으로 대체