앰플리튜드에서 특정 시점에 확인한 데이터와 이후 시점에 확인한 데이터 간 차이가 발생합니다. 예상 원인이 있나요?
질문
앰플리튜드에서 특정 시점에 확인한 데이터와 이후 시점에 확인한 데이터 간 차이가 발생하는 이유는 무엇인가요? 예를 들면 동기간에 대해 30일 전에 확인했던 Active Users 수와, 오늘 확인한 Active Users 수가 다릅니다.
답변
특정 시점에 확인했던 데이터와 나중에 동일한 데이터를 조회했을 때, 값이 다르게 나타나는 현상은 아래와 같은 세 가지 주요 원인으로 인해 발생할 수 있습니다.
예상 원인 1. 이벤트 발생 시점과 수집 시점의 차이
앰플리튜드는 이벤트가 발생한 시점(client_event_time), 디바이스에서 Amplitude 서버로 전송한 시점(client_upload_time), 서버에서 이벤트를 수신한 시점(server_received_time)을 기준으로 데이터를 집계합니다.
이 때문에 디바이스의 네트워크 환경에 따라 이벤트가 발생한 시점과 서버에 기록된 시점 간의 차이가 발생할 수 있습니다.
[예시]
사용자가 비행기 모드에서 이벤트를 생성한 후, 인터넷 연결이 다시 활성화될 때 이벤트가 서버에 전송되면, 실제 발생 시간과 서버 수신 시간 간의 차이가 생깁니다. 이 경우 앰플리튜드는 다음 수식을 사용하여
event_time
을 보정합니다.1event_time = client_event_time + (server_received_time - client_upload_time)
이로 인해 초기와 나중에 데이터 값을 조회했을 때 결과에 차이가 나타날 수 있습니다.
예상 원인 2. 데이터 캐싱으로 인한 일시적 차이
앰플리튜드는 대규모 데이터를 효과적으로 처리하기 위해 여러 데이터 서버를 활용합니다. 이 과정에서 데이터가 완전히 동기화되지 않은 상태에서 쿼리가 실행되면, 같은 데이터에 대해 시점별로 약간의 차이가 발생할 수 있습니다.
[예시]
동일한 차트를 조회할 때마다 유저 수가 다르게 나타남
동일한 코호트를 반복해서 쿼리할 때 유저 수가 변동됨
이는 데이터 캐싱으로 인해 발생하는 일시적인 현상으로, 일정 시간이 지나면 데이터가 동기화되어 최종적으로 일관된 쿼리 결과를 확인할 수 있습니다.
예상 원인 3. User ID 병합(Merge)으로 인한 Unique User 수 변화
앰플리튜드는 유저 트래킹 시 Amplitude ID와 User ID를 기반으로 유저를 식별합니다. 비회원 상태의 Amplitude ID가 추후 특정 User ID와 병합(Merge)되면, 기존에 비회원으로 기록된 Unique User 수가 줄어들 수 있습니다.
[예시]
17일: 사용자가 Device A에서 비회원으로 이벤트를 생성하고, 같은 날 Device B에서 로그인 후 이벤트를 생성한 경우, 두 이벤트는 각각 다른 Amplitude ID로 기록되어 Unique Count가
2
로 집계됩니다.18일: 사용자가 Device A에서 로그인하여 이벤트를 생성하면, 이전의 비회원 Amplitude ID가 로그인된 User ID와 병합되어, 17일의 Unique Count가
1
로 줄어들고, 18일의 Unique Count도1
로 집계됩니다.
이처럼 동일한 사용자에 대해 Amplitude ID와 User ID가 병합되면, 특정 날짜의 Unique Count가 줄어들거나 변경될 수 있습니다.
위와 같은 이유로 인해, 특정 시점에 조회한 데이터와 나중에 같은 데이터 조회 시 값이 일치하지 않을 수 있습니다. 시간이 지남에 따라 데이터가 안정화되면 대부분 일관된 결과를 확인하실 수 있습니다.