导入历史用户事件

本页面介绍如何批量导入过往事件的用户事件数据。适用于零售业的 Vertex AI Search 模型需要用户事件数据来进行训练。

设置实时事件记录后,可能需要相当长的时间记录足够的用户事件数据来训练模型。您可以通过从过去的事件中批量导入用户事件数据来加速初始模型训练。在此之前,请查看本页中记录用户事件的最佳做法准备工作部分。

本页面上的导入过程同时适用于建议和搜索。导入数据后,这两项服务都能使用这些事件,因此如果您使用这两项服务,则无需两次导入相同的数据。

您可以:

教程:从 Cloud Storage 导入事件

本教程介绍如何从 Cloud Storage 导入用户事件。


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

操作演示


教程:从 BigQuery 导入事件

本教程介绍如何从 BigQuery 导入用户事件。


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

操作演示


导入事件内嵌教程

本教程介绍了如何以内嵌方式导入用户事件数据。


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

操作演示


准备工作

为避免导入错误并确保有足够的数据来生成良好的结果,请在导入用户事件之前查看以下信息。

事件导入注意事项

本部分介绍了可用于批量导入历史用户事件的方法、何时可以使用每种方法,以及这些方法的一些限制。

Cloud Storage 说明 从加载到 Cloud Storage 存储桶中的文件导入 JSON 格式的数据。每个文件不得超过 2 GB,一次最多可导入 100 个文件。您可以使用 Google Cloud 控制台或 c网址 完成导入。使用 Product JSON 数据格式,该格式允许自定义属性。
使用时间 您需要在单个步骤中加载大量数据时。
限制 如果您的数据位于 Google Analytics(分析)或 Merchant Center 中,则您只能将数据导出到 BigQuery,还需要额外执行将数据导入到 Cloud Storage 这一步骤。
BigQuery 说明 从之前加载的 BigQuery 表中导入数据,该表使用 Vertex AI Search for Retail 架构。可使用 Google Cloud 控制台或 c网址 执行。
使用时间 在您还使用分析或预处理事件数据,然后再将其导入时。
局限性 需要执行额外步骤来创建映射到 Vertex AI Search for Retail 架构的 BigQuery 表。如果您有大量用户事件,另请考虑 BigQuery 的费用高于 Cloud Storage。
将 BigQuery 与 Analytics 360 结合使用 说明 将现有数据导入 Analytics 360 中面向零售业的 Vertex AI Search。
使用时间 如果您使用的是 Analytics 360 并跟踪转化情况,以获取建议或搜索。无需其他架构映射。
局限性 只有部分属性可用,因此某些适用于零售业的 Vertex AI Search 高级功能无法使用。如果您打算使用搜索功能,则必须在 Google Analytics(分析)中跟踪展示次数。
将 BigQuery 与 Google Analytics(分析)4 搭配使用 说明 将现有数据导入 Google Analytics(分析)4 中面向零售业的 Vertex AI Search。
使用时间 如果您使用的是 Google Analytics(分析)4 并跟踪转化情况,以获取建议或搜索。无需其他架构映射。
局限性 只有部分属性可用,因此部分适用于零售业的 Vertex AI Search 高级功能无法使用。如果您打算使用搜索功能,则需要设置用于跟踪的事件参数键值对;建议使用的键为 search_query
内嵌导入 说明 通过调用 userEvents.import 方法导入。
使用时间 当您希望加强在后端进行所有身份验证的隐私保护,并且能够执行后端导入时。
限制 通常比 Web 导入复杂。

从 Cloud Storage 导入用户事件

使用 Google Cloud 控制台或 userEvents.import 方法从 Cloud Storage 导入用户事件。

控制台

  1. 转到 Search for Retail 控制台中的数据> 页面。

    转到“数据”页面
  2. 点击导入,打开导入数据面板。
  3. 选择用户事件
  4. 选择 Google Cloud Storage 作为数据源。
  5. 选择 Retail User Events Schema 作为架构。
  6. 输入数据的 Cloud Storage 位置。
  7. 点击导入

cURL

