

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

# 使用資料集匯入任務將大量資料匯入 Amazon Personalize
<a name="bulk-data-import-step"></a>

格式化輸入資料 （請參閱[準備 Amazon Personalize 的訓練資料](preparing-training-data.md)) 並完成 之後[建立結構描述和資料集](data-prep-creating-datasets.md)，您就可以使用資料集匯入任務匯入大量資料。*資料集匯入任務*是一種大量匯入工具，可將來自 Amazon S3 的資料填入資料集。

 若要從 Amazon S3 匯入資料，您的 CSV 檔案必須位於 Amazon S3 儲存貯體中，而且您必須授予 Amazon Personalize 存取 Amazon S3 資源的許可：
+ 如需將檔案上傳至 Amazon S3 的資訊，請參閱《Amazon Simple Storage Service 使用者指南》中的[使用拖放功能上傳檔案和資料夾](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html)。
+ 如需在 Amazon S3 中授予 Amazon Personalize 檔案存取權的詳細資訊，請參閱 [讓 Amazon Personalize 存取 Amazon S3 資源](granting-personalize-s3-access.md)。

   如果您使用 AWS Key Management Service (AWS KMS) 進行加密，則必須授予 Amazon Personalize 和 Amazon Personalize IAM 服務角色許可，才能使用您的金鑰。如需詳細資訊，請參閱[授予 Amazon Personalize 許可以使用您的 AWS KMS 金鑰](granting-personalize-key-access.md)。

您可以使用 Amazon Personalize 主控台 AWS Command Line Interface (AWS CLI) 或 AWS SDKs建立資料集匯入任務。如果您先前已建立資料集的資料集匯入任務，您可以使用新的資料集匯入任務來新增或取代現有的大量資料。如需詳細資訊，請參閱[訓練後更新資料集中的資料](updating-datasets.md)。

如果您匯入的項目、使用者或動作與資料集中已存在的記錄 ID 相同，Amazon Personalize 會將其取代為新記錄。如果您使用完全相同的時間戳記和相同的屬性記錄兩個項目互動或動作互動事件，Amazon Personalize 只會保留其中一個事件。

 匯入資料後，您就可以建立網域推薦者 （適用於網域資料集群組） 或自訂資源 （適用於自訂資料集群組），以訓練資料上的模型。您可以使用這些資源來產生建議。如需詳細資訊，請參閱 [Amazon Personalize 中的網域建議程式](creating-recommenders.md) 或 [用於訓練和部署 Amazon Personalize 模型的自訂資源](create-custom-resources.md) 。



