以增量方式导入物品 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

以增量方式导入物品

创建 Item 数据集后,可以逐步将一个或多个新项目导入到数据集中。以增量方式导入项目允许您随着目录的增长保持 Item 数据集的最新状态。如果您有大量的新项目,我们建议您首先批量导入数据,然后根据需要以增量方式导入物料数据。请参阅 导入批量记录

您可以使用 Amazon Personalize 控制台,Amazon Command Line Interface(Amazon CLI),或者Amazon用于导入物品的 SDK。如果你导入了相同的物品itemId作为商品数据集中已存在的项目,Amazon Personalize 化将其替换为新项目。您一次最多可导入 10 个物品。

有关 Amazon Personalize 化如何更新新新记录筛选器以及新记录如何影响推荐的信息,请参阅以增量方式导入记录.

以增量方式导入物品(控制台)

一次最多可以将 10 个项目导入到 Item 数据集中。此过程假定您已创建一个 Item 数据集。有关创建数据集的信息,请参阅第 2 步:创建数据集和架构.

以增量方式导入物品(控制台)

  1. 在打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home登录您的账户。

  2. 在存储库的数据集组页面中,选择包含要将项目导入到的 Item 数据集的数据集组。

  3. 在导航窗格中,选择数据集.

  4. 在存储库的数据集页面中,选择项目数据集。

  5. 在数据集详细信息页面的右上角,选择修改数据集,然后选择创建记录.

  6. In创建物品记录对于页面,记录输入以 JSON 格式输入物品详细信息。该项目的字段名称和值必须与您在创建 Item 数据集时使用的方案匹配。Amazon Personalize 化提供了 JSON 模板,其中包含此架构中的字段名称和数据类型

  7. 选择创建记录. In响应,将列出导入的结果,并显示成功或失败消息。

以增量方式导入物品 (Amazon CLI)

使用将一个或多个项目添加到 Item 数据集PutItemsoperation. 您最多可以使用一个物品导入 10 件商品PutItems调用。此部分假定您已创建一个 Item 数据集。有关创建数据集的信息,请参阅第 2 步:创建数据集和架构.

请使用以下命令put-items添加一个或多个项目的命令Amazon CLI. Replacedataset arn使用您的数据集的 Amazon 资源名称 (ARN),item Id带有商品的 ID。如果商品具有相同itemId已存在于您的物品数据集中,Amazon Personalize 化将其替换为新数据集。

适用于properties,对于 Items 数据集中的每个字段,将propertyName使用模式中的字段名称来自骆驼大小写。例如,GENRES 将为genres而 CREATION_TIMESTAMP 将是创建时间戳。Replaceitem data包含物品的数据。CREATION_TIMESTAMP数据必须在Unix 纪元时间格式以秒为单位。对于分类字符串数据,要为单个属性包含多个类别,请用管道分隔每个类别(|)。例如 \"Horror|Action\"

aws personalize-events put-items \ --dataset-arn dataset arn \ --items '[{ "itemId": "item Id", "properties": "{\"propertyName\": "\item data\"}" }, { "itemId": "item Id", "properties": "{\"propertyName\": "\item data\"}" }]'

以增量方式导入物品 (Amazon开发工具包)

使用将一个或多个项目添加到 Item 数据集PutItemsoperation. 您最多可以使用一个物品导入 10 件商品PutItems调用。此部分假定您已创建一个 Item 数据集。有关创建数据集的信息,请参阅第 2 步:创建数据集和架构.

以下代码显示了如何使用Amazon SDK for Python (Boto3)或者Amazon SDK for Java 2.x.

SDK for Python (Boto3)

Replacedataset arn使用您的数据集的 Amazon 资源名称 (ARN),item Id带有商品的 ID。如果商品具有相同itemId已存在于您的物品数据集中,Amazon Personalize 化将其替换为新数据集。

适用于properties,对于 Items 数据集中的每个字段,将propertyName使用模式中的字段名称来自骆驼大小写。例如,GENRES 将为genres而 CREATION_TIMESTAMP 将是creationTimestamp. Replaceitem data包含物品的数据。CREATION_TIMESTAMP数据必须在Unix 纪元时间格式以秒为单位。对于分类字符串数据,要为单个属性包含多个类别,请用管道分隔每个类别(|)。例如 \"Horror|Action\"

import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_items( datasetArn = 'dataset arn', items = [{ 'itemId': 'item ID', 'properties': "{\"propertyName\": \"item data\"}" }, { 'itemId': 'item ID', 'properties': "{\"propertyName\": \"item data\"}" }] )
SDK for Java 2.x

以下putItems方法演示了如何使用 SDK for Java 2.x 向 Item 数据集添加两个项目。如果商品具有相同itemId已存在于您的物品数据集中,Amazon Personalize 化将其替换为新数据集。在此示例中,每个项目均具有单一属性。如果 Item 数据集架构有其他字段,请修改代码以使用其他属性和值参数。

对于每个属性名参数,请以骆驼大小写传递模式中的字段名称。例如,GENRES 将为genres而 CREATION_TIMESTAMP 将是creationTimestamp. 对于每个属性值参数,传递项目的数据。CREATION_TIMESTAMP数据必须在Unix 纪元时间格式以秒为单位。对于分类字符串数据,要为单个属性包含多个类别,请用管道分隔每个类别(|)。例如 "Horror|Action"

public static int putItems(PersonalizeEventsClient personalizeEventsClient, String datasetArn, String item1Id, String item1PropertyName, String item1PropertyValue, String item2Id, String item2PropertyName, String item2PropertyValue) { int responseCode = 0; ArrayList<Item> items = new ArrayList<>(); try { Item item1 = Item.builder() .itemId(item1Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", item1PropertyName, item1PropertyValue)) .build(); items.add(item1); Item item2 = Item.builder() .itemId(item2Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", item2PropertyName, item2PropertyValue)) .build(); items.add(item2); PutItemsRequest putItemsRequest = PutItemsRequest.builder() .datasetArn(datasetArn) .items(items) .build(); responseCode = personalizeEventsClient.putItems(putItemsRequest).sdkHttpResponse().statusCode(); System.out.println("Response code: " + responseCode); return responseCode; } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return responseCode; }