본문으로 건너뛰기

업데이트 가능 이벤트

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

이 장에서는 AE 시스템의 특수 데이터 구조인 업데이트 가능 이벤트의 사용 방법을 소개합니다. 업데이트 가능 이벤트는 특수한 이벤트 데이터로, 데이터의 이벤트 속성 값을 업데이트할 수 있습니다. 변하는 상태 값이나 변하는 누적값을 포함하는 이벤트 데이터를 기록하는 데 적합합니다. 예를 들어 비용 이벤트의 경우 시간이 지남에 따라 cost(비용 금액) 속성을 업데이트할 수 있습니다.

경고

업데이트 가능 이벤트는 저장과 처리에 드는 성능 부담이 매우 큽니다. 데이터 처리 효율과 조회 성능을 보장하기 위해 이벤트 양이 적고 특수한 비즈니스 시나리오에서 업데이트 요구가 강한 이벤트에만 적합하며, ThinkingAI 담당자의 도움을 받아 사용할 것을 강력히 권장합니다

1. 데이터 구조​

AE 클라이언트 SDK 또는 서버 SDK를 사용하는 경우 해당 SDK의 연동 가이드를 참고하십시오. 가이드의 "업데이트 가능 이벤트" 및 "덮어쓰기 가능 이벤트" 섹션에서 자세한 인터페이스 호출 방법을 제공합니다

업데이트 가능 이벤트 기능을 사용하려면 데이터를 다음 두 가지와 같이 조정해야 합니다:

  1. 데이터 타입을 나타내는 필드 #type을 track_update 또는 track_overwrite로 설정합니다. 이 두 데이터 타입은 각각 두 가지 이벤트 업데이트 방식인 일부 속성 업데이트와 전체 속성 덮어쓰기를 나타냅니다
  2. 필드 #event_id를 추가합니다. 이 필드는 이벤트의 고유 식별자입니다. 속성을 업데이트할 때 #event_name과 #event_id를 기준으로 해당 이벤트 데이터를 찾아 그 데이터를 업데이트합니다. 이벤트마다 #event_id는 서로 독립적이므로 각 업데이트 가능 이벤트는 별도의 고유 식별 체계를 가집니다

다음은 데이터 예시입니다. #event_id의 위치를 확인하십시오:

{
"#account_id": "ABCDEFG-123-abc",
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track_update",
"#event_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#time": "2020-08-18 14:37:28.527",
"#event_name": "test_event",
"properties": {
"argString": "abc"
}
}

2. 데이터 처리 로직​

업데이트 가능 이벤트는 처리 로직 면에서 일반 이벤트 데이터와 크게 다릅니다. 주의: 이벤트 데이터의 #type이 track이면 해당 데이터는 이후에 업데이트할 수 없습니다. 이벤트 데이터의 #type이 track_update 또는 track_overwrite이면 업데이트 가능 이벤트로 간주되며, 이후 두 유형의 데이터 중 어느 것으로든 속성을 업데이트할 수 있습니다.

AE 시스템은 track_update와 track_overwrite를 받았을 때 서로 다르게 처리합니다. 이 절에서는 두 유형의 데이터 처리 로직을 자세히 설명합니다.

2.1 track_update 처리 로직​

데이터의 #type이 track_update이면 데이터 처리 로직은 이벤트 속성 업데이트입니다. 시스템이 이 타입의 데이터를 받으면 #event_id 필드를 기준으로 해당 이벤트 데이터가 존재하는지 찾고, 존재하면 해당 필드를 업데이트합니다. 구체적인 처리 로직은 다음과 같습니다:

  1. 해당 이벤트에 #event_id에 해당하는 데이터가 없으면 이 데이터는 신규 데이터로 간주되어 바로 적재됩니다
  2. #event_id가 존재하면 새로 전달된 데이터의 이벤트 속성이 이전 값을 업데이트하고, 새 속성이 있으면 새 속성도 추가됩니다. 새로 전달된 데이터에 포함되지 않은 속성은 업데이트되지 않으므로 업데이트할 속성만 전달하면 됩니다
  3. 또한 #time, 즉 이벤트 시간도 새 데이터로 업데이트되므로 실제 비즈니스 시나리오에 맞게 새로 전달하는 데이터의 시간을 적절히 설정해야 합니다

