

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 個別匯入項目
<a name="importing-items"></a>

完成[建立結構描述和資料集](data-prep-creating-datasets.md)建立項目資料集後，您可以個別將一或多個新項目匯入資料集。個別匯入項目可讓您在目錄成長時，透過小批次匯入，讓項目資料集保持最新狀態。您一次最多可以匯入 10 個項目。如果您有大量新項目，建議您先大量匯入資料，然後視需要個別匯入項目資料。請參閱 [使用資料集匯入任務將大量資料匯入 Amazon Personalize](bulk-data-import-step.md)。

您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs來匯入項目。如果您匯入的項目與項目資料集中的項目`itemId`相同，Amazon Personalize 會將該項目取代為新項目。

 如需有關 Amazon Personalize 如何更新新記錄篩選條件以及新記錄如何影響建議的資訊，請參閱 [將個別記錄匯入 Amazon Personalize 資料集](incremental-data-updates.md)。

**Topics**
+ [個別匯入項目 （主控台）](#importing-items-console)
+ [個別匯入項目 (AWS CLI)](#importing-items-cli)
+ [個別匯入項目 (AWS SDKs)](#importing-items-cli-sdk)

## 個別匯入項目 （主控台）
<a name="importing-items-console"></a>

您一次最多可以將 10 個項目匯入項目資料集。此程序假設您已建立項目資料集。如需建立資料集的資訊，請參閱 [建立結構描述和資料集](data-prep-creating-datasets.md)。

**個別匯入項目 （主控台）**

1. 在 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)：// 開啟 Amazon Personalize 主控台並登入您的帳戶。

1. 在**資料集群組**頁面上，選擇具有您要匯入項目之項目資料集的資料集群組。

1. 在導覽窗格中，選擇**資料集**。

1. 在**資料集**頁面上，選擇項目資料集。

1. 在資料集詳細資訊頁面的右上角，選擇**修改資料集**，然後選擇**建立記錄**。

1. 在**建立項目記錄 (Create item record) **頁面中，針對**記錄輸入**，以 JSON 格式輸入項目詳細資訊。項目的欄位名稱和值必須符合您在建立項目資料集時所使用的結構描述。Amazon Personalize 提供 JSON 範本，其中包含此結構描述中的欄位名稱和資料類型。

1. 選擇**建立記錄 (s)**。在**回應**中，會列出匯入的結果，並顯示成功或失敗訊息。

## 個別匯入項目 (AWS CLI)
<a name="importing-items-cli"></a>

使用 [PutItems](API_UBS_PutItems.md)操作將一或多個項目新增至您的項目資料集。您最多可以使用單一`PutItems`呼叫匯入 10 個項目。本節假設您已建立項目資料集。如需建立資料集的詳細資訊，請參閱 [建立結構描述和資料集](data-prep-creating-datasets.md)。

使用下列`put-items`命令，透過 新增一或多個項目 AWS CLI。`dataset arn` 將 取代為資料集的 Amazon Resource Name (ARN)，並將 `item Id`取代為項目的 ID。如果您的項目資料集中`itemId`已有相同項目，Amazon Personalize 會將該項目取代為新的項目。

對於 `properties`，針對您的項目資料集中的每個欄位，`propertyName`以駱駝案例結構描述中的欄位名稱取代 。例如，GENRES 為 `genres`，CREATION\_TIMESTAMP 為 creationTimestamp。`item data` 以項目的資料取代 。`CREATION_TIMESTAMP`資料必須是 [Unix epoch 時間格式](interactions-datasets.md#timestamp-data)並以秒為單位。對於分類字串資料，若要包含單一屬性的多個類別，請使用管道 () 分隔每個類別`|`。例如 `\"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}}\"}" 
    }]'
```

## 個別匯入項目 (AWS SDKs)
<a name="importing-items-cli-sdk"></a>

使用 [PutItems](API_UBS_PutItems.md)操作將一或多個項目新增至您的項目資料集。您最多可以使用單一`PutItems`呼叫匯入 10 個項目。如果具有相同的項目`itemId`已存在於您的項目資料集，Amazon Personalize 會將其取代為新的項目。本節假設您已建立項目資料集。如需建立資料集的詳細資訊，請參閱 [建立結構描述和資料集](data-prep-creating-datasets.md)。

 下列程式碼說明如何將一或多個項目新增至您的項目資料集。對於每個屬性名稱參數，請以駱駝案例從您的結構描述傳遞欄位名稱。例如，GENRES 為 `genres`，而 CREATION\_TIMESTAMP 為 `creationTimestamp`。對於每個屬性值參數，傳遞項目的資料。`CREATION_TIMESTAMP`資料必須是 [Unix epoch 時間格式](interactions-datasets.md#timestamp-data)並以秒為單位。

對於分類字串資料，若要包含單一屬性的多個類別，請使用管道 () 分隔每個類別`|`。例如 `"Horror|Action"`。

------
#### [ SDK for Python (Boto3) ]

```
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 ]

```
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;
    }
```

------
#### [ SDK for JavaScript v3 ]

```
import {
  PutItemsCommand,
  PersonalizeEventsClient,
} from "@aws-sdk/client-personalize-events";

const personalizeEventsClient = new PersonalizeEventsClient({
  region: "{{REGION}}",
});

// set the put items parameters
var putItemsParam = {
  datasetArn:
    "{{DATASET ARN}}",
  items: [
    {
      itemId: "{{itemId}}", 
      properties: '{"{{column1Name}}": "{{value}}", "{{column2Name}}": "{{value}}"}',
    },
    {
      itemId: "{{itemId}}",
      properties: '{"{{column1Name}}": "{{value}}", "{{column2Name}}": "{{value}}"}',
    },
  ],
};
export const run = async () => {
  try {
    const response = await personalizeEventsClient.send(
      new PutItemsCommand(putItemsParam)
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------