Dies ist die Dokumentation nur für Recommendations AI. Wenn Sie Retail Search und die einheitliche Retail-Konsole in der eingeschränkten GA-Phase ausprobieren möchten, wenden Sie sich an den Cloud-Vertrieb. Wenn Sie Retail Search nicht verwenden möchten, können Sie das bis auf Weiteres in der Empfehlungskonsole bleiben.

Wenn Sie die v1beta-Version von Recommendations AI verwenden, migrieren Sie zur Retail API-Version.

Nutzerereignisse verwalten

Auf dieser Seite wird beschrieben, wie Sie Nutzerereignisse aufrufen und löschen. Informationen zum Aufzeichnen von Nutzerereignissen finden Sie unter Nutzerereignisse in Echtzeit aufzeichnen. Informationen zum Importieren von Nutzerereignisdaten aus früheren Ereignissen finden Sie unter Verlaufsnutzerereignisse importieren.

Zusammengefasste Nutzerereignisinformationen ansehen

Sie können die Anzahl der aufgezeichneten Nutzerereignisse für Ihr Projekt im Tab "Ereignis" auf der Seite "Recommendations AI Data" finden. Die Messwerte werden etwa 24 Stunden nach dem ersten Hochladen von Ereignissen in Recommendations AI angezeigt.

Recommendations AI-Nutzerereignisstatistiken

Nutzerereignisse wieder beitreten

Sie können Nutzerereignisse wieder beitreten, indem Sie eine POST-Anfrage an den Endpunkt userEvents:rejoin senden.

Mit dem Vorgang zum erneuten Join werden bestimmte Ereignisse mit der neuesten Version des Produktkatalogs zusammengeführt.

Ein Nutzerereignis gilt als nicht verknüpft, wenn das damit verknüpfte Produkt bei der Aufnahme des Nutzerereignisses nicht im Katalog vorhanden ist. Für nicht verknüpfte Ereignisse fehlen detaillierte Produktinformationen und sie sind nicht so nützlich für das Trainieren von Modellen und das Bereitstellen von Ergebnissen.

Neben der Behandlung nicht verknüpfter Ereignisse können Sie mithilfe des Vorgangs zum erneuten Verknüpfen Ereignisse korrigieren, die mit dem falschen Produktkatalog zusammengeführt wurden.

Sie benötigen die IAM-Rolle Retail AI-Administrator, um diese Methode aufzurufen.

curl

Legen Sie userEventRejoinScope entsprechend den Ereignistypen fest, die Sie wieder verknüpfen möchten:

  • USER_EVENT_REJOIN_SCOPE_UNSPECIFIED: Standard. Löst Rejoin für verknüpfte und nicht verknüpfte Ereignisse aus.
  • JOINED_EVENTS: Löst Rejoin nur für verknüpfte Ereignisse aus.
  • UNJOINED_EVENTS: Löst Rejoin nur für nicht verbundene Ereignisse aus.

Im folgenden Beispiel wird eine Rejoin nur für nicht verknüpfte Ereignisse ausgelöst:

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"

Sie sollten ein Antwortobjekt erhalten, das in etwa so aussieht:

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

Sie können den Status des Rejoin prüfen. Ersetzen Sie OPERATION_ID durch die ID der Vorgangs-ID, die von der Rejoin-Methode zurückgegeben wird:

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"

Wenn der Vorgang abgeschlossen ist, wird der Vorgangsstatus als done zurückgegeben:

{
  "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;
}

Nutzerereignisse entfernen

Im Allgemeinen sollten Sie Nutzerereignisse aufbewahren, nachdem sie aufgezeichnet wurden. Es wird nicht empfohlen, Ereignisse dauerhaft zu löschen.

Das Löschen eines Ereignisses kann bis zu mehreren Tagen dauern. Wenn Sie Nutzerereignisse vollständig zurücksetzen möchten, sollten Sie stattdessen ein neues Projekt erstellen.

Wenn Sie Nutzerereignisse haben, die nicht ordnungsgemäß aufgezeichnet wurden, und Sie sie entfernen müssen, können Sie die Methode userEvents.purge verwenden.

Geben Sie die Ereignisse an, die Sie entfernen möchten, indem Sie einen Filterstring verwenden. So wird das selektive Löschen von Nutzerereignissen unterstützt, da die Felder eventTime, eventType, visitorID und userID gefiltert werden.

Da Sie den Löschvorgang nicht rückgängig machen können, testen Sie Ihren Filterstring, indem Sie einen Probelauf ausführen, bevor Sie Nutzerereignisse löschen. Das Feld force ist standardmäßig auf false gesetzt. Diese Einstellung gibt die Anzahl der zu löschenden Ereignisse zurück, ohne sie tatsächlich zu löschen. Wenn Sie bereit sind, die Nutzerereignisse zu löschen, setzen Sie das Feld force auf true.

curl

In diesem Beispiel wird nach einem Zeitraum gefiltert, der das Datumsformat zu Zulu verwenden muss. Das Feld force ist auf false gesetzt.

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"

Sie sollten ein Antwortobjekt erhalten, das in etwa so aussieht, wobei purge-user-events-54321 die Vorgangs-ID ist:

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

In diesem Beispiel wird der Vorgangsstatus angefordert:

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]"

Beispiel für Vorgangsstatus:

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

Wenn Sie das Feld force auf true setzen, wird der Löschvorgang erzwungen.

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"

Nutzerereignisfilter verwenden

Sie können Nutzerereignisse filtern, die gelöscht werden sollen.

Der Filter ist ein String, der eine oder mehrere der folgenden Einschränkungen enthält:

  • eventTime

    Stellt einen Zeitstempel zur Begrenzung der zu löschenden Ereignisse bereit. Dieser Filter kann einmal oder zweimal mit einem Symbol größer als (>) oder kleiner als (<) angegeben werden. Die angegebene Zeit muss ein einzelner zusammenhängender Block sein.

  • eventType

    Beschränkt die zu löschenden Ereignisse auf einen einzelnen Ereignistyp.

  • visitorID

    Beschränkt die zu löschenden Ereignisse auf eine einzelne Besucher-ID.

  • userID

    Beschränken Sie die zu löschenden Ereignisse auf eine einzelne Nutzer-ID.

Nur Nutzerereignisse, die alle Einschränkungen erfüllen, werden gelöscht.

Um alle Nutzerereignisse vom Typ add-to-cart zu löschen, die am oder nach dem 1. Februar 2019 protokolliert wurden, geben Sie den folgenden Filterstring an:

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