# 첫 이벤트 체크
이 장에서는 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
를 쿼리하고, 쿼리 결과에 따라 다른 처리를 합니다.
- ID 테이블에
#first_check_id
가 존재하지 않으면, 그 데이터는 검증되어 바로 입고되고, ID 테이블에는#first_check_id
가 기록됩니다. - 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의 액세스 가이드를 확인할 수 있습니다.