管理用户事件

本页面介绍了如何查看和删除用户事件。如需了解如何在用户事件发生时进行记录,请参阅记录实时用户事件。如需从过去的事件中导入用户事件数据,请参阅导入历史用户事件

教程:重新联接用户事件

本教程介绍了如何向 userEvents:rejoin 端点发出 POST 请求,以重新联接用户事件。


如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示

操作演示


移除用户事件教程

本教程介绍了如何完全清除用户事件。


如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示

操作演示


查看汇总的用户事件信息

在 Search for Retail 控制台的数据页面上的事件标签页中查看事件集成指标。此页面会显示去年写入或导入的所有事件。数据成功提取后,指标最长可能需要 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 方法执行此操作。

使用过滤条件字符串指定要移除的事件。这支持通过按 eventTimeeventTypevisitorIDuserID 字段进行过滤来选择性地删除用户事件。

由于您无法撤消删除操作,因此请在删除用户事件之前执行试运行以测试过滤器字符串。force 字段默认设置为 false;此设置将返回要删除的事件的数量,但不会实际删除它们。准备好实际删除用户事件后,请将 force 字段设置为 true

curl

此示例过滤某个时间范围,该时间范围必须使用祖鲁时间日期格式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