

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

# スキーマとデータセットの作成
<a name="data-prep-creating-datasets"></a>

[データセットグループを作成](data-prep-ds-group.md)したら、インポートする各タイプのデータの Amazon Personalize スキーマとデータセットを作成する準備が整います。*スキーマ*は、Amazon Personalize にデータの構造を知らせ、Amazon Personalize がデータを解析できるようにします。Amazon Personalize でスキーマを作成するときは、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」で作成した JSON ファイルを使用します。

 *データセット*は、Amazon Personalize でデータをトレーニングするためのコンテナです。異なるデータセットタイプには異なる要件があります。インポートするデータのタイプごとにデータセットを作成します。さまざまなタイプのデータセットとデータの準備方法については、「[Amazon Personalize のトレーニングデータの準備](preparing-training-data.md)」を参照してください。

Amazon Personalize コンソール、 AWS Command Line Interface (AWS CLI)、または AWS SDKs を使用してスキーマとデータセットを作成できます。ドメインデータセットグループでは、アクションやアクションインタラクションデータセットを含むネクストベストアクションリソースを作成することはできません。

**重要**  
 スキーマを作成した後は、スキーマに変更を加えることはできなくなります。ただし、新しい列を追加する場合は、データセットのスキーマを新しいスキーマに置き換えることができます。詳細については、「[データセットのスキーマを置き換えて新しい列を追加する](updating-dataset-schema.md)」を参照してください。

