For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
데이터 백필
데이터 다시 채우기는 과거 사용자 활동을 현재 데이터와 함께 표시하기 위해 프로젝트에 과거 이벤트를 로드합니다. 일괄 이벤트 업로드 API를 사용하여 과거 데이터를 Amplitude로 가져올 수 있습니다.
고려 사항
데이터를 다시 채우기 전에 이러한 고려 사항을 검토하십시오.
- 실제 프로덕션 프로젝트에 백필하는 대신 기록 데이터를 별도의 Amplitude 프로젝트에 보관하는 것을 고려하십시오. 과거 데이터를 분리하여 보관하면 업로드가 더 쉬워지고 라이브 Amplitude 데이터를 깨끗하게 유지하며 현재와 미래의 데이터에 집중할 수 있습니다. 일반적으로 과거 데이터를 자주 확인할 필요는 없지만 여전히 사용할 수 있어야 합니다. 과거 사용자 속성 값은 다시 채우기 중에 현재 라이브 값을 덮어씁니다. Amplitude는 오래된 속성 값을 새로운 라이브 이벤트로 데이터 동기화합니다. 사용자 속성 동기화를 건너뛰려면 이벤트 페이로드에 다음을 추가하십시오
"$skip_user_properties_sync": true. - 과거 데이터를 현재 데이터와 연결하려면 과거 데이터와 라이브 데이터를 동일한 프로젝트에서 결합하십시오. 각 데이터 세트의 사용자를 연결하려면 사용자는 각 세트에서 일치하는 Amplitude 사용자 ID가 필요합니다.
- 새 사용자 수행 회수가 변경될 수 있습니다. Amplitude는 지정된 사용자에 대해 확인한 가장 이른 이벤트 타임스탬프를 기반으로 새 사용자를 정의합니다. Amplitude가 2021년 6월 1일에 사용자를 신규 사용자로 기록하고 귀하가 2021년 2월 1일부터 해당 사용자의 데이터를 다시 채우는 경우, Amplitude는 해당 사용자를 2021년 2월 1일에 신규 사용자로 정의합니다.
- 다시 채우기는 앱 데이터를 손상시킬 수 있습니다. 현재 사용자 ID와 다시 채워진 사용자 ID 간에 불일치가 있는 경우, Amplitude는 두 개의 고유한 사용자 ID를 두 개의 고유한 사용자로 해석합니다. 그 결과 Amplitude는 사용자를 이중 카운트합니다. Amplitude는 기록된 데이터를 삭제할 수 없으므로 데이터 문제를 방지하기 위해 새 프로젝트를 만들어야 할 수도 있습니다.
- Amplitude는 기기 ID 및 사용자 ID 필드를 사용하여 Amplitude ID를 계산합니다. 자세한 내용은 고유 사용자 추적을 참조하십시오.
- 다시 채우기의 이벤트는 월별 이벤트 볼륨에 수행 회수가 포함됩니다.
제한
데이터를 다시 채울 때는 이러한 제한을 염두에 두십시오.
- 일일 제한: 이벤트 스팸으로부터 Amplitude를 보호하기 위해 각 프로젝트에 장치 ID(및 사용자 ID당)당 일일 50만 개의 이벤트 수집 제한이 적용됩니다. 이 제한은 1시간 간격의 24시간 이동 구간을 사용합니다. 사용자 또는 장치는 지난 24시간 동안 전체 시점에 최대 50만 개의 이벤트를 전송할 수 있습니다. 이 한계에 도달하면 응답에
exceeded_daily_quota_users또는exceeded_daily_quota_devices가 포함됩니다. 자세한 내용은 배치 이벤트 업로드를 참조하십시오. - 배치 제한: 업로드 제한은 초당 100개의 배치 및 초당 1000개의 이벤트로 제한됩니다. 이벤트를 일괄 처리하여 업로드할 수 있지만, Amplitude는 배치당 이벤트를 10개 이하로 전송할 것을 권장합니다. 단일 장치 ID에 대해 초당 10개 이상의 이벤트를 전송할 경우 Amplitude는 업로드를 조절합니다. 임계치 조절에 대한 자세한 내용은 배치 이벤트 업로드를 참조하십시오. 수집 작업자에게 과부하를 주지 않으려면 Amplitude는 다시 채우기 이벤트 업로드를 장치 ID당 초당 300개의 이벤트로 제한할 것을 권장합니다. 기록 데이터를 반복하고 데이터를 가능한 한 빨리 병렬로 전송하는 경우 다시 채우기는 초당 300개의 이벤트를 초과할 수 있습니다.
다시 채우기 모범 사례
- 배치 API에 대한 문서를 검토하십시오. 내보내기 API를 사용하여 기록 데이터를 내보냈고 해당 데이터를 다시 채우기 위해 사용하려는 경우, 내보낸 필드의 형식이 가져오기에 필요한 필드와 같지 않다는 점에 유의하십시오. 예를 들어 내보내기 API는
$를 사용하지만 HTTP 및 배치 API는$insert_id를 사용하지 않는 형식을insert_id사용합니다. - 어떤 필드를 전송할지 결정하고 기록 데이터를 Amplitude 필드에 매핑하십시오. Amplitude는 이
insert_id필드를 사용하여 이벤트를 중복 제거할 것을 강력히 권장합니다. - 가져오기를 취소할 수 있는 방법은 없으므로 Amplitude에서 테스트 프로젝트를 생성하여 백필에서 샘플 데이터를 전송하세요. 프로덕션 프로젝트에 최종 업로드하기 전에 Amplitude 테스트 프로젝트에서 며칠 분량의 데이터를 사용하여 여러 테스트를 실행하십시오.
Amplitude는 대량의 데이터를 다시 채우기 위해 이 방법을 권장합니다.
- 이벤트 세트를 겹치지 않는 작은 세트로 분할합니다(예:
device_id을 기준으로 분할). - 이벤트 세트당 하나의 워커가 다음 단계를 실행하도록 설정하십시오.
- 시스템에서 많은 이벤트를 읽습니다.
- 이러한 이벤트를 또는
device_id을 기반으로 한 요청으로 분할합니다user_id. - 귀하의 요청을 Amplitude에 동시에 또는 병렬로 전송하십시오.
최적화를 더 강화하려면 시간 초과가 긴 공격적 재시도 로직을 추가하십시오. 200 응답을 받을 때까지 계속 재시도하십시오. insert_id를 전송할 경우 Amplitude는 7일 이내에 전송된 동일한 데이터를 중복 제거합니다insert_id.
사용자 속성 동기화 건너뛰기
Amplitude가 이벤트를 캡처할 때, 여기에는 각 사용자 속성의 현재 값이 포함되며, 이는 시간별 변경될 수 있습니다. Amplitude는 사용자 속성이 포함된 이벤트를 수신할 때, 기존 사용자 속성을 업데이트하고 전체 새로운 사용자 속성을 추가합니다. 이 동작을 변경하려면 이벤트 페이로드"$skip_user_properties_sync": true에 추가하십시오.
"$skip_user_properties_sync": true를 포함하면 Amplitude는 사용자 속성 테이블을 완전히 무시합니다. 이 이벤트에는 이벤트와 함께 전송된 사용자 속성만 포함되며 사용자 속성 테이블을 업데이트하지 않으며 전체 기존 사용자 속성도 표시하지 않습니다.
예를 들어 다음 이벤트를 Amplitude로 전송합니다. 사용자 속성 테이블에는 이미 사용자 속성 "city": "New York"이 있습니다.
{
"api_key": "API_KEY",
"events": [
{
"user_id": "b4ee5d78-e1b6-11ec-8fea-0242ac120002",
"insert_id": "97b74bc6-a8c8-48f3-bbc7-de9f95aea636",
"device_id": "",
"event_type": "Button Clicked",
"user_properties":{
"subscriptionStatus":"active"
}
}
]
}
이벤트는 Amplitude에 다음과 같이 표시됩니다.
"events": [
{
"user_id": "b4ee5d78-e1b6-11ec-8fea-0242ac120002",
"insert_id": "97b74bc6-a8c8-48f3-bbc7-de9f95aea636",
"device_id": "",
"event_type": "Button Clicked",
"user_properties":{
"city":"New York",
"subscriptionStatus":"active"
}
}
]
"$skip_user_properties_sync": true를 포함하고 동일한 이벤트를 전송합니다. 이벤트는 Amplitude에 다음과 같이 표시됩니다.
"events": [
{
"user_id": "b4ee5d78-e1b6-11ec-8fea-0242ac120002",
"insert_id": "97b74bc6-a8c8-48f3-bbc7-de9f95aea636",
"device_id": "",
"event_type": "Button Clicked",
"$skip_user_properties_sync": true,
"user_properties":{
"subscriptionStatus":"active"
}
}
]
이 이벤트에는 city 속성이 포함되지 않습니다.
다음으로, "$skip_user_properties_sync": true이 이벤트를 포함하고 전송합니다:
{
"api_key": "API_KEY",
"events": [
{
"user_id": "b4ee5d78-e1b6-11ec-8fea-0242ac120002",
"insert_id": "97b74bc6-a8c8-48f3-bbc7-de9f95aea636",
"device_id": "",
"event_type": "Button Clicked",
"$skip_user_properties_sync": true,
"user_properties":{
"city":"San Francisco"
}
}
]
}
Amplitude는 사용자 속성 테이블을 업데이트하지 않으며, 이벤트는 Amplitude에 다음과 같이 표시됩니다.
"events": [
{
"user_id": "b4ee5d78-e1b6-11ec-8fea-0242ac120002",
"insert_id": "97b74bc6-a8c8-48f3-bbc7-de9f95aea636",
"device_id": "",
"event_type": "Button Clicked",
"user_properties":{
"city":"San Francisco"
}
}
]
모든 새 이벤트에는 여전히 "city":"New York"가 있지만 이 이벤트에는 "city":"San Francisco"가 표시됩니다.
타이밍
타임스탬프가 30일 이상 지난 데이터를 전송하는 경우, Amplitude의 일부 부분에 표시되기까지 최대 48시간이 걸릴 수 있습니다. 사용자 활동 탭을 사용하여 전송 중인 이벤트를 확인할 수 있습니다. 이 탭은 이벤트 시간에 관계없이 실시간으로 업데이트되므로 이 탭을 사용합니다.
리소스
- 데이터 가져오기를 위한 스크립트 예제: https://gist.github.com/djih/2a7e7fb2c1d45c8277f7aef64b682ed6
- 데이터 예제: https://d24n15hnbwhuhn.cloudfront.net/sample_data.zip
데이터 수집 시스템
Amplitude의 수집 시스템에서는 각 사용자의 현재 사용자 속성이 추적되고 사용자의 수신 이벤트와 동기화됩니다.
Amplitude로 데이터를 전송할 때는 이벤트 데이터를 전송하거나 사용자의 사용자 속성을 업데이트하기 위해 identify호출을 보냅니다. 이러한 identify 호출은 사용자의 현재 사용자 속성 값을 업데이트하고 identify호출 후에 수신된 이벤트에 연결된 사용자 속성에 영향을 줍니다.
Datamonster 사용자는 'red'로 설정된 'color'라는 사용자 속성을 하나 가지고 있습니다. Datamonster는 'View Page A' 이벤트를 기록하고 'color'를 'blue'로 설정하는 identify를 트리거합니다. 그 후 Datamonster는 'View Page B' 이벤트를 기록합니다.
logEvent-> 'View Page A'identify-> 'color':'blue'logEvent-> 'B 페이지 보기'
Amplitude가 정확히 이 순서대로 Datamonster로부터 이벤트를 수신한다면 'View Page A'는 'color' = 'red'이고 'View Page B'는 'color' = 'blue'를 갖게 될 것입니다. Amplitude는 이벤트 발생 시점의 사용자 속성 값을 유지합니다. 이러한 이유로 이벤트가 업로드되는 순서는 중요합니다. identify가 '페이지 B 보기' 다음에 도착하면 '페이지 B 보기'는 '파란색' 대신 '빨간색'인 '색상'을 갖습니다.
Amplitude는 동일한 수집 워커를 사용하여 사용자의 모든 이벤트를 처리하므로 Amplitude는 이벤트를 수신한 순서대로 처리할 수 있도록 보장합니다. 모든 Datamonster 이벤트는 단일 수집 작업자에 순서대로 대기열에 저장됩니다. 두 개의 개별 작업자가 이러한 이벤트를 병렬로 처리할 경우 순서를 보장하기가 더 어려울 것입니다. 예를 들어 한 워커가 다른 워커보다 더 빠르게 실행될 수 있습니다.
단일 수집 작업자가 사용자의 이벤트를 처리하므로 사용자가 짧은 기간 동안 비정상적으로 많은 수의 이벤트를 전송하면 해당 작업자에게 과부하가 발생할 수 있습니다. 수집 작업자에게 과부하를 주지 않으려면 Amplitude는 이벤트 업로드를 장치 ID당 초당 300개의 이벤트로 제한할 것을 권장합니다. 기록 데이터를 반복하고 데이터를 가능한 한 빨리 병렬로 전송하는 경우 다시 채우기는 초당 300개의 이벤트를 초과할 수 있습니다. Amplitude는 각 장치 ID의 이벤트 속도를 추적하고 장치 ID가 너무 많은 이벤트를 전송할 경우 429 조절 HTTP 응답 코드로 이벤트를 거부합니다. 이벤트 업로드에 대한 응답으로 429가 발생하면 프로세스는 몇 초 동안 대기한 다음 성공할 때까지 계속 업로드를 재시도해야 합니다. 이 접근 방식은 다시 채우기 프로세스에서 이벤트가 손실되지 않도록 보장합니다. 429 응답 코드가 발생한 후 다시 시도하지 않으면 Amplitude는 해당 이벤트 배치를 수집하지 않습니다.
기존 사용자를 다시 채우기
기존 사용자가 있는 경우 해당 사용자가 새 사용자가 되었을 때를 정확하게 표시하기 위해 해당 사용자를 다시 채웁니다. Amplitude는 가장 오래된 이벤트의 타임스탬프를 기반으로 사용자를 신규 사용자로 표시합니다.
기존 사용자를 다시 채우려면 배치 API를 사용하십시오. 이벤트 타임스탬프가 사용자가 원래 생성된 실제 시간인 자리 표시자 이벤트 또는 등록 이벤트를 전송합니다. 예를 들어 사용자가 2022년 8월 1일에 가입했다면 전송하는 이벤트의 타임스탬프는 2022년 8월 1일이어야 합니다.
이 내용이 도움이 되었나요?