使用 userEvents.import 方法导入用户事件。

  1. 为导入作业的输入参数创建一个数据文件。您可以使用 GcsSource 对象指向您的 Cloud Storage 存储桶。

    您可以提供多个文件,也可以只提供一个。

    • INPUT_FILE:Cloud Storage 中包含您的用户事件数据的文件。如需查看每种用户事件类型格式的示例,请参阅用户事件简介。确保每个用户事件都位于单独的一行,没有换行符。
    • ERROR_DIRECTORY:存放与导入有关的错误信息的 Cloud Storage 目录。

    输入文件字段必须采用 gs://<bucket>/<path-to-file>/ 格式。错误目录必须采用 gs://<bucket>/<folder>/ 格式。如果错误目录不存在,用于零售业的 Vertex AI Search 会创建该目录。存储桶必须已存在。

    {
    "inputConfig":{
     "gcsSource": {
       "inputUris": ["INPUT_FILE_1", "INPUT_FILE_2"],
      },
      "errorsConfig":{"gcsPrefix":"ERROR_DIRECTORY"}
    }
    
  2. userEvents:import REST 方法发出 POST 请求并提供数据文件的名称,从而导入目录信息。

    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json
    
    curl -X POST \
         -v \
         -H "Content-Type: application/json; charset=utf-8" \
         -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
         --data @./DATA_FILE.json \
      "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:import"
      }
    }'
    

从 BigQuery 导入用户事件

使用 Google Cloud 控制台或 userEvents.import 方法从 BigQuery 导入用户事件。

设置 BigQuery 访问权限

按照设置对 BigQuery 数据集的访问权限中的说明,为 Vertex AI Search for Retail 服务帐号授予 BigQuery 数据集的 BigQuery Data Owner 角色。

从 BigQuery 导入用户事件

您可以使用 Search for Retail 控制台或 userEvents.import 方法导入 360 事件。

控制台

  1. 转到 Search for Retail 控制台中的数据> 页面。

    转到“数据”页面
  2. 点击导入,打开导入数据面板。
  3. 选择用户事件
  4. 选择 BigQuery 作为数据源。
  5. 选择数据架构。

  6. 输入数据所在的 BigQuery 表格。
  7. 可选:输入项目中 Cloud Storage 存储桶的位置作为数据的临时位置。
    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  8. 可选:在显示高级选项下,输入项目中的 Cloud Storage 存储桶的位置,作为数据的临时位置。

    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  9. 点击导入

curl

通过在对 userEvents.import 方法的调用中添加事件数据来导入用户事件。请参阅 userEvents.import API 参考文档。

您为 dataSchema 指定的值取决于您要导入的内容:

export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json

curl \
-v \
-X POST \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
"https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:import" \
--data '{
  "inputConfig": {
    "bigQuerySource": {
      "datasetId": "DATASET_ID",
      "tableId": "TABLE_ID",
      "dataSchema": "SCHEMA_TYPE"
  }
}
}'

使用 BigQuery 导入 Analytics 360 用户事件

如果您已集成 Analytics 360 与 BigQuery 并使用增强型电子商务,则可以导入 Analytics 360 用户事件。

以下步骤假定您熟悉 BigQuery 和 Analytics 360 的使用。

准备工作

在开始后续步骤之前,请确保:

查看数据源

  1. 请确保您要导入的用户事件数据在您有权访问的 BigQuery 表中格式正确。

    请确保该表名为 project_id:ga360_export_dataset.ga_sessions_YYYYMMDD

    如需详细了解表格式和命名,请参阅 Google Analytics(分析)文档

  2. BigQuery Google Cloud 控制台中,从探索器面板中选择相应表以预览该表。

    请检查:

    1. clientId 列具有有效值,例如 123456789.123456789

      请注意,该值与完整的 _ga Cookie 值(格式类似于 GA1.3.123456789.123456789)不同。

    2. hits.transaction.currencyCode 列具有有效的货币代码

    3. 如果您打算导入 search 事件,请检查 hits.page.searchKeywordhits.customVariable.searchQuery 列是否存在。

      支持导入 search 事件,但这些事件从 Analytics 360 映射的方式与其他事件类型不同,因为 Analytics 360 本身不支持 search 事件类型。导入期间,系统会通过将搜索查询中的信息与产品展示(如有)中的信息进行合并,根据 Analytics 360 构建 search 事件。

      搜索查询来源于 hits.page.searchKeyword,或从如果 hits.customVariables.customVarNamesearchQuery,则来源于 hits.customVariables.customVarValue。如果 hits.product.isImpressionsTRUE,则产品展示取自 hits.product

  3. 检查上传的目录与 Analytics 360 用户事件表之间的项 ID 一致性。

    使用 BigQuery 表预览的 hits.product.productSKU 列中的任意产品 ID 和 product.get 方法,确保您上传的目录中有相同的产品。

    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json
    
       curl \
         -v \
         -X GET \
         -H "Content-Type: application/json; charset=utf-8" \
         -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
         "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/default_branch/products/PRODUCT_ID"
    