2.2 track_overwrite 처리 로직​

데이터의 #type이 track_overwrite이면 데이터 처리 로직은 이벤트 덮어쓰기입니다. 시스템이 이 타입의 데이터를 받으면 #event_id 필드를 기준으로 해당 이벤트 데이터가 존재하는지 찾고, 존재하면 그 데이터를 삭제한 뒤 새 이벤트 데이터를 시스템에 기록합니다(삭제된 데이터를 교체하는 것과 같습니다). 구체적인 처리 로직은 다음과 같습니다:

  1. 해당 이벤트에 #event_id에 해당하는 데이터가 없으면 이 데이터는 신규 데이터로 간주되어 바로 적재됩니다
  2. #event_id가 존재하면 해당 이벤트 데이터의 모든 내용이 덮어쓰기됩니다. 일부 속성만 업데이트하려면 track_update를 사용할 수 있습니다
  3. 또한 #time, 즉 이벤트 시간도 새 데이터로 업데이트되므로 실제 비즈니스 시나리오에 맞게 새로 전달하는 데이터의 시간을 적절히 설정해야 합니다

3. 모범 사례​

광고 비용​

광고 성과를 분석할 때는 광고 위치나 소재의 ROI(투자 대비 수익률), 즉 유저 가치와 유저 비용의 비율을 계산해야 하는 경우가 많습니다. 유저 가치, 즉 직접 결제와 기타 방식으로 발생한 가치의 합계는 기록하기 쉽습니다. 반면 비용 데이터는 광고 집행 측의 데이터 규칙에 의존하며, 일반적으로 비용 금액이 계속 업데이트되므로 일반 이벤트 데이터로 기록하기에 적합하지 않습니다.

비용 데이터는 계속 변하므로 광고 비용 데이터는 업데이트 가능 데이터 방식으로 기록하기에 매우 적합합니다. 광고 비용 데이터를 처음 기록할 때는 다음과 같은 데이터를 전송할 수 있습니다:

{
"#account_id": "admin",
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track_update",
"#event_id": "2020-09-01_google_7-Tier1-0527_adset1_adname1",
"#time": "2020-09-01 00:00:00.000",
"#event_name": "ad_cost",
"properties": {
"channel": "google",
"campaignid": "7-Tier1-0527",
"adset": "adset1",
"adname": "adname1",
"cost": 100
}
}

위 데이터는 비용 업데이트 가능 이벤트 하나를 새로 추가합니다. 여기서 #event_id는 날짜, 채널, 캠페인 이름, 광고 그룹, 광고 이름을 이어 붙여 만든 것으로, 비용의 고유 ID 역할을 합니다. 데이터 로직상 이것이 비용 이벤트를 업데이트할 수 있는 가장 작은 단위이기도 합니다. cost 필드는 이 시점의 광고 비용 100위안을 기록합니다.

시간이 지나 광고 집행 채널에서 새 비용 데이터를 보내와 새 광고 비용이 200이 되면 다음 데이터를 전송할 수 있습니다. 여기서 #event_id는 이전 데이터와 같아야 하며, 이는 이전 데이터를 업데이트한다는 의미입니다. 업데이트하는 것은 cost 필드이며 새 비용 값 200을 전달합니다. #time도 새 데이터로 업데이트되므로 여기서는 이전과 같게 유지해야 하며, 비용 날짜(시간 타입으로 변환)를 전달합니다. 채널, 캠페인, 광고 위치 등 기타 필드는 업데이트할 필요가 없으므로 데이터에 입력하지 않아도 됩니다.

{
"#account_id": "admin",
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track_update",
"#event_id": "2020-09-01_google_7-Tier1-0527_adset1_adname1",
"#time": "2020-09-01 00:00:00.000",
"#event_name": "ad_cost",
"properties": {
"cost": 200
}
}

시스템이 이 이벤트를 받으면 해당 #event_id가 이미 존재하는지 조회하고, 존재하면 원본 데이터(즉 첫 번째 예시 데이터)의 #time과 cost 필드를 업데이트합니다. 이로써 비용 이벤트의 비용 금액 업데이트 작업이 완료됩니다.

이 문서가 도움이 되었나요?