**Topics**
+ [

## 匯入模式
](#bulk-import-modes)
+ [

## 建立資料集匯入任務 （主控台）
](#bulk-data-import-console)
+ [

## 建立資料集匯入任務 (AWS CLI)
](#bulk-data-import-cli)
+ [

## 建立資料集匯入任務AWS SDKs)
](#python-import-ex)

## 匯入模式
<a name="bulk-import-modes"></a>

如果您已為資料集建立匯入任務，您可以設定 Amazon Personalize 如何新增您的新記錄。若要這樣做，請為資料集匯入任務指定匯入模式。如果您尚未匯入大量記錄，則 主控台中無法使用**匯入模式**欄位，您只能在 `CreateDatasetImportJob` API 操作`FULL`中指定 。預設為完全取代。
+ 若要覆寫資料集中的所有現有大量資料，請在 Amazon Personalize 主控台中選擇**取代現有資料**，或在 [CreateDatasetImportJob](API_CreateDatasetImportJob.md) API 操作`FULL`中指定 。這不會取代您個別匯入的資料，包括即時記錄的事件。
+ 若要將記錄附加至資料集中的現有資料，請選擇**新增至現有資料**或在 `CreateDatasetImportJob` API 操作`INCREMENTAL`中指定 。Amazon Personalize 會將具有相同 ID 的任何記錄取代為新的記錄。
**注意**  
若要使用資料集匯入任務將資料附加至項目互動資料集或動作互動資料集，您必須至少有 1000 個新項目互動或動作互動記錄。

## 建立資料集匯入任務 （主控台）
<a name="bulk-data-import-console"></a>

**重要**  
根據預設，資料集匯入任務會取代您大量匯入的資料集中的任何現有資料。如果您已匯入大量資料，您可以透過變更任務的[匯入模式](#bulk-import-modes)來附加資料。

 若要使用 Amazon Personalize 主控台將大量記錄匯入資料集，請使用名稱、IAM 服務角色和資料的位置來建立資料集匯入任務。

如果您剛在 中建立資料集[建立結構描述和資料集](data-prep-creating-datasets.md)，請跳至步驟 5。

**匯入大量記錄 （主控台）**

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

1.  在**資料集群組**頁面上，選擇您的資料集群組。資料集群組**概觀**隨即顯示。

1. 在導覽窗格中，選擇**資料集**，然後選擇您要匯入大量資料的資料集。

1. 在**資料集匯入任務**中，選擇**建立資料集匯入任務**。

1. 如果這是您的第一個資料集匯入任務，請針對**資料匯入來源**選擇**從 S3 匯入資料**。

1. 針對**資料集匯入任務名稱**，指定匯入任務的名稱。

1. 如果您已匯入大量資料，對於**匯入模式**，請選擇如何更新資料集。選擇**取代現有資料**或**新增至現有資料**。資料。如果這是您資料集的第一個任務，則不會顯示此選項。如需詳細資訊，請參閱[訓練後更新資料集中的資料](updating-datasets.md)。

1. 在**資料匯入來源**中，針對**資料位置**，指定資料檔案存放於 Amazon S3 的位置。使用下列語法：

   **s3:/amzn-s3-demo-bucket/<folder path>/<CSV filename>**

   如果您的 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中，而且您想要將多個 CSV 檔案上傳到具有一個資料集匯入任務的資料集，您可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層中的檔案，不會在任何子資料夾中使用任何資料。使用下列語法搭配 資料夾名稱`/`後面的 ：

   **s3:/amzn-s3-demo-bucket/<folder path>/**

1. 在 **IAM 角色**中，選擇建立新的角色或使用現有的角色。如果您已完成先決條件，請選擇**使用現有的服務角色**，並指定您在 中建立的角色[為 Amazon Personalize 建立 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)。

1. 如果您建立了指標屬性，並想要將與此任務相關的指標發佈至 Amazon S3，請在將**事件指標發佈至 S3** 中選擇**為此匯入任務發佈指標**。

   如果您尚未建立指標，並想要發佈此任務的指標，請選擇**建立指標屬性**，在不同的索引標籤上建立新的指標屬性。建立指標屬性之後，您可以返回此畫面並完成建立匯入任務。

   如需指標屬性的詳細資訊，請參閱 [測量 Amazon Personalize 建議的影響](measuring-recommendation-impact.md)。

1. 對於**標籤**，選擇性地新增任何標籤。如需標記 Amazon Personalize 資源的詳細資訊，請參閱 [標記 Amazon Personalize 資源](tagging-resources.md)。

1. 選擇 **Start import (開始匯入)**。開始執行資料匯入任務並顯示 **Dashboard Overview (儀表板概觀)** 頁面。當狀態顯示為 ACTIVE 時，即表示資料集匯入完成。將資料匯入 Amazon Personalize 資料集後，您可以[分析資料](analyzing-data.md)、[將其匯出至 Amazon S3 儲存貯體](export-data.md)、[更新資料](updating-datasets.md)，[或刪除](delete-dataset.md)資料集。

    匯入資料後，您就可以建立網域推薦者 （適用於網域資料集群組） 或自訂資源 （適用於自訂資料集群組），以訓練資料上的模型。您可以使用這些資源來產生建議。如需詳細資訊，請參閱 [Amazon Personalize 中的網域建議程式](creating-recommenders.md) 或 [用於訓練和部署 Amazon Personalize 模型的自訂資源](create-custom-resources.md) 。

## 建立資料集匯入任務 (AWS CLI)
<a name="bulk-data-import-cli"></a>

**重要**  
根據預設，資料集匯入任務會取代您大量匯入的資料集中的任何現有資料。如果您已匯入大量資料，您可以透過變更任務的[匯入模式](#bulk-import-modes)來附加資料。

 若要使用 匯入大量記錄 AWS CLI，請使用 [CreateDatasetImportJob](API_CreateDatasetImportJob.md)命令建立資料集匯入任務。如果您先前已建立資料集的資料集匯入任務，您可以使用匯入模式參數來指定如何新增資料。如需更新現有大量資料的詳細資訊，請參閱 [訓練後更新資料集中的資料](updating-datasets.md)。

**匯入大量記錄 (AWS CLI)**

1. 執行以下命令來建立資料集匯入任務。提供資料集的 Amazon Resource Name (ARN)，並指定您存放訓練資料的 Amazon S3 儲存貯體路徑。對路徑使用下列語法：

   **s3:/amzn-s3-demo-bucket/<folder path>/<CSV filename>**

   如果您的 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中，而且您想要將多個 CSV 檔案上傳到具有一個資料集匯入任務的資料集，您可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層中的檔案，不會在任何子資料夾中使用任何資料。使用下列語法搭配 資料夾名稱`/`後面的 ：

   **s3:/amzn-s3-demo-bucket/<folder path>/**

   提供您在 中建立的 AWS Identity and Access Management (IAM) 角色 Amazon Resource Name (ARN)[為 Amazon Personalize 建立 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)。預設的 `import-mode` 是 `FULL`。如需更多資訊，請參閱[訓練後更新資料集中的資料](updating-datasets.md)。如需該操作的詳細資訊，請參閱 [CreateDatasetImportJob](API_CreateDatasetImportJob.md)。

   ```
   aws personalize create-dataset-import-job \
   --job-name dataset import job name \
   --dataset-arn dataset arn \
   --data-source dataLocation=s3://amzn-s3-demo-bucket/filename \
   --role-arn roleArn \
   --import-mode FULL
   ```

   資料集匯入任務 ARN 隨即顯示，如下列範例所示。

   ```
   {
     "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/DatasetImportJobName"
   }
   ```

1. 使用 `describe-dataset-import-job` 命令來檢查狀態。提供在前一個步驟中傳回的資料集匯入任務 ARN。如需該操作的詳細資訊，請參閱 [DescribeDatasetImportJob](API_DescribeDatasetImportJob.md)。

   ```
   aws personalize describe-dataset-import-job \
   --dataset-import-job-arn dataset import job arn
   ```

   這時會顯示資料集匯入任務的屬性，包括其狀態。一開始， `status`會顯示為 CREATE PENDING。

   ```
   {
     "datasetImportJob": {
         "jobName": "Dataset Import job name",
         "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/DatasetImportJobArn",
         "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetGroupName/INTERACTIONS",
         "dataSource": {
             "dataLocation": "s3://amzn-s3-demo-bucket/ratings.csv"
         },
         "importMode": "FULL",
         "roleArn": "role-arn",
         "status": "CREATE PENDING",
         "creationDateTime": 1542392161.837,
         "lastUpdatedDateTime": 1542393013.377
     }
   }
   ```

   當狀態顯示為 ACTIVE 時，即表示資料集匯入完成。將資料匯入 Amazon Personalize 資料集後，您可以[分析資料](analyzing-data.md)、[將其匯出至 Amazon S3 儲存貯體](export-data.md)、[更新資料](updating-datasets.md)，[或刪除](delete-dataset.md)資料集。

    匯入資料後，您就可以建立網域推薦者 （適用於網域資料集群組） 或自訂資源 （適用於自訂資料集群組），以訓練資料上的模型。您可以使用這些資源來產生建議。如需詳細資訊，請參閱 [Amazon Personalize 中的網域建議程式](creating-recommenders.md) 或 [用於訓練和部署 Amazon Personalize 模型的自訂資源](create-custom-resources.md) 。

## 建立資料集匯入任務AWS SDKs)
<a name="python-import-ex"></a>

**重要**  
根據預設，資料集匯入任務會取代您大量匯入的資料集中的任何現有資料。如果您已匯入大量資料，您可以透過變更任務的[匯入模式](#bulk-import-modes)來附加資料。

若要匯入資料，請使用 [CreateDatasetImportJob](API_CreateDatasetImportJob.md)操作建立資料集匯入任務。下列程式碼說明如何建立資料集匯入任務。

提供任務名稱，設定資料集的 `datasetArn` Amazon Resource Name (ARN)，並將 `dataLocation` 設定為您存放訓練資料的 Amazon S3 儲存貯體路徑。對路徑使用下列語法：

**s3:/amzn-s3-demo-bucket/<folder path>/<CSV filename>.csv**

如果您的 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中，而且您想要將多個 CSV 檔案上傳到具有一個資料集匯入任務的資料集，您可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層中的檔案，不會在任何子資料夾中使用任何資料。使用下列語法搭配 資料夾名稱`/`後面的 ：

**s3:/amzn-s3-demo-bucket/<folder path>/**

針對 `roleArn`，指定 AWS Identity and Access Management (IAM) 角色，授予 Amazon Personalize 存取 S3 儲存貯體的許可。請參閱 [為 Amazon Personalize 建立 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)。預設的 `importMode` 是 `FULL`。這會取代資料集中的所有大量資料。若要附加資料，請將其設定為 `INCREMENTAL`。如需更新現有大量資料的詳細資訊，請參閱 [訓練後更新資料集中的資料](updating-datasets.md)。

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

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_dataset_import_job(
    jobName = 'YourImportJob',
    datasetArn = 'dataset_arn',
    dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/filename.csv'},
    roleArn = 'role_arn',
    importMode = 'FULL'
)

dsij_arn = response['datasetImportJobArn']

print ('Dataset Import Job arn: ' + dsij_arn)

description = personalize.describe_dataset_import_job(
    datasetImportJobArn = dsij_arn)['datasetImportJob']

print('Name: ' + description['jobName'])
print('ARN: ' + description['datasetImportJobArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

```
public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient,
                                                      String jobName,
                                                      String datasetArn,
                                                      String s3BucketPath,
                                                      String roleArn,
                                                      ImportMode importMode) {

  long waitInMilliseconds = 60 * 1000;
  String status;
  String datasetImportJobArn;
  
  try {
      DataSource importDataSource = DataSource.builder()
              .dataLocation(s3BucketPath)
              .build();
      
      CreateDatasetImportJobRequest createDatasetImportJobRequest = CreateDatasetImportJobRequest.builder()
              .datasetArn(datasetArn)
              .dataSource(importDataSource)
              .jobName(jobName)
              .roleArn(roleArn)
              .importMode(importMode)
              .build();
  
      datasetImportJobArn = personalizeClient.createDatasetImportJob(createDatasetImportJobRequest)
              .datasetImportJobArn();
      
      DescribeDatasetImportJobRequest describeDatasetImportJobRequest = DescribeDatasetImportJobRequest.builder()
              .datasetImportJobArn(datasetImportJobArn)
              .build();
  
      long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;
  
      while (Instant.now().getEpochSecond() < maxTime) {
  
          DatasetImportJob datasetImportJob = personalizeClient
                  .describeDatasetImportJob(describeDatasetImportJobRequest)
                  .datasetImportJob();
  
          status = datasetImportJob.status();
          System.out.println("Dataset import job status: " + status);
  
          if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) {
              break;
          }
          try {
              Thread.sleep(waitInMilliseconds);
          } catch (InterruptedException e) {
              System.out.println(e.getMessage());
          }
      }
      return datasetImportJobArn;
  
  } catch (PersonalizeException e) {
      System.out.println(e.awsErrorDetails().errorMessage());
  }
  return "";
}
```

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

```
// Get service clients and commands using ES6 syntax.
import { CreateDatasetImportJobCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";

// create personalizeClient
const personalizeClient = new PersonalizeClient({
  region: "REGION"
});

// Set the dataset import job parameters.
export const datasetImportJobParam = {
  datasetArn: 'DATASET_ARN', /* required */
  dataSource: {  
    dataLocation: 's3://amzn-s3-demo-bucket/<folderName>/<CSVfilename>.csv'  /* required */
  },
  jobName: 'NAME',           /* required */
  roleArn: 'ROLE_ARN',       /* required */
  importMode: "FULL"         /* optional, default is FULL */
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(new CreateDatasetImportJobCommand(datasetImportJobParam));
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

來自 [DescribeDatasetImportJob](API_DescribeDatasetImportJob.md)操作的回應包含 操作的狀態。

您必須等到狀態變更為 ACTIVE (作用中)，才能使用資料來訓練模型。

當狀態顯示為 ACTIVE 時，即表示資料集匯入完成。將資料匯入 Amazon Personalize 資料集後，您可以[分析資料](analyzing-data.md)、[將其匯出至 Amazon S3 儲存貯體](export-data.md)、[更新資料](updating-datasets.md)，[或刪除](delete-dataset.md)資料集。

 匯入資料後，您就可以建立網域推薦者 （適用於網域資料集群組） 或自訂資源 （適用於自訂資料集群組），以訓練資料上的模型。您可以使用這些資源來產生建議。如需詳細資訊，請參閱 [Amazon Personalize 中的網域建議程式](creating-recommenders.md) 或 [用於訓練和部署 Amazon Personalize 模型的自訂資源](create-custom-resources.md) 。