

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

# 为 Amazon Personalize 架构创建架构 JSON 文件
<a name="how-it-works-dataset-schema"></a>

 [准备好数据](preparing-training-data.md)后，就可以开始为要导入的每种数据类型创建架构 JSON 文件。这些文件概述了数据的结构和内容，包括列名及其数据类型。

 在 [创建架构和数据集](data-prep-creating-datasets.md) 中创建 Amazon Personalize 架构时，使用架构 JSON 文件。在 Amazon Personalize 中，*架构* 是一种资源，它让 Amazon Personalize 可以在您将数据导入数据集时对其进行解析。您可以为要使用的每个数据集创建一个架构。

 对于自定义资源，每个数据集都有特定的架构要求。对于域数据集组，您选择的域将决定您的数据集和架构要求。每个域都有每种数据集类型的默认架构。在创建数据集时，可以使用现有域架构，也可以通过修改现有默认架构来创建新的域架构。使用默认架构作为指南，确定要为域导入哪些数据。

 以下各节介绍了为每种数据集类型创建架构 JSON 文件的自定义要求和域要求。

**Topics**
+ [架构格式设置要求](#general-schema-requirements)
+ [VIDEO\_ON\_DEMAND 数据集和架构](VIDEO-ON-DEMAND-datasets-and-schemas.md)
+ [ECOMMERCE 数据集和架构](ECOMMERCE-datasets-and-schemas.md)
+ [自定义数据集和架构](custom-datasets-and-schemas.md)

## 架构格式设置要求
<a name="general-schema-requirements"></a>

为域数据集组或自定义数据集组中的数据集创建架构时，您必须遵循以下准则：
+  您必须以 [Avro 格式](https://docs.oracle.com/database/nosql-12.1.3.0/GettingStartedGuide/avroschemas.html)定义架构。有关我们支持的 Avro 数据类型的信息，请参阅[架构数据类型](#personalize-datatypes)。
+  架构具有名称键，其值必须与数据集类型相匹配。
+ 架构字段可以采用任何顺序显示，但它们必须与 CSV 文件中对应列标题的顺序匹配。
+  架构必须是没有嵌套结构的平面 JSON 文件。例如，一个字段不能是多个子字段的父字段。
+ Amazon Personalize 架构不支持复杂类型，例如数组和映射。
+  架构字段必须具有唯一的字母数字名称。例如，您不能同时添加 `GENRES_FIELD_1` 字段和 `GENRESFIELD1` 字段。
+ 您必须定义必填字段作为其所需的数据类型。保留的分类字符串字段的 `categorical` 属性必须设置为 `true`，而保留的字符串字段不能是分类字段。关键字不能出现在数据中。
+ 如果您添加自己的类型为 `string` 的元数据字段，并且您希望 Amazon Personalize 在训练时使用它，则该字段必须包含 `categorical` 属性或 `textual` 属性（只有物品架构支持带有文本属性的字段）。
+ Amazon Personalize 在训练或筛选建议时不使用 `boolean` 类型数据。要让 Amazon Personalize 在训练或筛选时使用布尔数据，请使用类型为*字符串* 的字段，并在数据中使用值 `"True"` 和 `"False"`。或者，您可以使用类型 *int* 或 *long* 以及值 `0` 和 `1`。
+  文本字段的类型必须为 `string`，且必须将 `textual` 属性设置为 `true`。有关非结构化文本数据的更多信息，请参阅[非结构化文本元数据](items-datasets.md#text-data)。

 根据域和数据集类型，域数据集组数据集还有其他要求。自定义数据集组数据集也有其他要求，具体取决于类型。

### 架构数据类型
<a name="personalize-datatypes"></a>

Amazon Personalize 架构支持以下 Avro 类型的字段：
+ 浮点数
+ double
+ 整数
+ 长整数
+ 字符串
+ 布尔值
+ null

 一些必填字段和保留字段支持空数据。通过向字段添加 `null` 类型，您可以使用不完美的数据（例如，空值的元数据）来生成建议。有关哪些字段支持空数据的信息，请参阅域的架构要求主题：[VIDEO\_ON\_DEMAND 数据集和架构](VIDEO-ON-DEMAND-datasets-and-schemas.md)、[ECOMMERCE 数据集和架构](ECOMMERCE-datasets-and-schemas.md) 或 [自定义数据集和架构](custom-datasets-and-schemas.md)。以下示例说明了如何为 GENDER 字段添加空类型。

```
{
  "name": "GENDER",
  "type": [
    "null",
    "string"
  ],
  "categorical": true
}
```