导入 Analytics 360 事件

您可以使用 Search for Retail 控制台或 userEvents.import 方法导入 Google Analytics 360 事件。

控制台

  1. 转到 Search for Retail 控制台中的数据> 页面。

    转到“数据”页面
  2. 点击导入,打开导入数据面板。
  3. 选择用户事件
  4. 选择 BigQuery 作为数据源。
  5. 选择数据架构。

  6. 输入数据所在的 BigQuery 表格。
  7. 可选:输入项目中 Cloud Storage 存储桶的位置作为数据的临时位置。
    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  8. 可选:在显示高级选项下,输入项目中的 Cloud Storage 存储桶的位置,作为数据的临时位置。

    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  9. 点击导入

REST

通过在调用 userEvents.import 方法时添加事件数据,导入用户事件。

对于 dataSchema,请使用值 user_event_ga360

export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json
curl \\
  -v \\
  -X POST \\
  -H "Content-Type: application/json; charset=utf-8" \\
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \\
  "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:import" \\
  --data '{
    "inputConfig": {
      "bigQuerySource": {
        "datasetId": "some_ga360_export_dataset",
        "tableId": "ga_sessions_YYYYMMDD",
        "dataSchema": "user_event_ga360"
    }
  }
}'

Java

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

  BigQuerySource bigQuerySource = BigQuerySource.newBuilder()
      .setProjectId(PROJECT_ID)
      .setDatasetId(DATASET_ID)
      .setTableId(TABLE_ID)
      .setDataSchema("user_event")
      .build();

  UserEventInputConfig inputConfig = UserEventInputConfig.newBuilder()
      .setBigQuerySource(bigQuerySource)
      .build();

  ImportUserEventsRequest importRequest = ImportUserEventsRequest.newBuilder()
      .setParent(DEFAULT_CATALOG_NAME)
      .setInputConfig(inputConfig)
      .build();

  String operationName = userEventsClient
      .importUserEventsAsync(importRequest).getName();

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

  return operationName;
}

使用 BigQuery 导入 Analytics 360 首页视图

在 Analytics 360 中,首页浏览事件不与其他网页浏览事件区分开来。这意味着,首页浏览事件不会作为事件与导入 Analytics 360 事件中的其他事件类型(例如 details-page-view)一起导入。

以下步骤说明了如何从 Analytics 360 数据中提取首页浏览事件,并将其导入适用于零售业的 Vertex AI Search。简而言之,这是通过将首页的用户视图(通过首页路径标识)提取到新的 BigQuery 表,然后将该新表中的数据导入 Vertex AI Search forRetail 来实现的。

