Esta é a documentação do Recommendations AI, da Pesquisa de varejo e do novo Console do Retail.

Gerenciar eventos do usuário

Esta página descreve como visualizar e excluir eventos de usuários. Para informações sobre como gravar eventos do usuário conforme eles acontecem, consulte Gravar eventos de usuários em tempo real. Para importar dados de eventos do usuário de eventos passados, consulte Importar eventos históricos do usuário.

Tutorial de reintegração de eventos de usuário

Neste tutorial, mostramos como voltar a eventos do usuário fazendo uma solicitação POST para o endpoint userEvents:rejoin.


Para orientações passo a passo sobre esta tarefa diretamente no editor do Cloud Shell, clique em Orientações:

Orientação


As seções a seguir guiam você pelas mesmas etapas que você encontra clicando em Orientações.

Tutorial: remover eventos do usuário

Neste tutorial, mostramos como limpar eventos do usuário.


Para orientações passo a passo sobre esta tarefa diretamente no editor do Cloud Shell, clique em Orientações:

Orientação


As seções a seguir guiam você pelas mesmas etapas que você encontra clicando em Orientações.

Ver informações agregadas de eventos do usuário

É possível ver o número de eventos do usuário gravados no seu projeto na Evento guia no console do Varejo Dados página de dados. As métricas serão exibidas cerca de 24 horas após o primeiro upload dos eventos para o varejo.

Estatísticas de eventos do usuário de varejo

Reintegrar eventos de usuário

Para voltar aos eventos do catálogo, faça uma solicitação POST ao endpoint userEvents:rejoin.

A operação de rejunção associa eventos especificados à versão mais recente do catálogo de produtos.

Um evento do usuário é considerado não vinculado se o produto ao qual ele está associado não está presente no catálogo no momento em que o evento do usuário é ingerido. Eles não têm informações detalhadas do produto e não são tão úteis para treinar modelos e exibir resultados.

Além de resolver eventos não associados, a operação de rejunção pode ser usada para corrigir eventos que foram mesclados com o catálogo de produtos errado.

É necessário ter o papel do IAM de administrador de IA de varejo para chamar esse método. Uma operação de retorno pode levar horas ou dias para ser concluída.

curl

Defina userEventRejoinScope de acordo com os tipos de eventos dos quais você voltará a participar:

  • USER_EVENT_REJOIN_SCOPE_UNSPECIFIED: Padrão. Acione a reconexão para os eventos ingressados e não associados.
  • JOINED_EVENTS: aciona uma nova participação apenas para eventos associados.
  • UNJOINED_EVENTS: aciona uma nova participação apenas para eventos que não tiveram participação.

O exemplo a seguir aciona uma nova participação apenas para eventos não associados:

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"

Você receberá um objeto de resposta com esta aparência:

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

É possível verificar o status do "rejoin". Substitua OPERATION_ID pelo ID da operação retornado pelo método "rejoin":

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"

Quando a operação for concluída, o status da operação será retornado como 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;
}

Remover eventos do usuário

Normalmente, você deve deixar os eventos do usuário no local depois que eles forem gravados. Não é recomendável limpar eventos.

A limpeza de um evento pode levar vários dias para ser concluída. Se você planeja redefinir eventos de usuário por completo, considere criar um novo projeto.

Se você tiver eventos de usuário que não foram gravados corretamente e precisa removê-los, use o método userEvents.purge.

Especifique os eventos que você quer remover usando uma string de filtro. Isso é compatível com a exclusão seletiva de eventos do usuário, filtrando os campos eventTime, eventType, visitorID e userID.

Como não é possível desfazer a exclusão, teste a string do filtro executando uma simulação antes de excluir eventos do usuário. O campo force é definido como false por padrão. essa configuração retornará o número de eventos a serem excluídos sem realmente excluí-los. Quando você estiver pronto para excluir os eventos do usuário, defina o campo force como true.

curl

Este exemplo filtra um período, que precisa usar o formato de data Zulu Time. O campo force está definido como 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"

Você receberá um objeto de resposta com esta aparência, em que purge-user-events-54321 é o ID da operação:

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

Este exemplo solicita o status da operação:

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"

Exemplo de status da operação:

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

Definir o campo force como true força a exclusão.

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

Usar o filtro de eventos do usuário

Você pode filtrar os eventos do usuário que serão excluídos.

O filtro é uma string que contém uma ou mais das seguintes restrições:

  • eventTime

    Oferece um carimbo de data/hora para vincular os eventos a serem excluídos. Esse filtro pode ser especificado uma ou duas vezes, com um símbolo maior (>) ou menor que (<). O tempo limitado precisa ser um bloco único e contíguo.

  • eventType

    Restringe os eventos a serem excluídos para um único tipo de evento.

  • visitorID

    Restringe os eventos a serem excluídos a um único ID de visitante.

  • userID

    Restringe os eventos a serem excluídos a um único ID do usuário.

Apenas os eventos de usuário que satisfaçam a todas as restrições serão excluídos.

Para excluir todos os eventos do usuário do tipo add-to-cart que foram registrados em 1o de fevereiro de 2019 ou após essa data, forneça a seguinte string de filtro:

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