사용자 이벤트 관리

Book: /retail/_book.yaml

이 페이지에서는 사용자 이벤트를 보고 삭제하는 방법을 설명합니다. 사용자 이벤트가 발생할 때 기록하는 방법에 대한 상세 설명은 실시간 사용자 이벤트 기록을 참조하세요. 과거 이벤트에서 사용자 이벤트 데이터를 가져오려면 이전 사용자 이벤트 가져오기를 참조하세요.

사용자 이벤트 재조인 튜토리얼

이 튜토리얼에서는 userEvents:rejoin 엔드포인트에 POST 요청을 보내 사용자 이벤트를 다시 조인하는 방법을 보여줍니다.


Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


사용자 이벤트 삭제 튜토리얼

이 튜토리얼에서는 사용자 이벤트를 삭제하는 방법을 설명합니다.


Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


집계된 사용자 이벤트 정보 보기

Search for commerce 콘솔 데이터 페이지의 이벤트 탭에서 이벤트 통합 측정항목을 확인합니다. 이 페이지에는 지난해에 쓰거나 가져온 모든 이벤트가 표시됩니다. 성공적인 데이터 수집 후 측정항목이 표시되는 데 최대 24시간이 걸릴 수 있습니다.

데이터 페이지로 이동

커머스용 Vertex AI Search 사용자 이벤트 통계

사용자 이벤트 다시 조인

userEvents:rejoin 엔드포인트에 POST 요청을 보내 카탈로그 이벤트를 다시 조인할 수 있습니다.

다시 조인 작업은 지정된 이벤트를 제품 카탈로그의 최신 버전과 조인합니다.

사용자 이벤트가 수집될 때 연결된 제품이 카탈로그에 없으면 사용자 이벤트가 조인되지 않은 것으로 간주됩니다. 조인되지 않은 이벤트는 자세한 제품 정보를 제공하지 않으며 모델 학습 및 결과 제공에 유용하지 않습니다.

다시 조인 작업은 조인되지 않은 이벤트를 처리하는 것 외에도 잘못된 제품 카탈로그와 조인된 이벤트를 수정하는 데 사용할 수 있습니다.

이 메서드를 호출하려면 Retail AI Admin IAM 역할이 있어야 합니다. 다시 조인 작업은 완료하는 데 몇 시간 또는 며칠이 걸릴 수 있습니다. 필요한 권한이 있는지 확인합니다.

curl

다시 조인하려는 이벤트 유형에 따라 userEventRejoinScope를 설정합니다.

  • USER_EVENT_REJOIN_SCOPE_UNSPECIFIED: 기본값입니다. 조인된 이벤트와 조인되지 않은 이벤트 모두에 대한 재조인을 트리거합니다.
  • JOINED_EVENTS: 조인된 이벤트에 대해서만 재조인을 트리거합니다.
  • UNJOINED_EVENTS: 조인되지 않은 이벤트에 대해서만 재조인을 트리거합니다.

다음 예시는 조인되지 않은 이벤트에 대해서만 재조인을 트리거합니다.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
     'userEventRejoinScope': 'UNJOINED_EVENTS'
     }" \
    "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:rejoin"

다음과 같은 응답 객체가 수신됩니다.

{
  "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/OPERATION_ID"
}

재조인의 상태를 확인할 수 있습니다. OPERATION_ID를 재조인 메서드에서 반환한 작업 ID로 바꿉니다.

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/OPERATION_ID"

작업이 완료되면 작업 상태가 done으로 반환됩니다.

{
  "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/OPERATION_ID",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.retail.v2.RejoinUserEventsResponse",
    "rejoinedUserEventsCount": "1"
  }
}

Java

public static String rejoinUserEvents(UserEventRejoinScope scope)
    throws IOException, InterruptedException, ExecutionException {
  UserEventServiceClient userEventsClient = getUserEventServiceClient();

  RejoinUserEventsRequest request = RejoinUserEventsRequest.newBuilder()
      .setParent(DEFAULT_CATALOG_NAME)
      .setUserEventRejoinScope(scope)
      .build();

  String operationName = userEventsClient
      .rejoinUserEventsAsync(request).getName();

  userEventsClient.shutdownNow();
  userEventsClient.awaitTermination(2, TimeUnit.SECONDS);

  return operationName;
}

