본문으로 건너뛰기

데이터 백필 기능

최근 업데이트 2026. 10. 03.

1. 개요​

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

2. 사용 설명​

2.1 명령 설명​

2차 개발 도구가 배포된 서버(분산 배포 시 기본적으로 처음 3대)에 로그인하고 su - ta 명령을 실행하여 ta 사용자로 전환합니다.

ta-tool user_event_import -conf를 실행하여 설정 파일을 읽습니다. 명령은 다음과 같습니다.

ta-tool user_event_import -conf <config 파일> [--date 데이터 날짜]

2.2 명령 파라미터 설명​

2.2.1 -conf​

필수입니다. 파라미터는 해당 데이터 백필 작업 설정 파일의 경로이며, 와일드카드를 지원합니다. 예: /data/config/* 또는 ./config/*.json

2.2.2 --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": "유저 라이프사이클"
},
"appid": "APPID",
"type": "event",
"property_desc": {
"register_date": "가입 날짜",
"date_prop": "LTV 일수"
},
"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 '익일' WHEN CURRENT_DATE - interval '2' DAY THEN '3일' WHEN CURRENT_DATE - interval '6' DAY THEN '7일' WHEN CURRENT_DATE - interval '13' DAY THEN '14일' WHEN CURRENT_DATE - interval '29' DAY THEN '30일' 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"
}
주의

List 타입을 백필해야 하는 경우, 하위 저장소에서 리스트 타입은 \t로 구분된 문자열로 저장되므로 다음과 같이 처리해야 합니다.

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

2.3.2 설정 파라미터 설명​

각 설정 파일은 JSON으로 표현되며, 각 요소의 의미는 다음과 같습니다.

  • event_desc:

    • 설명: 선택 설정. JSON 객체로, 새로 생성할 이벤트의 표시 이름을 설정합니다.
    • key: 이벤트 이름
    • value: 표시 이름
  • appid:

    • 설명: 필수 설정. 조회 결과를 쓸 대상 프로젝트의 APPID입니다.
  • type:

    • 설명: 필수 설정. 대상 프로젝트의 event 테이블과 user 테이블 중 어디에 쓸지 지정합니다.
    • 가능한 값: event, user
  • property_desc:

    • 설명: 선택 설정. JSON 객체로, 속성 이름의 표시 이름을 설정합니다.
    • key: 속성 이름
    • value: 표시 이름
  • sql:

    • 설명: 필수 설정. 문자열로, 조회 문입니다. 반환 결과의 열 이름에 따라 해당 열 데이터의 구체적인 의미가 결정되므로 주의하십시오. 반드시 다음 열이 있어야 합니다.

      • 필수 열 이름 1: #account_id 또는 #distinct_id. 둘 중 하나 이상이 있어야 하며, 각각 트리거한 유저의 계정 ID와 게스트 ID에 해당합니다. 생성되는 이벤트가 개인이 트리거한 것이 아닌 경우(예: 위 예시의 LTV)에는 ID 규칙에서 벗어난 고정값(예: "system", "admin" 등)으로 나타내는 것을 권장합니다.
      • 필수 열 이름 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": "유저 레벨",
"coin_num": "골드 보유량"
},
"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-30으로 치환됩니다
    • @[{yyyyMMddHH}+{2hour}]는 2018070117로 치환됩니다
    • @[{yyyyMMddHHmm00}-{10minute}]는 20180701150300으로 치환됩니다
이 문서가 도움이 되었나요?