

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

# 嵌套类型
<a name="s_Nested-data-type"></a>

AWS Clean Rooms 支持涉及嵌套数据类型的查询，特别是 AWS Glue STRUCT、ARRAY 和 MAP 列类型。只有自定义分析规则支持嵌套数据类型。

值得注意的是，嵌套数据类型并不符合 SQL 数据库关系数据模型严格的表格结构。

嵌套数据类型包含引用数据中不同实体的标签。它们可以包含复杂的值，如数组、嵌套结构和其他与序列化格式（如 JSON）相关联的复杂结构。嵌套数据类型支持单个嵌套数据类型字段或对象最多 1 MB 的数据。

**Topics**
+ [数组类型](array_type.md)
+ [地图类型](map_type.md)
+ [结构类型](struct_type.md)
+ [嵌套数据类型的示例](s_nested-data-type-examples.md)

# 数组类型
<a name="array_type"></a>

使用 ARRAY 类型来表示包含类型为的元素序列的值`elementType`。

```
array(elementType, containsNull)
```

用于`containsNull`指示 ARRAY 类型中的元素是否可以有`null`值。

# 地图类型
<a name="map_type"></a>

使用 MAP 类型来表示包含一组键值对的值。

```
map(keyType, valueType, valueContainsNull)
```

`keyType`: 密钥的数据类型 

`valueType`: 值的数据类型

密钥不允许有`null`值。用于`valueContainsNull`指示 MAP 类型值的值是否可以有`null`值。

# 结构类型
<a name="struct_type"></a>

使用 STRUCT 类型以一系列由 StructFields （字段）描述的结构来表示值。

```
struct(name, dataType, nullable)
```

StructField（名称，dataType，可为空）：表示 a 中的一个字段。 StructType

`dataType`: 数据类型 a 字段

`name`: 字段的名称

`nullable`用于指示这些字段的值是否可以有`null`值。

# 嵌套数据类型的示例
<a name="s_nested-data-type-examples"></a>

对于 `struct<given:varchar, family:varchar>` 类型，有两个属性名称：`given` 和 `family`，每个名称对应一个 `varchar` 值。

对于 `array<varchar>` 类型，数组指定为 `varchar` 的列表。

`array<struct<shipdate:timestamp, price:double>>` 类型是指具有 `struct<shipdate:timestamp, price:double>` 类型的元素列表。

`map` 数据类型的行为类似于 `structs` 的 `array`，其中数组中每个元素的属性名称用 `key` 表示并映射到 `value`。

**Example**  
例如，`map<varchar(20), varchar(20)>` 类型被视为 `array<struct<key:varchar(20), value:varchar(20)>>`，其中 `key` 和 `value` 指的是底层数据中的映射的属性。  
有关如何 AWS Clean Rooms 启用对数组和结构的导航的信息，请参见[导航](query-nested-data.md#navigation)。  
有关如何通过使用查询的 FROM 子句浏览数组来 AWS Clean Rooms 启用对数组的迭代的信息，请参见[取消嵌套查询](query-nested-data.md#unnesting-queries)。