사용자 이벤트 삭제

일반적으로 사용자 이벤트는 기록된 후에 그대로 유지해야 합니다. 이벤트를 삭제하지 않는 것이 좋습니다.

이벤트 삭제를 완료하는 데 며칠이 걸릴 수 있습니다. 사용자 이벤트를 완전히 재설정하려면 대신 새 프로젝트를 만드는 것이 좋습니다.

올바르게 기록되지 않은 사용자 이벤트를 삭제해야 하는 경우 userEvents.purge 메서드를 사용하여 삭제할 수 있습니다.

필터 문자열을 사용하여 삭제할 이벤트를 지정합니다. eventTime, eventType, visitorID, userID 필드를 필터링하여 사용자 이벤트를 선택적으로 삭제할 수 있습니다.

삭제는 실행취소할 수 없으므로 사용자 이벤트를 삭제하기 전에 테스트 실행을 수행하여 필터 문자열을 테스트합니다. force 필드는 기본적으로 false로 설정됩니다. 이 설정은 실제로 삭제하지 않고 삭제할 이벤트 수를 반환합니다. 사용자 이벤트를 실제로 삭제할 준비가 되면 force 필드를 true로 설정합니다.

이 메서드를 호출하려면 Retail AI Admin IAM 역할이 있어야 합니다. 필요한 권한이 있는지 확인합니다.

curl

다음 예시에서는 Zulu 시간 날짜 형식을 사용해야 하는 시간 범위를 필터링합니다. force 필드는 false로 설정됩니다.

curl -X POST \
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data '{
    "filter":"eventTime > \"2019-12-23T18:25:43.511Z\" eventTime < \"2019-12-23T18:30:43.511Z\"",
    "force":"false"
  }' \
  "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:purge"

다음과 같은 응답 객체를 받아야 합니다. 여기서 purge-user-events-54321은 작업 ID입니다.

{
  "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/purge-user-events-54321"
}

이 예시에서는 작업 상태를 요청합니다.

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/OPERATION_ID"

작업 상태 예시:

{
  "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/OPERATION_ID",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.retail.v2.PurgeUserEventsResponse",
    "purgedEventsCount": "1"
  }
}

force 필드를 true로 설정하면 강제로 삭제됩니다.

curl -X POST \
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data '{
    "filter":"eventTime > \"2019-12-23T18:25:43.511Z\" eventTime < \"2019-12-23T18:30:43.511Z\"",
    "force":"true"
  }' \
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:purge"

Java

public static String purgeUserEvents(
    String filter)
    throws IOException, InterruptedException, ExecutionException {
  UserEventServiceClient userEventsClient = getUserEventServiceClient();

  PurgeUserEventsRequest request = PurgeUserEventsRequest.newBuilder()
      .setParent(DEFAULT_CATALOG_NAME)
      .setFilter(filter)
      .setForce(true)
      .build();

  String operationName = userEventsClient
      .purgeUserEventsAsync(request).getName();

  userEventsClient.shutdownNow();
  userEventsClient.awaitTermination(2, TimeUnit.SECONDS);

  return operationName;
}

사용자 이벤트 필터 사용

삭제할 사용자 이벤트를 필터링할 수 있습니다.

필터는 다음 제한을 하나 이상 포함하는 문자열입니다.

  • eventTime

    삭제할 이벤트를 바인딩하는 타임스탬프를 제공합니다. 이 필터는 보다 큼(>) 또는 보다 작음(<) 기호를 사용하여 한 번 또는 두 번 지정할 수 있습니다. 제한된 시간은 하나의 인접한 블록이어야 합니다.

  • eventType

    삭제할 이벤트를 단일 이벤트 유형으로 제한합니다.

  • visitorID

    삭제할 이벤트를 단일 방문자 ID로 제한합니다.

  • userID

    삭제할 이벤트를 단일 사용자 ID로 제한합니다.

모든 제한을 충족하는 사용자 이벤트만 삭제됩니다.

2019년 2월 1일 또는 그 이후에 로깅된 add-to-cart 유형의 모든 사용자 이벤트를 삭제하려면 다음 필터 문자열을 제공합니다.

eventTime > "2019-02-01T00:00:00Z" eventType = add-to-cart