单独导入用户 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

单独导入用户

完成创建数据集和架构以创建用户数据集后,您可以单独将一个或多个新用户导入数据集。单独导入用户允许您随着目录的增长而进行小批量导入,从而使您的用户数据集保持最新状态。您一次最多可以导入 10 个用户。如果您有大量新用户,我们建议您先批量导入数据,然后根据需要单独导入用户数据。请参阅 将数据直接导入 Amazon Personalize 数据集

您可以使用 Amazon Personalize 控制台、 Amazon Command Line Interface (Amazon CLI) 或 Amazon 软件开发工具包来导入用户。如果您导入的用户的 userId 与您用户数据集中已有的用户 ID 相同,则 Amazon Personalize 会将该用户替换为新用户。您一次最多可以导入 10 个用户。

有关 Amazon Personalize 如何更新新记录筛选器以及新记录如何影响建议的信息,请参阅导入单个记录

单独导入用户(控制台)

您一次最多可以导入 10 个用户。此过程假定您已创建一个用户数据集。有关创建数据集的信息,请参阅创建数据集和架构

单独导入用户(控制台)
  1. 打开 Amazon Personalize 控制台(网址为 https://console.aws.amazon.com/personalize/home),并登录您的账户。

  2. 数据集组页面上,选择包含要将用户导入到的用户数据集的数据集组。

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

  4. 数据集页面上,选择用户数据集。

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

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

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

单独导入用户 (Amazon CLI)

使用 PutUsers 操作将一个或多个用户添加到您的用户数据集。通过单次 PutUsers 调用最多可以导入 10 个用户。此部分假定您已经创建了一个用户数据集。有关创建数据集的信息,请参阅创建数据集和架构

通过 Amazon CLI 使用以下 put-users 命令添加一个或多个用户。将 dataset arn 替换为数据集的 Amazon 资源名称 (ARN),将 user Id 替换为用户 ID。如果具有相同 userId 的用户已存在于用户数据集中,则 Amazon Personalize 会将其替换为新用户。

对于 properties,针对用户数据集中的每个字段,将 propertyName 替换为架构中的字段名称(采用混合大小写)。例如,GENDER 将为 gender,MEMBERSHIP_TYPE 将为 membershipType。将 user data 替换为用户的数据。对于分类字符串数据,要包含单个属性的多个类别,请使用竖线 (|) 分隔每个类别。例如 \"Premium Class|Legacy Member\"

aws personalize-events put-users \ --dataset-arn dataset arn \ --users '[{ "userId": "user Id", "properties": "{\"propertyName\": "\user data\"}" }, { "userId": "user Id", "properties": "{\"propertyName\": "\user data\"}" }]'

单独导入用户 (Amazon SDK)

使用 PutUsers 操作将一个或多个用户添加到您的用户数据集。如果具有相同 userId 的用户已存在于用户数据集中,则 Amazon Personalize 会将其替换为新用户。通过单次 PutUsers 调用最多可以导入 10 个用户。此部分假定您已创建一个用户数据集。有关创建数据集的信息,请参阅创建数据集和架构

以下代码显示如何将一个或多个用户添加到您的用户数据集。对于每个属性名称参数,传递架构中的字段名称(采用混合大小写)。例如,GENDER 将为 gender,MEMBERSHIP_TYPE 将为 membershipType。对于每个属性值参数,传递用户数据。

对于分类字符串数据,要包含单个属性的多个类别,请使用竖线 (|) 分隔每个类别。例如 "Premium class|Legacy Member"

SDK for Python (Boto3)
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_users( datasetArn = 'dataset arn', users = [{ 'userId': 'user ID', 'properties': "{\"propertyName\": \"user data\"}" }, { 'userId': 'user ID', 'properties': "{\"propertyName\": \"user data\"}" }] )
SDK for Java 2.x
public static int putUsers(PersonalizeEventsClient personalizeEventsClient, String datasetArn, String user1Id, String user1PropertyName, String user1PropertyValue, String user2Id, String user2PropertyName, String user2PropertyValue) { int responseCode = 0; ArrayList<User> users = new ArrayList<>(); try { User user1 = User.builder() .userId(user1Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", user1PropertyName, user1PropertyValue)) .build(); users.add(user1); User user2 = User.builder() .userId(user2Id) .properties(String.format("{\"%1$s\": \"%2$s\"}", user2PropertyName, user2PropertyValue)) .build(); users.add(user2); PutUsersRequest putUsersRequest = PutUsersRequest.builder() .datasetArn(datasetArn) .build(); responseCode = personalizeEventsClient.putUsers(putUsersRequest).sdkHttpResponse().statusCode(); System.out.println("Response code: " + responseCode); return responseCode; } catch (PersonalizeEventsException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return responseCode; }
SDK for JavaScript v3
import { PutUsersCommand, PersonalizeEventsClient, } from "@aws-sdk/client-personalize-events"; const personalizeEventsClient = new PersonalizeEventsClient({ region: "REGION", }); // set the put users parameters var putUsersParam = { datasetArn: "DATASET ARN", users: [ { userId: "userId", properties: '{"column1Name": "value", "column2Name": "value"}', }, { userId: "userId", properties: '{"column1Name": "value", "column2Name": "value"}', }, ], }; export const run = async () => { try { const response = await personalizeEventsClient.send( new PutUsersCommand(putUsersParam) ); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();