menu
Is this helpful?

# 업데이트 가능한 이벤트

이 문서에서는 TE 시스템의 특별한 데이터 구조인 업데이트 가능한 이벤트의 사용 방법을 소개합니다. 업데이트 가능한 이벤트는 특수한 이벤트 데이터로, 데이터 내의 이벤트 속성 값을 업데이트할 수 있으며, 가변 상태 값 또는 가변 누적 값을 포함하는 이벤트 데이터(예: 비용 이벤트 등)를 기록하는 데 적합하며, 시간이 지남에 따라 속성 비용 금액을 업데이트할 수 있습니다.

::: 경고

업데이트 가능한 이벤트의 저장 및 처리 성능 오버헤드가 크며, 데이터 처리의 효율성과 쿼리 성능을 보장하기 위해, 이벤트 양이 적고 특별한 시나리오에서 강력한 업데이트 요구가 있는 이벤트에만 적용될 수 없으므로, 필요할 때마다 TE 매니저에게 문의하십시오.

:::

# 1. 데이터 구성

TE 클라이언트 SDK 또는 서비 SDK를 사용할 때, 해당 SDK의 액세스 가이드가 표시되며, 가이드의 [업데이트 가능한 이벤트] 및 [재작성 가능한 이벤트] 장에서 자세한 인터페이스 호출 방법이 소개됩니다.

[업데이트 가능한 이벤트] 기능을 사용하려면, 데이터 내에서 두 가지 조정이 필요합니다.

  1. 데이터 유형을 식별하는 필드 #typetrack_update 또는 track_overwrite로 설정합니다. 이 2 가지 데이터 유형은 각각, 부분 속성의 업데이트와 모든 속성의 재작성을 나타냅니다.
  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. 데이터 처리 로직

업데이트 가능한 이벤트는 처리 로직과 일반 이벤트 데이터와 큰 차이가 있으므로 주의하십시오. 이벤트 데이터의 #typetrack_update인 경우, 그 데이터는 나중에 업데이트될 수 있습니다. 이벤트 데이터의 #typetrack_overwrite인 경우, 업데이트 가능한 이벤트로 간주되며, 이후 두 가지 유형의 데이터 중 하나를 사용하여 속성을 업데이트할 수 있습니다.

TE 시스템이 track_update 또는 track_overwrite를 수신할 경우, 처리 방법이 다릅니다. 여기에서는 이 두 데이터 유형의 처리 로직에 대해 자세히 설명합니다.

# 2.1 track_update의 처리 로직

데이터의 #typetrack_update인 경우, 데이터의 처리 로직은 이벤트 속성이 업데이트됩니다. 시스템이 이 유형의 데이터를 수신하면, #event_id 필드를 기반으로 해당 이벤트 데이터가 존재하는지 여부를 확인한 후, 존재하는 경우 해당 필드를 업데이트합니다. 구체적인 처리 로직은 다음과 같습니다.

  1. 이 이벤트에 #event_id에 해당하는 데이터가 존재하지 않는 경우, 이 데이터는 새 데이터로 간주되어 직접 저장됩니다.
  2. #event_id가 존재하는 경우, 새로 수신된 데이터의 이벤트 속성은 이전 값을 업데이트하고, 새 속성이 존재하는 경우, 새 속성도 추가되며, 새로 수신된 데이터에 포함되지 않은 속성은 업데이트되지 않으므로, 업데이트되는 속성의 수신만 이루어집니다.
  3. 또한, #time 즉, 이벤트 시간도 새 데이터로 업데이트되므로, 실제 사용 시나리오에 기반하여 새로 수신된 데이터의 시간을 합리적으로 설정하십시오.

# 2.2 track_overwrite의 처리 로직

데이터의 #typetrack_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
  }
}

TE가 이 이벤트를 수신하면, 이 #event_id가 이미 존재하는지 여부를 요청한 후 확인하고, 존재한다면 확인된 경우, 원본 데이터(즉, 첫 번째 샘플 데이터)의 #timecost 필드를 업데이트하고, 비용 이벤트의 비용 금액 업데이트 작업을 완료합니다.