如需将首页浏览事件从 Analytics 360 导入适用于零售业的 Vertex AI Search,请执行以下操作:

  1. 创建一个 BigQuery 数据集,或确保您有一个可用于添加表的 BigQuery 数据集。

    此数据集可能位于适用于零售业的 Vertex AI Search 项目中,也可能位于您拥有 Analytics 360 数据的项目中。这是要将 Analytics 360 home-page-view 事件复制到的目标数据集。

  2. 在数据集中创建一个 BigQuery 表,如下所示:

    1. 替换以下 SQL 代码中的变量,如下所示。

      • target_project_id::第 1 步中的数据集所在的项目。

      • target_dataset::第 1 步中的数据集名称。

      CREATE TABLE TARGET_PROJECT_ID.TARGET_DATASET.ga_homepage (
       eventType STRING NOT NULL,
       visitorId STRING NOT NULL,
       userId STRING,
       eventTime STRING NOT NULL
      );
      
    2. 复制 SQL 代码示例。

    3. 在 Google Cloud 控制台中打开 BigQuery 页面。

      转到 BigQuery 页面

    4. 如果尚未选择目标项目,请选择它。

    5. 编辑器窗格中,粘贴 SQL 代码示例。

    6. 点击 运行,然后等待查询运行完毕。

    运行此代码会创建一个格式为 target_project_id:target_dataset.ga_homepage_YYYYMMDD 的表,例如 my-project:view_events.ga_homepage_20230115

  3. 将 Analytics 360 首页浏览事件从 Analytics 360 数据表复制到在上一步 2 中创建的表中。

    1. 替换以下 SQL 示例代码中的变量,如下所示:

      • source_project_id::BigQuery 表格中包含 Analytics 360 数据的项目的 ID。

      • source_dataset::源项目中包含 BigQuery 表中的 Analytics 360 数据的数据集。

      • source_table::源项目中包含 Analytics 360 数据的表。

      • target_project_id::与前一个步骤 2 中的目标项目 ID 相同。

      • target_dataset::与上一步 2 相同的目标数据集。

      • path:这是首页的路径。通常为 /,例如,如果首页为 example.com/。不过,如果首页类似于 examplepetstore.com/index.html,则路径为 /index.html

      INSERT INTO `TARGET_PROJECT_ID.TARGET_DATASET.ga_homepage(eventType,visitorId,userID,eventTime)`
      
      SELECT
        "home-page-view" as eventType,
        clientId as visitorId,
        userId,
        CAST(FORMAT_TIMESTAMP("%Y-%m-%dT%H:%M:%SZ",TIMESTAMP_SECONDS(visitStartTime)) as STRING) AS eventTime
      
      FROM
        `SOURCE_PROJECT_ID.SOURCE_DATASET.SOURCE_TABLE`, UNNEST(hits) as hits
      
      WHERE hits.page.pagePath = "PATH" AND visitorId is NOT NULL;
      
    2. 复制 SQL 代码示例。

    3. 在 Google Cloud 控制台中打开 BigQuery 页面。

      转到 BigQuery 页面

    4. 如果尚未选择目标项目,请选择它。

    5. 编辑器窗格中,粘贴 SQL 代码示例。

    6. 点击 运行,然后等待查询运行完毕。

  4. 按照从 BigQuery 导入用户事件中的说明,从目标表导入首页浏览事件。在架构选择期间,如果您使用控制台导入,请选择 Retail User Events Schema;如果使用 userEvents.import 导入,请为 dataSchema 值指定 user_event

  5. 删除您在第 1 步和第 2 步中创建的表和数据集。

使用 BigQuery 导入 Google Analytics(分析)4 用户事件

如果您已将 Google Analytics(分析)4 与 BigQuery 集成并使用 Google Analytics(分析)电子商务,则可以导入 Google Analytics(分析)4 用户事件。

以下步骤假定您熟悉 BigQuery 和 Google Analytics(分析)4 的使用。

准备工作

在开始后续步骤之前,请确保:

查看数据源

为确保您的用户事件数据已准备好导入,请按照以下步骤操作。

如需查看适用于零售行业的 Vertex AI Search 使用的 Google Analytics(分析)4 字段以及它们对应的零售字段的 Vertex AI Search 字段,请参阅 Google Analytics(分析)4 用户事件字段

如需了解所有 Google Analytics(分析)事件参数,请参阅 Google Analytics(分析)事件参考文档

  1. 请确保您要导入的用户事件数据在您有权访问的 BigQuery 表中格式正确。

    • 数据集应命名为 analytics_PROPERTY_ID
    • 该表应命名为 events_YYYYMMDD

    如需了解表名称和格式,请参阅 Google Analytics(分析)文档

  2. BigQuery Google Cloud 控制台中,从探索器面板中选择数据集,然后找到您计划导入的用户事件表。

    请检查:

    1. event_params.key 列具有 currency 键,且其关联的字符串值是有效的货币代码

    2. 如果您打算导入 search 事件,请检查 event.event_params.key 列是否具有 search_term 键和关联值。

      支持导入 search 事件,但 search 事件不会像其他事件类型那样从 Google Analytics(分析)4 进行映射,因为 Google Analytics(分析)4 本身不支持适用于零售业的 Vertex AI Search search 事件类型。导入期间,系统会结合 view_item_listsearch_term 参数中的信息,从 Google Analytics(分析)4 中构建 search 事件。

      如需了解 Google Analytics(分析)4 中的 search,请参阅 Google Analytics(分析)文档中的 search

  3. 检查上传的清单与 Google Analytics(分析)4 用户事件表中的商品 ID 是否一致。

    如需确保 Google Analytics(分析)4 用户表中的产品也在您上传的目录中,请从 BigQuery 表预览的 event.items.item_id 列中复制产品 ID,并使用 product.get 方法检查该产品 ID 是否在您上传的目录中。

    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json
    
       curl \
         -v \
         -X GET \
         -H "Content-Type: application/json; charset=utf-8" \
         -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \
         "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/default_branch/products/PRODUCT_ID"
    

