

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

# 替换数据集的架构，以便添加新列
<a name="updating-dataset-schema"></a>

 创建物品或用户数据集后，您可以将其架构替换为新的或现有的架构。如果数据结构在您创建数据集后发生了更改，则您可以替换该数据集的架构。例如，您可能会有想让 Amazon Personalize 在训练期间考虑的新物品元数据列。或者，您可能想要添加一列仅在筛选建议时使用的数据。

 替换数据集的架构时，必须保留先前架构中的所有字段，并且不能更改其数据类型或属性。在您替换数据集的架构后，Amazon Personalize 会自动将任何新列排除在任何现有推荐器或自定义解决方案的训练之外。有关更多指南和要求，请参阅[指南和要求](#replace-schema-guidelines)。

 您可以使用 Amazon Personalize 控制台、AWS Command Line Interface (AWS CLI) 和 AWS SDK 替换数据集的架构。

**Topics**
+ [指南和要求](#replace-schema-guidelines)
+ [替换数据集的架构（控制台）](#updating-dataset-schema-console)
+ [替换数据集的架构 (AWS CLI)](#updating-dataset-schema-cli)
+ [替换数据集的架构 (AWS SDK)](#updating-dataset-schema-sdk)

## 指南和要求
<a name="replace-schema-guidelines"></a>

在替换数据集架构之前，确保您了解以下指南和要求：
+ 您无法替换物品交互数据集、操作交互数据集或操作数据集的架构。
+ 您可以向替换架构中添加新字段，但必须保留先前架构中的所有字段。而且，您无法更改其数据类型或属性。例如，如果之前的架构包含分类字符串数据的 `MEMBERSHIP_STATUS` 字段，则您使用的新架构必须包含具有这些属性和数据类型的 `MEMBERSHIP_STATUS` 字段。
+ 如果当前架构有要重命名的字段，或者您要更改其数据类型或属性，则您可以添加一个具有新名称和修改类型或属性的新字段。然后，在训练中加入新字段，排除旧字段。任何新字段都必须支持 `null` 数据。如果旧字段不支持空数据，则在导入数据时，您可以使用占位符数据来确保您的导入与架构相匹配。有关配置推荐器使用的列的信息，请参阅[更新推荐器](updating-recommender.md)。有关配置解决方案使用的列的信息，请参阅[配置训练时使用的列](custom-config-columns.md)。
+ 任何新字段都必须支持 `null` 数据。有关向字段添加空类型的信息，请参阅[架构数据类型](how-it-works-dataset-schema.md#personalize-datatypes)。
+ 在您替换数据集的架构后，Amazon Personalize 会自动将任何新列排除在任何现有推荐器或自定义解决方案的训练之外。使用修改后的数据集涉及以下操作：
  + 要在训练中使用任何新列，请导入与新架构一致的数据。然后，更新所有推荐器以使用任何新列，或者创建新的自定义解决方案并配置训练时使用的列。

    有关更新推荐器使用的列的信息，请参阅[更新推荐器](updating-recommender.md)。有关配置解决方案使用的列的信息，请参阅[配置训练时使用的列](custom-config-columns.md)。
  + 要仅在筛选时使用任何列，请导入与新架构一致的数据，创建使用新数据的筛选器，然后将筛选器应用于建议请求。您无需更新任何推荐器，也无需创建或更新任何自定义资源。

## 替换数据集的架构（控制台）
<a name="updating-dataset-schema-console"></a>

要通过 Amazon Personalize 控制台替换数据集的架构，您需选择要修改的数据集，然后选择替换为新架构或使用现有架构。

**替换数据集的架构**

1. 打开 Amazon Personalize 控制台（网址为 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)），并登录您的账户。

1.  在**数据集组**页面，选择您的数据集组。

1. 在导航窗格中，选择**数据集**，然后选择要修改的数据集对应的单选按钮。

1. 选择**操作**，然后选择**替换架构**。

1. 在**架构详细信息**中，选择替换为新架构或以前创建的架构。

1. 指定要使用的新架构。如果您选择了：
   + 替换为新架构，接着为架构命名，并在**架构定义**中对架构 JSON 进行更改。
   + 使用先前创建的架构，然后对于**先前创建的架构**，选择要使用的架构。这时，仅会列出符合条件的架构。有关架构要求的信息，请参阅[指南和要求](#replace-schema-guidelines)。

1. 选择**替换**。当数据集处于活动状态时，您可以开始导入与新架构一致的数据。有关更多信息，请参阅 [将训练数据导入 Amazon Personalize 数据集](import-data.md)。

## 替换数据集的架构 (AWS CLI)
<a name="updating-dataset-schema-cli"></a>

要通过 AWS CLI 替换数据集的架构，请使用 `update-dataset` 命令，指定要更新的数据集的 Amazon 资源名称 (ARN) 和要使用的新架构的 ARN。您无法更新物品交互数据集、操作交互数据集或操作数据集的架构。

 以下代码显示了如何使用 AWS CLI 更新数据集的架构。要将数据集的架构替换为新架构，请先使用 `create-schema` 命令。然后，使用以下代码将当前架构替换为新架构。有关通过 AWS CLI 创建架构的信息，请参阅[创建数据集和架构 (AWS CLI)](data-prep-creating-datasets.md#data-prep-creating-ds-cli)。有关数据集和架构要求的信息，请参阅[为 Amazon Personalize 架构创建架构 JSON 文件](how-it-works-dataset-schema.md)。

```
aws personalize update-dataset \
--dataset-arn Dataset ARN \
--schema-arn New schema ARN
```

 当数据集处于活动状态时，您可以开始导入与新架构一致的数据。有关更多信息，请参阅 [将训练数据导入 Amazon Personalize 数据集](import-data.md)。有关数据集最新更新的信息，您可以使用 [DescribeDataset](API_DescribeDataset.md) 操作。

## 替换数据集的架构 (AWS SDK)
<a name="updating-dataset-schema-sdk"></a>

要通过 AWS SDK 替换数据集的架构，请使用 `UpdateDataset` API 操作。指定要更新的数据集的 Amazon 资源名称 (ARN) 和要使用的新架构。您无法更新物品交互数据集、操作交互数据集或操作数据集的架构。

以下代码演示如何使用 SDK for Python (Boto3) 替换数据集架构。要将数据集的架构替换为新架构，请先使用 [CreateSchema](API_CreateSchema.md) 操作。然后，使用以下代码将当前架构替换为新架构。有关使用 AWS SDK 创建架构的信息，请参阅[创建数据集和架构 (AWS SDKs)](data-prep-creating-datasets.md#data-prep-creating-ds-sdk)。有关数据集和架构要求的信息，请参阅[为 Amazon Personalize 架构创建架构 JSON 文件](how-it-works-dataset-schema.md)。

```
import boto3

personalize = boto3.client('personalize')

update_dataset_response = personalize.update_dataset(
    datasetArn = 'dataset_arn',
    schemaArn = 'new_schema_arn'
)

print(update_dataset_response)
```

 当数据集处于活动状态时，您可以开始导入与新架构一致的数据。有关更多信息，请参阅 [将训练数据导入 Amazon Personalize 数据集](import-data.md)。有关数据集最新更新的信息，您可以使用 [DescribeDataset](API_DescribeDataset.md) 操作。