单独导入用户 - Amazon Personalize

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

单独导入用户

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

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

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

单独导入用户(控制台)

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

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

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

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

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

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

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

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

单独导入用户 (AWS CLI)

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

使用以下put-users命令添加一个或多个用户 AWS CLI。 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\"}" }]'

单独导入用户 (AWS SDKs)

使用 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();