

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データセットインポートジョブを使用してバルクデータを 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 サービスロールにキーを使用するアクセス許可を付与する必要があります。詳細については、「[AWS KMS キーを使用するためのアクセス許可を Amazon Personalize に付与する](granting-personalize-key-access.md)」を参照してください。

Amazon Personalize コンソール、 (AWS CLI)、 AWS Command Line Interface または AWS SDKs を使用して、データセットのインポートジョブを作成できます。以前にデータセットのデータセットインポートジョブを作成したことがある場合は、新しいデータセットインポートジョブを使用して、既存のバルクデータを追加または置き換えることができます。詳細については、「[トレーニング後のデータセット内のデータの更新](updating-datasets.md)」を参照してください。

データセットに既に存在するレコードと同じ ID のアイテム、ユーザー、またはアクションをインポートすると、Amazon Personalize はそれを新しいレコードに置き換えます。まったく同じタイムスタンプとプロパティを持つ 2 つのアイテムインタラクションまたはアクションインタラクションイベントを記録する場合、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 のレコードをすべて新しいレコードに置き換えます。
**注記**  
データセットのインポートジョブでアイテムインタラクションデータセットまたはアクションインタラクションデータセットにデータを追加するには、少なくとも 1,000 件の新しいインタラクションレコードまたはアクションインタラクションレコードが必要です。

## データセットのインポートジョブの作成 (コンソール)
<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 バケット内のフォルダにあり、1 つのデータセットインポートジョブで複数の 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 リソースネーム (ARN) を入力し、トレーニングデータを保存した Amazon S3 バケットへのパスを指定します。パスには次の構文を使用します。

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

   CSV ファイルが Amazon S3 バケット内のフォルダにあり、1 つのデータセットインポートジョブで複数の CSV ファイルをデータセットにアップロードしたい場合、フォルダへのパスを指定できます。Amazon Personalize はフォルダの最初のレベルにあるファイルのみを使用し、サブフォルダのデータは一切使用しません。フォルダ名の後に `/` を付けて次の構文を使用します。

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

   で作成した AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (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 リソースネーム (ARN) に設定して、`dataLocation` をトレーニングデータを保存した Amazon S3 バケットへのパスに設定します。パスには次の構文を使用します。

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

CSV ファイルが Amazon S3 バケット内のフォルダにあり、1 つのデータセットインポートジョブで複数の CSV ファイルをデータセットにアップロードしたい場合、フォルダへのパスを指定できます。Amazon Personalize はフォルダの最初のレベルにあるファイルのみを使用し、サブフォルダのデータは一切使用しません。フォルダ名の後に `/` を付けて次の構文を使用します。

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

には`roleArn`、S3 バケットへのアクセス許可を Amazon Personalize に付与する AWS Identity and Access Management (IAM) ロールを指定します。「[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)を参照してください。