menu
Is this helpful?

# 첫 이벤트 체크

이 장에서는 TE의 특별한 데이터 구조 및 동작에 대해 소개합니다. 첫 이벤트 체크는 데이터 필터링 특성으로, 이벤트 데이터에 고유한 식별ID를 추가하고 TE가 데이터를 수신할 때, 해당 ID가 이전에 나타났는지를 비교합니다. ID가 확인된 데이터는 저장되지 않고, ID가 확인되지 않은 데이터는 저장됩니다. 그 ID를 기록함으로써, ID가 처음으로 확인된 이벤트가 저장된 것을 보장합니다.

::: 경고

첫 이벤트 체크의 성능 오버헤드가 크며, 모든 이벤트에 체크를 추가하는 것은 권장되지 않습니다. 필요할 때마다 TE 스태프에게 문의하십시오.

:::

# 1. 데이터 구조

  • ID 필드 #first_check_id는 문자열이어야 합니다. 이 필드는 첫 이벤트를 검증하기 위한 ID이며, 처음 나타난 데이터는 저장되고, 그 이후는 저장되지 않습니다. 다른 이벤트의 #first_check_id는 서로 독립적이기 때문에, 각 이벤트의 첫 체크는 서로 간섭합니다.

다음은 #first_check_id의 위치에 주목할 수 있는 데이터 예시입니다.

{
  "#account_id": "ABCDEFG-123-abc",
  "#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
  "#type": "track",
  "#ip": "192.168.171.111",
  "#uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "#time": "2017-12-18 14:37:28.527",
  "#first_check_id": "123456",
  "#event_name": "test",
  "properties": {
    "argString": "abc",
    "argNum": 123,
    "argBool": true
  }
}

위 데이터의 #first_check_id는 '123456'이며, 이벤트 'test' 전에 이미 #first_check_id가 '123456'인 다른 데이터가 저장되어 있을 경우, 그 데이터는 저장될 수 없고, 이전에 저장되지 않았다면, 그 데이터는 저장될 수 있습니다.

# 2. 데이터 처리 로직

TE는 이벤트마다 ID 테이블을 유지하며, 다른 이벤트 간에 ID 테이블은 서로 독립적입니다.

#first_check_id 이벤트 데이터를 수신하면, 해당 이벤트의 ID 테이블에서 그 데이터의 #first_check_id를 쿼리하고, 쿼리 결과에 따라 다른 처리를 합니다.

  1. ID 테이블에 #first_check_id가 존재하지 않으면, 그 데이터는 검증되어 바로 입고되고, ID 테이블에는 #first_check_id가 기록됩니다.
  2. ID 테이블에 #first_check_id가 존재하는 경우, 그 데이터는 바로 폐기됩니다. 같은 이벤트가 #first_check_id를 포함한 데이터와 그 필드를 포함하지 않는 데이터를 모두 업로드한 경우, 그 필드를 포함하지 않는 데이터는 첫 이벤트 체크 처리를 받지 않고, 일반 데이터와 일치합니다.

::: 팁 위의 중요한 로직 외에도, 두 가지 주의사항이 있습니다.

성능을 보장하기 위해, 시스템은 타이밍 배치 처리 방식으로 판단하며, 기본 간격은 1시간이므로, 첫 이벤트 체크를 사용한 이벤트 데이터에는 기본적으로 1시간의 쿼리 지연이 있습니다. "#first_check_id" 처리 후에는 데이터베이스에 기록되지 않습니다. 기록이 필요한 경우, 이벤트 속성 기록을 확인하십시오. :::

# 3. 모범 사례

# 디바이스 추가

디바이스의 새 데이터는 첫 이벤트 체크에 최적이며, 애플리케이션이 시작될 때마다, 디바이스ID를 #first_check_id로 하는 "새 디바이스" 이벤트를 보고할 수 있으며, 첫 이벤트 체크 로직에 따라, 디바이스ID가 처음 나타난 "새 디바이스" 이벤트만이 기록되고, 그 후에 나타난 데이터는 폐기됩니다. 따라서, 저장 이벤트는, 디바이스ID별로 처음 발생하는 이벤트이며, 디바이스의 새 로직에 따릅니다.

아래는 첫 이벤트 체크를 사용한 디바이스의 새 이벤트 예시입니다.

{
  "#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
  "#type": "track",
  "#ip": "192.168.171.111",
  "#time": "2017-12-18 14:37:28.527",
  "#first_check_id": "device_id_123456",
  "#event_name": "new_device",
  "properties": {
    "device_id": "device_id_123456"
  }
}

이 이벤트는 애플리케이션이 시작될 때마다 보고되며, 디바이스ID를 #first_check_id로 할 수 있습니다. 더하여, "디바이스 모델"이나 "소스 채널"과 같은 다른 속성을 추가하고, 분석 시 차원을 늘릴 수도 있습니다. TE의 클라이언트 SDK 또는 서비스 측 SDK에서는, 해당 SDK의 액세스 가이드를 확인할 수 있습니다.