**Topics**
+ [データセットとスキーマの作成 (コンソール)](#data-prep-creating-ds-console)
+ [データセットとスキーマの作成 (AWS CLI)](#data-prep-creating-ds-cli)
+ [データセットとスキーマの作成 (AWS SDKs)](#data-prep-creating-ds-sdk)

## データセットとスキーマの作成 (コンソール)
<a name="data-prep-creating-ds-console"></a>

 これがデータセットグループの最初のデータセットである場合、最初のデータセットタイプはアイテムインタラクションデータセットになります。コンソールでアイテムインタラクションデータセットを作成するには、データセット名を指定してから、[Avro 形式](https://docs.oracle.com/database/nosql-12.1.3.0/GettingStartedGuide/avroschemas.html)の JSON スキーマを指定します。このデータセットグループの最初のデータセットでない場合は、データセットのタイプを選択してから、名前とスキーマを指定します。

Amazon Personalize のデータセットの要件については、「[Amazon Personalize のトレーニングデータの準備](preparing-training-data.md)」を参照してください。「[Amazon Personalize データセットグループの作成](data-prep-ds-group.md)」を完了したばかりで、既にデータセットを作成している場合は、この手順のステップ 4 にスキップしてください。

**データセットとスキーマを作成するには**

1. まだ作成していない場合は、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」の指示に従って、データの概要を示すスキーマ JSON ファイルを作成します。

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) で Amazon Personalize コンソールを開き、アカウントにサインインします。

1.  **[Dataset groups]** (データセットグループ) のページで、[Amazon Personalize データセットグループの作成](data-prep-ds-group.md) で作成したデータセットグループを選択します。

1. **[ステップ 1: [データセットを作成してデータをインポートする]** で **[データセットの作成]** を選択し、作成するデータセットのタイプを選択します。

1. **[Amazon Personalize データセットにデータを直接インポートする]** を選択し、**[次へ]** を選択します。

1. **[Dataset details]** (データセットの詳細) の **[Dataset name]** (データセット名) で、データセットの名前を指定します。

1. **[データセットのスキーマ]** で、**[新しいスキーマを作成する]** または **[既存のスキーマを使用する]** を選択します。

1. 既存のスキーマを使用している場合は、使用する既存のスキーマを選択します。新しいスキーマを作成する場合は、スキーマに名前を付け、データに一致するスキーマ JSON を貼り付けます。このファイルは「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」で作成済みです。

1. **[タグ]** には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けの詳細については、「[Amazon Personalize リソースのタグ付け](tagging-resources.md)」を参照してください。

1. **[Next]** (次へ) を選択し、[Amazon Personalize データセットへのトレーニングデータのインポート](import-data.md) の指示に従ってデータをインポートします。

## データセットとスキーマの作成 (AWS CLI)
<a name="data-prep-creating-ds-cli"></a>

を使用してデータセットとスキーマを作成するには AWS CLI、 `create-schema` コマンド ( [CreateSchema](API_CreateSchema.md) API オペレーションを使用) と `create-dataset` ( [CreateDataset](API_CreateDataset.md) API オペレーションを使用) を使用します。

**スキーマとデータセットを作成するには**

1. まだ作成していない場合は、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」の指示に従って、データの概要を示すスキーマ JSON ファイルを作成します。

1. 次のコマンドを実行して Amazon Personalize でスキーマを作成します。スキーマを作成した後は、スキーマに変更を加えることはできなくなります。`schemaName` をスキーマの名前に、`file://SchemaName.json` を JSON ファイルの場所に、それぞれ置き換えます。次の例は、現在のフォルダに属するファイルを示しています。ドメインデータセットグループ内のデータセットのスキーマを作成する場合は、`domain` パラメータを追加して `ECOMMERCE` または `VIDEO_ON_DEMAND` に設定します。API の詳細については、「[CreateSchema](API_CreateSchema.md)」を参照してください。

   ```
   aws personalize create-schema \
     --name SchemaName \
     --schema file://SchemaName.json
   ```

   次の例に示すように、スキーマの Amazon リソースネーム (ARN) が表示されます。

   ```
   {
     "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/SchemaName"
   }
   ```

1. 次のコマンドを実行して空のデータセットを作成します。[データセットグループの作成 (AWS CLI)](data-prep-ds-group.md#data-prep-creating-ds-group-cli) のデータセットグループの Amazon リソースネーム (ARN) と前の手順のスキーマ ARN を指定します。データセットタイプの値は、`Interactions`、`Users`、`Items`、`Actions`、または `Action_Interactions` です。API の詳細については、「[CreateDataset](API_CreateDataset.md)」を参照してください。

   ```
   aws personalize create-dataset \
     --name Dataset Name \
     --dataset-group-arn Dataset Group ARN \
     --dataset-type Dataset Type \
     --schema-arn Schema Arn
   ```

   次の例に示すように、データセット ARN が表示されます。

   ```
   {
     "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetName/INTERACTIONS"
   }
   ```

1. 後で使用するためにデータセット ARN を記録します。データセットを作成したら、トレーニングデータをインポートする準備が整います。「[Amazon Personalize データセットへのトレーニングデータのインポート](import-data.md)」を参照してください。

## データセットとスキーマの作成 (AWS SDKs)
<a name="data-prep-creating-ds-sdk"></a>

 AWS SDKs を使用してデータセットとスキーマを作成するには、まず [Avro 形式で](https://docs.oracle.com/database/nosql-12.1.3.0/GettingStartedGuide/avroschemas.html)スキーマを定義し、 [CreateSchema](API_CreateSchema.md)オペレーションを使用して Amazon Personalize に追加します。スキーマを作成した後は、スキーマに変更を加えることはできなくなります。その後、[CreateDataset](API_CreateDataset.md) 操作を使用してデータセットを作成します。

**スキーマとデータセットを作成するには**

1. まだ作成していない場合は、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」の指示に従って、データの概要を示すスキーマ JSON ファイルを作成します。

1. 以下のコードを使用して Amazon Personalize でスキーマを作成します。スキーマの名前とスキーマ JSON ファイルのファイルパスを指定します。ドメインデータセットグループ内のデータセットのスキーマを作成する場合は、`domain` パラメータを追加して `ECOMMERCE` または `VIDEO_ON_DEMAND` に設定します。API の詳細については、「[CreateSchema](API_CreateSchema.md)」を参照してください。

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

   ```
   import boto3
   
   personalize = boto3.client('personalize')
   
   with open('schemaFile.json') as f:
       createSchemaResponse = personalize.create_schema(
           name = 'schema name',
           schema = f.read()
       )
   
   schema_arn = createSchemaResponse['schemaArn']
   
   print('Schema ARN:' + schema_arn )
   ```

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

   ```
   public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) {
       
       String schema = null;
       
       try {
           schema = new String(Files.readAllBytes(Paths.get(filePath)));
       } catch (IOException e) {
           System.out.println(e.getMessage());
       }
       
       try {
           CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder()
                   .name(schemaName)
                   .schema(schema)
                   .build();
   
           String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn();    
           System.out.println("Schema arn: " + schemaArn);
   
           return schemaArn;
   
       } catch(PersonalizeException e) {
           System.err.println(e.awsErrorDetails().errorMessage());
           System.exit(1);
       }
       return "";
   }
   ```

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

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateSchemaCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   import fs from "node:fs";
   
   const schemaFilePath = "SCHEMA_PATH";
   let mySchema = "";
   
   try {
     mySchema = fs.readFileSync(schemaFilePath).toString();
   } catch (err) {
     mySchema = "TEST"; // For unit tests.
   }
   // Set the schema parameters.
   export const createSchemaParam = {
     name: "NAME" /* required */,
     schema: mySchema /* required */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateSchemaCommand(createSchemaParam),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

------

   Amazon Personalize は、新しいスキーマの ARN を返します。次のステップで必要になるため、これを記録します。

1. [CreateDataset](API_CreateDataset.md) 操作を使用してデータセットを作成します。以下のコードは、データセットを作成する方法を示しています。データセットグループの Amazon リソースネーム (ARN)、前のステップのスキーマ ARN を指定し、データセットタイプを指定します。データセットタイプの値は、`Interactions`、`Users`、`Items`、`Actions`、または `Action_Interactions` です。データセットのタイプ別の詳細については、「[Amazon Personalize のトレーニングデータの準備](preparing-training-data.md)」を参照してください。

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

   ```
   import boto3
   
   personalize = boto3.client('personalize')
   
   response = personalize.create_dataset(
       name = 'dataset_name',
       schemaArn = 'schema_arn',
       datasetGroupArn = 'dataset_group_arn',
       datasetType = 'dataset_type'
   )
   
   print ('Dataset Arn: ' + response['datasetArn'])
   ```

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

   ```
   public static String createDataset(PersonalizeClient personalizeClient, 
                                       String datasetName, 
                                       String datasetGroupArn, 
                                       String datasetType, 
                                       String schemaArn) {
       try {
           CreateDatasetRequest request = CreateDatasetRequest.builder()
                   .name(datasetName)
                   .datasetGroupArn(datasetGroupArn)
                   .datasetType(datasetType)
                   .schemaArn(schemaArn).build();
       
           String datasetArn = personalizeClient.createDataset(request).datasetArn();
           System.out.println("Dataset " + datasetName + " created. Dataset ARN: " + datasetArn);
           
           return datasetArn;
           
       } catch(PersonalizeException e) {
           System.err.println(e.awsErrorDetails().errorMessage());
           System.exit(1);
       }
       return "";
   }
   ```

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

   ```
   // Get service clients module and commands using ES6 syntax.
   import { CreateDatasetCommand } from "@aws-sdk/client-personalize";
   import { personalizeClient } from "./libs/personalizeClients.js";
   
   // Or, create the client here.
   // const personalizeClient = new PersonalizeClient({ region: "REGION"});
   
   // Set the dataset's parameters.
   export const createDatasetParam = {
     datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
     datasetType: "DATASET_TYPE" /* required */,
     name: "NAME" /* required */,
     schemaArn: "SCHEMA_ARN" /* required */,
   };
   
   export const run = async () => {
     try {
       const response = await personalizeClient.send(
         new CreateDatasetCommand(createDatasetParam),
       );
       console.log("Success", response);
       return response; // For unit tests.
     } catch (err) {
       console.log("Error", err);
     }
   };
   run();
   ```

------

   データセットを作成したら、トレーニングデータをインポートする準備が整います。「[Amazon Personalize データセットへのトレーニングデータのインポート](import-data.md)」を参照してください。