

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

# 单独导入用户
<a name="importing-users"></a>

 完成[创建架构和数据集](data-prep-creating-datasets.md)以创建用户数据集后，您可以单独将一个或多个新用户导入数据集。单独导入用户允许您随着目录的增长而进行小批量导入，从而使您的用户数据集保持最新状态。您一次最多可以导入 10 个用户。如果您有大量新用户，我们建议您先批量导入数据，然后根据需要单独导入用户数据。请参阅[通过数据集导入作业将批量数据导入到 Amazon Personalize](bulk-data-import-step.md)。

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

有关 Amazon Personalize 如何更新新记录筛选器以及新记录如何影响建议的信息，请参阅[将单个记录导入 Amazon Personalize 数据集](incremental-data-updates.md)。

**Topics**
+ [单独导入用户（控制台）](#importing-users-console)
+ [单独导入用户 (AWS CLI)](#importing-users-cli)
+ [单独导入用户 (AWS SDKs)](#importing-users-sdk)

## 单独导入用户（控制台）
<a name="importing-users-console"></a>

您一次最多可以导入 10 个用户。此过程假定您已创建一个用户数据集。有关创建数据集的信息，请参阅[创建架构和数据集](data-prep-creating-datasets.md)。

**单独导入用户（控制台）**

1. 在[https://console.aws.amazon.com/personalize/家](https://console.aws.amazon.com/personalize/home)中打开 Amazon Personalize 控制台并登录您的账户。

1. 在**数据集组**页面上，选择包含要将用户导入到的用户数据集的数据集组。

1. 在导航窗格中，选择**数据集**。

1. 在**数据集**页面上，选择用户数据集。

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

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

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

## 单独导入用户 (AWS CLI)
<a name="importing-users-cli"></a>

使用 [PutUsers](API_UBS_PutUsers.md) 操作将一个或多个用户添加到您的用户数据集。通过单次 `PutUsers` 调用最多可以导入 10 个用户。此部分假定您已经创建了一个用户数据集。有关创建数据集的信息，请参阅[创建架构和数据集](data-prep-creating-datasets.md)。

通过 AWS 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}}\"}" 
    }]'
```

## 单独导入用户 (AWS SDKs)
<a name="importing-users-sdk"></a>

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

 以下代码显示如何将一个或多个用户添加到您的用户数据集。对于每个属性名称参数，传递架构中的字段名称（采用混合大小写）。例如，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();
```

------