设置 BigQuery 访问权限

按照设置对 BigQuery 数据集的访问权限中的说明,为 Vertex AI Search for Retail 服务帐号授予 BigQuery 数据集的 BigQuery Data Owner 角色。

导入 Google Analytics(分析)4 事件

您可以使用 Search for Retail 控制台或 userEvents.import 方法导入 Google Analytics(分析)4 事件。

使用控制台导入 Google Analytics(分析)4 事件

  1. 转到 Search for Retail 控制台中的数据> 页面。

    转到“数据”页面
  2. 点击导入,打开导入数据面板。
  3. 选择用户事件
  4. 选择 BigQuery 作为数据源。
  5. 选择数据架构。

  6. 输入数据所在的 BigQuery 表格。
  7. 可选:输入项目中 Cloud Storage 存储桶的位置作为数据的临时位置。
    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  8. 可选:在显示高级选项下,输入项目中的 Cloud Storage 存储桶的位置,作为数据的临时位置。

    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  9. 点击导入

使用 API 导入 Google Analytics(分析)4 事件

通过在对 userEvents.import 方法的调用中添加事件数据来导入用户事件。请参阅 userEvents.import API 参考文档。

对于 dataSchema,请使用值 user_event_ga4

export GOOGLE_APPLICATION_CREDENTIALS=/tmp/my-key.json
curl \\
  -v \\
  -X POST \\
  -H "Content-Type: application/json; charset=utf-8" \\
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)"" \\
  "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/userEvents:import" \\
  --data '{
    "inputConfig": {
      "bigQuerySource": {
        "projectId": "PROJECT_ID",
        "datasetId": "DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "user_event_ga4"
    }
  }
}'

以内嵌方式导入用户事件

您可以通过将事件的数据添加到对 userEvents.import 方法的调用中来以内嵌方式导入用户事件。

最简单的方法是将用户事件数据放入 JSON 文件并将该文件提供给 cURL。

如需了解用户事件类型的格式,请参阅用户事件简介

curl

  1. 创建 JSON 文件:

    {
      "inputConfig": {
        "userEventInlineSource": {
          "userEvents": [
            {
              <userEvent1>>
            },
            {
              <userEvent2>
            },
            ....
          ]
        }
      }
    }
    
  2. 调用 POST 方法:

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

Java

public static String importUserEventsFromInlineSource(
    List<UserEvent> userEventsToImport)
    throws IOException, InterruptedException, ExecutionException {
  UserEventServiceClient userEventsClient = getUserEventServiceClient();

  UserEventInlineSource inlineSource = UserEventInlineSource.newBuilder()
      .addAllUserEvents(userEventsToImport)
      .build();

  UserEventInputConfig inputConfig = UserEventInputConfig.newBuilder()
      .setUserEventInlineSource(inlineSource)
      .build();

  ImportUserEventsRequest importRequest = ImportUserEventsRequest.newBuilder()
      .setParent(DEFAULT_CATALOG_NAME)
      .setInputConfig(inputConfig)
      .build();

  String operationName = userEventsClient
      .importUserEventsAsync(importRequest).getName();

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

  return operationName;
}

历史目录数据

此外,您还可以导入历史用户事件中显示的历史目录数据。这些历史清单数据非常有用,因为过去的产品信息可用于丰富用户事件,从而提高模型准确率。

如需了解详情,请参阅导入历史目录数据

查看导入的事件

在 Search for Retail 控制台数据页面的事件标签页中查看事件集成指标。此页面显示了去年写入或导入的所有活动。成功数据注入后,指标最多可能需要一个小时才会显示在控制台中。

前往“数据”页面

后续步骤